Video Compressor
Compress MP4, WebM, MOV, MKV, and AVI videos in your browser with H.264 or VP9 — quality, resolution, and speed controls, live progress, no uploads.
How to Use
Shrink a video file in three steps — everything runs locally in your browser tab, so the file never leaves your device.
- Upload your video — Drop an MP4, WebM, MOV, MKV, or AVI file into the drop zone. The tool reads the first bytes to verify the container format, then shows the file size, duration, and resolution when the browser can decode them.
- Choose your settings — Pick a quality preset (High, Medium, or Low), optionally cap the resolution at 1080p, 720p, or 480p, and choose MP4 (H.264 + AAC) or WebM (VP9 + Opus) output. The encoding speed selector trades processing time against compression efficiency. A rough size estimate appears above the button.
- Compress and download — Click "Compress Video". On the first run the tool downloads a ~32MB WebAssembly build of FFmpeg (cached afterward). A live progress bar tracks the encode, then the before/after comparison shows exactly how many bytes you saved.
About This Tool
How In-Browser Video Compression Works
This tool embeds FFmpeg compiled to WebAssembly — the same encoder engine that powers most desktop video software, running inside a browser sandbox. When you compress a file, FFmpeg decodes every frame of the input, then re-encodes it with different settings: a higher compression target, a lower resolution, or both. Because re-encoding is CPU-intensive, the encoding speed selector controls how much effort the codec spends searching for efficient frame representations — "Ultrafast" finishes quickly but produces larger files, while "Slow" squeezes out a few extra percent at the cost of several minutes of processing.
The whole pipeline — demuxing, decoding, scaling, encoding, and muxing — happens in browser memory. That is why very large files can hit memory limits, and why nothing is ever uploaded: there is no server in the loop at all.
Understanding CRF: The Quality Dial
The quality presets map to the encoder's Constant Rate Factor (CRF), the standard way to target a quality level rather than a fixed bitrate. CRF works on a logarithmic scale where lower numbers mean better quality and larger files — each step of about 6 points roughly halves or doubles the bitrate. For H.264, this tool maps High to CRF 18 (visually near-lossless), Medium to CRF 23 (the x264 default, an excellent balance), and Low to CRF 28 (noticeable artifacts on complex scenes, but dramatically smaller). VP9 uses a wider scale, so the WebM equivalents are CRF 24, 32, and 40. Because CRF adapts the bitrate to scene complexity, a talking-head clip and an action sequence at the same preset get very different file sizes — that is normal and expected.
Resolution, Bitrate, and Why Downscaling Helps
A video's bitrate is the number of bits spent per second of playback, and it is the single biggest driver of file size. A 1080p frame contains 2.07 million pixels — four times the 0.52 million in a 480p frame — so capping resolution cuts the raw data the encoder must describe. Halving both dimensions reduces pixels by roughly 75%, which is why dropping a 4K phone clip to 720p often saves more space than any quality setting. This tool scales down only: choosing 1080p for a 720p source leaves the resolution untouched, since upscaling would add size without adding detail. For messaging apps and email, 480p at Low quality is usually the sweet spot; for archiving or sharing, Medium at the original resolution preserves detail while still shrinking most files substantially.
H.264 vs VP9: Choosing an Output Format
MP4 output uses H.264 (AVC) for video and AAC for audio — the most universally supported codec pair in existence, playable on every phone, TV, browser, and operating system since roughly 2010. WebM output uses VP9 video with Opus audio, which typically achieves 20-30% better compression efficiency than H.264 at equivalent quality and is royalty-free, but encodes more slowly and plays natively mainly in browsers and VLC. Choose MP4 when compatibility matters — messaging apps, social platforms, and older devices — and WebM when squeezing out the last bit of size reduction for web delivery. The audio track is always re-encoded: AAC at 128 kbps for MP4, Opus at 96 kbps for WebM, both transparent for typical video soundtracks.
Why Use This Tool
Why Compress Locally?
Online video compressors almost universally upload your file to a server, which is slow for large files, risky for private footage, and usually capped at 100-500MB on free tiers. Local compression has no upload wait — a 1GB file starts processing immediately — no size quota, and zero privacy exposure. It also works offline once the engine is cached, so you can compress footage on a plane or in the field.
Common Use Cases
- Email and chat limits: Shrink a phone video under the 25MB Gmail or Discord free-tier cap with 480p + Low quality.
- Screen recordings: Recordings from tools like our Screen Recorder are lightly compressed — re-encoding at Medium often cuts them by half with no visible difference.
- Web hosting: Convert bulky MOV or MKV files to MP4 for embedding on websites, where H.264 plays everywhere.
- Archive storage: Batch old camera exports down to 720p to reclaim disk space while keeping watchable quality.
- Sharing drone and GoPro footage: High-bitrate action camera files are ideal compression candidates — often 60-80% smaller at Medium quality.
Honest Limitations
Browser-based encoding is slower than native FFmpeg — the WebAssembly build is single-threaded, so expect compression to take roughly 1-4x the video's duration depending on settings. Files already encoded efficiently (streaming-service rips, modern phone clips at default settings) may barely shrink, and the tool tells you when the output is not smaller. There is no two-pass target-size mode: CRF quality targets produce far more consistent results than hitting an exact byte count. For those jobs, a desktop FFmpeg with -b:v two-pass remains the right tool. Related tools include Audio Trimmer, Camera Recorder, and Base64 File Converter.