Compress video — in your browser
Drop in an .mp4, .mov, .mkv, .webm or .avi. Pick a quality level. Get a smaller file. Your video never uploads.
drop a video here
or click to choose — MP4, MOV, MKV, WebM, AVI, FLV up to ~2 GB
How compression works here
ShrinkVideo runs FFmpeg compiled to WebAssembly inside your browser. When you click Compress, the tool re-encodes your video using H.264 (or VP9 if you pick WebM) at the quality level you chose. The result is a smaller file with the same visible content.
Quality presets, explained
- High (CRF 18): visually lossless. Good when you only need to change the container or fix a corrupt header. Roughly 60-80% of the original size.
- Good (CRF 23): the FFmpeg default. Almost no visible difference; usually 30-50% of the original.
- Medium (CRF 26): noticeable softness on fine detail, but fine for most viewing. About 20-35%.
- Small (CRF 28): visibly compressed on motion-heavy scenes, but the file is now 12-25% of the original. Good for email attachments and Discord uploads.
- Tiny (CRF 32): clearly low quality. Only use when you need the smallest possible file — preview clips, slow connections.
How fast is it?
FFmpeg-WASM runs about 10–20× slower than native FFmpeg. A 5-minute 1080p video typically takes 4–6 minutes to compress on a modern laptop. Phones are slower. We're working on a WebCodecs fast-path that will make most common conversions near-instant.
File size limits
Your browser caps WebAssembly memory at roughly 2 GB. Videos up to about 1 GB work reliably; bigger files may run out of memory mid-encode. For multi-gigabyte 4K source files, use desktop FFmpeg.
FAQ
Does the file get uploaded anywhere?
No. Open this page, turn off your wifi, then try a file — it still works. That's the test.
What output codec is used?
By default H.264 in an MP4 container. You can also pick VP9 in WebM, which produces smaller files at the same quality but plays in fewer apps.
Why is it slow on my phone?
FFmpeg-WASM uses your CPU, not hardware video encoders. Phones have less CPU. There's no upload to wait on, but the math has to happen somewhere.
Can I cancel mid-encode?
Yes — the Cancel button terminates the worker immediately. You'll need to wait a few seconds the next time you start, while FFmpeg reloads.