Video compressor — fit a screen recording under 10 MB for GitHub
Free · no sign-up · runs in your browser
Compress a screen recording or any video to fit GitHub's 10 MB attachment limit, Discord's free upload limit or an email attachment. Choose the size, the resolution and whether to keep the audio; it runs in your browser and nothing is uploaded.
MP4, MOV or WebM — whatever your browser can play. Nothing is uploaded.
Size limit
Untick to remove the sound and give its bytes to the picture.
Runs in real time: a one-minute clip takes about a minute. Keep this tab in front while it works.
Compressed video
Your compressed video will appear here.
The video is played and re-encoded in this page. Nothing is uploaded — check your network tab.
A one-minute screen recording at Retina resolution is easily 50–100 MB, and the places you want to drop it into — a pull request, an issue, a Discord channel — stop at 10 MB. This tool works out the bitrate that fits your clip under the limit, scales it down if you ask, and re-records it in the page with the browser's own encoder. The file stays on your machine the whole time.
How it works
- 01Pick a video. Its duration and resolution are read locally.
- 02Pick the limit you need to get under. The bitrate is the size budget divided by the duration, with headroom kept back because browser encoders treat a bitrate as a target, not a ceiling.
- 03Choose an output height. 1080p is plenty for a screen recording; 720p roughly halves the pixels and is the first thing to try when the result is still too large.
- 04The video plays in a hidden player, each frame is drawn at the output size and the stream is recorded with MediaRecorder as MP4 (H.264) where the browser supports it, and WebM otherwise.
- 05Audio is kept by routing it through Web Audio straight into the recorder, so nothing plays out of your speakers. Untick it to drop the soundtrack and give its share of the budget to the picture.
- 06Recording happens in real time, so a 60-second clip takes about a minute. Keep the tab in front while it runs; browsers slow down hidden tabs.
Use cases
- Attaching a screen recording to a GitHub pull request or issue on a free plan.
- Posting a demo in a Discord or Slack channel without the upload being refused.
- Emailing a bug reproduction under Gmail's 25 MB attachment limit.
- Removing the audio track from a recording before sharing it.
- Converting a .mov from macOS to an .mp4 that plays everywhere.
- Shrinking a video you would rather not upload to an online compressor.
Frequently asked questions
What is GitHub's video size limit?
Videos attached to issues, pull requests and comments can be up to 10 MB on free plans and 100 MB on paid plans. MP4 and MOV both work, and GitHub plays them inline. Both limits are presets here.
How do I compress a video to under 10 MB?
Open it here, keep the GitHub (10 MB) preset, start at 1080p and press compress. If the result is still over, try 720p — it has less than half the pixels — or untick audio. For long clips, trimming is the only real fix: 10 MB holds roughly a minute of clean 1080p screen recording, not ten.
Why does compressing take as long as the video?
The browser's MediaRecorder records a stream as it plays, so it runs at playback speed. The upside is that it uses the hardware encoder built into your device and needs no download; a faster path would mean shipping a 30 MB copy of FFmpeg to the page first.
Why is the result slightly over the limit?
Browser encoders aim for the bitrate rather than guarantee it, and very static or very busy footage drifts either way. The tool aims for 85% of the limit to leave room. If it still lands over, choose a lower resolution or a custom limit a megabyte or two below the real one.
Will the output be MP4 or WebM?
MP4 with H.264 where your browser can record it — current Chrome, Edge and Safari can — because it plays everywhere. Browsers that can only record WebM produce WebM, which GitHub, Discord and Slack also play.
Is my video uploaded?
No. The video is played, drawn and recorded inside this page using browser APIs. There is no server step at any point, which you can confirm in your browser's network tab.
Related reading
- Developer ToolsHow to Add a GIF or Video to a GitHub README and Pull Request (2026)Record your screen, turn it into a GIF or a small MP4, and embed it in a GitHub README, issue or pull request. Size limits, formats and the free browser tools to do it.
- Developer Tools13 Free Developer Tools, No Sign-Up RequiredThirteen free online developer tools that run in your browser with no account and no upload: color, SEO, conversion, and formatting utilities that just work.
More tools
Tailwind CSS color palette generator
Turn one hex code into a full Tailwind color scale — 11 OKLCH-tuned shades from 50 to 950, with contrast ratios, ready to paste into Tailwind v4's @theme block or a v3 config. Free, no sign-up, runs in your browser.
CSS clamp() calculator for fluid typography
Generate a responsive CSS clamp() font size from a minimum and maximum size and the viewport range they should grow across — with the slope and intercept shown, a live preview, and the rendered size at every common screen width. Free, no sign-up.
SVG to JSX converter for React components
Paste an SVG and get a React component back — attributes camelCased, class turned into className, style strings converted to objects, xmlns removed, with optional currentColor, a size prop and TypeScript output. Runs entirely in your browser; nothing is uploaded.
Meta tag generator with Google SERP preview
Fill in a title, description, canonical and Open Graph image and get the complete <head> snippet — with a live Google result preview that measures your title and description in pixels, not characters, so you can see exactly where they will be cut.
Favicon generator — .ico, PNG set and manifest
Turn a PNG or SVG, or just a couple of letters, into the full favicon set: 16, 32, 48, 180, 192 and 512 PNGs, a real multi-size favicon.ico, a web app manifest and the <head> tags. Everything runs in your browser — nothing is uploaded.
JSON-LD schema generator and validator
Build valid JSON-LD structured data for Article, FAQPage, Product, Organization and BreadcrumbList from a form, or paste existing markup to have it pretty-printed and checked for the mistakes that stop a rich result appearing. Free, runs in your browser.
robots.txt generator with validation
Build a robots.txt from user-agent groups, allow and disallow rules, crawl-delay and sitemap URLs — with presets for allowing everything, blocking AI crawlers, or locking down a staging site, and warnings for the mistakes that quietly block your whole site.
UTM link builder and campaign URL generator
Build correctly encoded UTM tracking links from a URL and your source, medium and campaign — with the existing query string and fragment preserved, values properly percent-encoded, and warnings for the capitalisation and spacing that split one campaign across several rows in an analytics report.
Colour contrast checker with WCAG suggestions
Check any two colours against WCAG 2 — normal text, large text and UI components — see the ratio and live samples, and get the nearest passing colour when a pair fails, adjusted in OKLCH so the hue stays yours. Free, runs in your browser.
Image converter — WebP, AVIF, JPEG and PNG
Convert and resize images to WebP, AVIF, JPEG or PNG at the quality you choose, see exactly how many bytes each one saved, and download them one at a time or as a zip. Everything happens in your browser — no image is uploaded.
JSON formatter and validator — free, in your browser
Format, minify and validate JSON in your browser. Broken documents get the exact line and column of the error. Nothing is uploaded, and there is no size limit but your machine.
JSON to TypeScript — generate interfaces from a payload
Paste a JSON payload and get TypeScript interfaces: merged array shapes, optional properties, and real unions instead of any. Runs in your browser — nothing is uploaded.
OG image generator — free 1200×630 social cards
Generate an Open Graph image for any page: type a title, pick a theme, download a 1200×630 PNG. Runs entirely in your browser — no account, no upload, no watermark.
AI text cleaner — remove em dashes and hidden characters
Clean AI-written text in your browser — strip invisible characters, replace em dashes and curly quotes, and flag stock chatbot phrases. Nothing is uploaded.
Remove EXIF data from photos — image metadata remover
Strip EXIF, GPS location and other hidden metadata from JPEG, PNG and WebP images without re-encoding — see what each file carries first. Nothing is uploaded.
App icon generator — iOS, Android and Expo icon sizes in one zip
Turn one 1024px image into every iOS, Android and Expo app icon — an Xcode appiconset, mipmap launcher PNGs and an adaptive icon, zipped in your browser.
Privacy policy generator for apps, with terms of use
Generate a privacy policy and terms of use for your app in Markdown — tick what it collects, from analytics and ads to AI, plus GDPR, CCPA and COPPA sections.
Video to GIF converter — screen recordings for READMEs and PRs
Turn a screen recording or any MP4, MOV or WebM clip into a looping GIF sized for a README, a pull request or a docs page. Pick the start, end, frame rate and width; everything runs in your browser and nothing is uploaded.
Compress an image to a target size — under 100 KB, 500 KB or 1 MB
Compress JPEG, PNG or WebP images to fit under an exact size like 100 KB, 200 KB or 1 MB. The tool searches for the highest quality that fits, shrinks the image only if it has to, and runs entirely in your browser.
App Store screenshot resizer — exact sizes for App Store Connect and Google Play
Resize simulator or device screenshots to the exact pixel sizes App Store Connect and Google Play accept: iPhone 6.9″ (1320 × 2868), iPad 13″ (2064 × 2752), Play phone and tablet sizes and the feature graphic. Crop or pad, batch download as a zip, all in your browser.