Video Compressor
Compress MP4, MOV, WebM, MKV, AVI to smaller MP4 (H.264 + AAC). Three quality presets, optional resolution cap. Runs entirely in your browser.
published
- [FREE]
- [NO_SIGNUP]
- [NO_UPLOAD]
A video compressor that runs in your browser. Drop an MP4, MOV, WebM, MKV, or AVI; pick a quality preset; optionally cap the resolution; download a smaller MP4 (H.264 + AAC). No upload, no account, no watermark. Powered by FFmpeg compiled to WebAssembly.
How to use the video compressor
- Drop your videos. Multiple files at once are fine — each gets its own row with a size estimate updated as you tweak settings.
- Pick a quality preset. Balanced is the default (CRF 23, 128k audio) and is visually transparent for most content. Strong shrink (CRF 28, 96k audio) is the smallest. High quality (CRF 20, 160k audio) is for archive use.
- Optional resolution cap. Original keeps the source dimensions. Caps of 1080p / 720p / 480p shrink the longer side proportionally without upscaling small inputs.
- Click Compress all. The first run downloads the FFmpeg core (~30 MB) once and caches it. Each video processes sequentially with per-percentage progress.
- Grab the output. Per-file download buttons appear under each row, or use Download ZIP to bundle every output into one archive.
Why H.264 MP4 only?
H.264 video in an MP4 container with AAC audio is the most broadly compatible video format on the web. It plays natively in:
- Every modern browser without plugins.
- Apple Photos and AirDrop, iMessage, every iOS app.
- Slack, Discord, Telegram, WhatsApp.
- Every video editor and player from the last 15 years.
VP9/WebM compresses about 20–50% better at the same visual quality, but Apple’s ecosystem and many embedded players still do not support it. Choosing a single, universal output keeps the tool’s promise simple: the file you get plays everywhere.
The three quality presets
Each preset bundles a CRF value (constant rate factor — the H.264 quality knob, where lower means higher quality and bigger file) with a matching audio bitrate.
| Preset | CRF | Audio | Use when |
|---|---|---|---|
| Strong shrink | 28 | 96 kbps | You need the smallest possible file for email / messaging. |
| Balanced | 23 | 128 kbps | Default. Visually transparent for most footage. |
| High quality | 20 | 160 kbps | Archive or further editing — overkill for the web. |
The Advanced disclosure exposes a CRF slider (18–30) for users who want fine control.
Resolution caps for extra savings
Downscaling is often the single biggest savings on modern phone footage. A 4K iPhone clip at 50 Mbps can drop to 1080p at 3 Mbps with almost no perceptual loss. The tool caps the longer side of the video so portrait and landscape inputs both behave correctly:
- 1080p — caps the longer side at 1080 px (1920×1080 landscape, 1080×1920 portrait).
- 720p — caps the longer side at 720 px.
- 480p — caps the longer side at 480 px.
If the source is already smaller than the cap, it stays at its native size — never upscaled.
Pairs well with the trimmer
If a single recording is too large to share, you can compress here and then trim it into chapters at Video Splitter & Joiner — or do it in the other order. Both tools share the same in-browser FFmpeg core, so once it’s loaded by one tool, the other is instant on first use too.
Privacy
Same posture as every other tool on the site. A static HTML page loads its JavaScript, then fetches the FFmpeg WebAssembly core once from a public CDN (cdn.jsdelivr.net) — the core is just the encoder binary, no user data ever leaves the tab. After that one-time download, DevTools → Network shows zero outbound requests on subsequent compressions. There is no upload, no temporary cloud storage, no analytics on file contents, no watermark.
How it compares
| bytefork.tools | clideo.com | freeconvert.com | |
|---|---|---|---|
| Runs in browser only | ✓ | ✗ (uploads to server) | ✗ (uploads to server) |
| Three quality presets | ✓ | varies | varies |
| Resolution downscale | ✓ | ✓ | ✓ |
| Batch (multiple videos) | ✓ | ✗ | partial |
| ZIP download of all outputs | ✓ | ✗ | ✗ |
| Watermark on free tier | ✗ | sometimes | ✗ |
| Sign-in required | ✗ | for larger files | ✗ |
| Ad-free | ✓ | ✗ | ✗ |
Related tools
- Video Splitter & Joiner — split videos into clips or merge multiple videos into one.
- Image Compressor — shrink JPG, PNG, WebP in the browser.
- Image Size Converter — resize images to exact pixel dimensions.
Frequently asked questions
Are my videos uploaded anywhere?
No. Compression runs in your browser via FFmpeg compiled to WebAssembly. After the page loads and the FFmpeg core file downloads once, no further outbound requests fire when you compress. Open DevTools → Network to confirm. Your video bytes never leave the tab.
Why does compression take so long?
Re-encoding video in WebAssembly is CPU-bound and runs at roughly 0.3 to 1 times realtime on a typical laptop. A 5-minute 1080p input may need 5 to 15 minutes. The first compression of the session also downloads the 30 MB FFmpeg core once; every subsequent compression reuses the cached core.
Why is the output always MP4, even if I dropped a WebM?
MP4 with H.264 video and AAC audio is the most universally compatible combination — it plays in iOS Photos, Slack, Discord, every browser, and every video editor. Forcing this one output simplifies sharing. If you specifically need WebM/VP9 output, use a dedicated encoder.
What about HEVC video from my iPhone?
iPhone HEVC `.mov` files decode fine because the bundled libavcodec includes a free HEVC decoder. The output is always H.264 MP4, which plays in places where HEVC does not. If your file fails to decode (rare — usually encrypted DRM or 10-bit HDR), the tool surfaces a clear error rather than failing silently.
How is the size estimate calculated?
It is duration multiplied by the preset implied bitrate (video + audio). Since CRF encoding is quality-based, actual output size depends on the source content — high-motion or grainy footage compresses worse than static scenes. Treat the estimate as a ballpark within ±30%.
Can I keep the original audio without re-encoding it?
Yes. Open Advanced and turn off "Re-encode audio". The tool will stream-copy the source audio when its codec is compatible with the MP4 container (AAC works, Opus does not — it will fall back to re-encode in that case).
Will compression hurt video quality visibly?
CRF 23 (Balanced) is visually transparent for most content — most viewers cannot tell the difference from the source. CRF 28 (Strong shrink) is visibly compressed on motion-heavy clips but acceptable for sharing. CRF 20 (High quality) is overkill for the web; use it only when you need archive-grade fidelity.
How big a file can I compress?
Up to 4 GB per file. That ceiling matches the WebAssembly linear-memory limit per instance — the hard wall every in-browser FFmpeg tool hits. Re-encoding is more memory-hungry than trimming (decoded frames plus output buffer), so files past ~1.5 GB may OOM the tab on machines with limited RAM even though the tool accepts them. The browser, not the tool, decides where it really gives up.
Can I compress multiple videos at once?
Yes. Drop several files; the tool processes them one at a time (FFmpeg already uses multiple CPU threads per video) and the Download ZIP button bundles every output into one archive.