Compress Video
Lower the resolution and quality to shrink the file size — for email, messengers, and social media attachments.
📱 Mobile: we recommend videos at 720p or below and under 1 minute — for larger files, desktop Chrome is more reliable.
Recommended: 26~30 (visually near-identical, 30~60% smaller). 18 = nearly lossless, 35 = aggressive compression.
File-size guide by resolution and CRF
Estimated for a 5-minute 1080p source (~250MB). Actual size depends on video complexity (motion, detail).
| Resolution | CRF | Estimated size | Use case |
|---|---|---|---|
| 1080p | 23 | 180~220MB | Archival / YouTube upload |
| 1080p | 28 | 80~120MB | Web default — visually lossless |
| 720p | 28 | 40~60MB | Plenty for messaging and social |
| 720p | 32 | 20~35MB | Close to email attachment limit (25MB) |
| 480p | 30 | 15~25MB | Messenger / preview clips |
Why is the file bigger than a desktop app at the same CRF?
Even with an identical quality setting (CRF), the final file size depends heavily on how long the encoder is allowed to think. ffmpeg's -preset option controls that effort, ranging from ultrafast to veryslow — slower presets pack the same quality into a smaller file.
This tool encodes with libx264 -preset ultrafast. The fast preset is chosen for speed. Static hosting such as GitHub Pages cannot send the Cross-Origin-Opener-Policy / Cross-Origin-Embedder-Policy headers, so the browser disables SharedArrayBuffer and ffmpeg.wasm can only run single-threaded. With no multithreading, a slow preset could push a 5-minute clip to tens of minutes, so the tool favors a realistic wait time over maximum compression.
So here are realistic expectations. On desktop Chrome, encoding runs at roughly 0.3–1× the clip's duration (a 5-minute clip usually takes 1–3 minutes); mobile is about 2–3× slower. iOS Safari caps memory at around 500MB per tab, so long 1080p videos may stall midway.
The takeaway: it's normal for this tool to shrink less than a dedicated desktop app (e.g. HandBrake) at the same CRF. If you need a smaller file, raising the CRF a notch or two (e.g. 28→30) or dropping the resolution to 720p or below is the most reliable lever in this environment.
Related tools
Why does the first run download ~32MB?
Can I close the page mid-compression?
Why isn't multi-threaded (faster) processing supported?
Cross-Origin-Opener-Policy / Cross-Origin-Embedder-Policy headers, which disables SharedArrayBuffer. That forces single-threaded execution — safe but slower (about 0.3 to 1× the source duration). For faster processing, use desktop and downscale to 720p or lower.
iOS Safari hangs on large videos.
Frequently asked questions
Is my video uploaded to a server?
How long does it take?
Which input formats are supported?
What is CRF and how should I pick a value?
Can it handle large videos?
Is the audio preserved?
References
- ffmpeg.wasm — official site (BSD/LGPL)
- H.264/AVC standard — ISO/IEC 14496-10
- CRF guide — FFmpeg Wiki