UtilityKit

500+ fast, free tools. Most run in your browser only; Image & PDF tools upload files to the backend when you run them.

Video Compressor

Reduce MP4, WebM and MOV file size with adjustable H.264 CRF compression — runs entirely in your browser.

About Video Compressor

Video Compressor lets you shrink MP4, WebM or MOV videos to a smaller size without uploading anything. The tool runs ffmpeg.wasm — the full FFmpeg toolkit compiled to WebAssembly — directly in your browser tab, so the original file never leaves your device. You pick a CRF (Constant Rate Factor) between 18 (near-lossless, larger file) and 32 (strong compression, smaller file). The default of 23 hits a balance most users like for social media uploads, email attachments, or trimming hosting costs. A preset selector (ultrafast → slow) lets you trade encoding speed for additional file size savings.

Why use Video Compressor

  • 100% private — your video never leaves your device, no upload to any server
  • H.264 CRF is the industry-standard compression mode used by professional encoders
  • No file size limits imposed by server quotas or upload caps
  • Works offline after the first ffmpeg.wasm download
  • No watermarks, no signup, completely free
  • Outputs MP4 with +faststart so it plays as soon as it downloads

How to use Video Compressor

  1. Click the upload area or drag your MP4, WebM or MOV onto it.
  2. Use the inline preview to confirm the file loaded correctly.
  3. Adjust the CRF slider — start at 23 and lower it for higher quality, raise it for smaller files.
  4. Pick a preset — medium is a sensible default; slow squeezes a bit more compression at the cost of time.
  5. Click 'Compress Video' and wait for ffmpeg.wasm to encode locally.
  6. Preview the compressed result and review the size reduction percentage.
  7. Click Download to save the compressed MP4 to your device.

When to use Video Compressor

  • Shrinking a video for email or chat attachments where size limits apply
  • Reducing storage size for archives of screen recordings or webinars
  • Compressing 4K phone footage before uploading to slow connections
  • Preparing videos for social media platforms with file size caps
  • Cutting hosting bandwidth costs for tutorial or product demo clips
  • Making large WebRTC recordings small enough to share with collaborators

Examples

Shrink a 100MB phone clip for email

Input: 100 MB MP4 from iPhone, CRF 26, medium preset

Output: ~25-35 MB MP4, visually nearly identical

Aggressive compression for chat

Input: 200 MB screen recording, CRF 30, fast preset

Output: ~30 MB MP4, slight blockiness on motion but readable text

Near-lossless archive

Input: 500 MB raw export, CRF 18, slow preset

Output: ~250 MB MP4, professionally indistinguishable from source

Tips

  • Start at CRF 23 and only lower it if you can spot quality loss in the preview.
  • If a file is already H.264 and you need a tiny size reduction, raise CRF by 2-3 rather than re-encoding from scratch — quality loss is gentler.
  • The slow preset can shave 5-10% off file size at the same CRF compared to medium — worth it for archives.
  • For talking-head webinar content, CRF 26-28 is often indistinguishable from 23 and meaningfully smaller.
  • Keep your tab focused while compressing — background tabs are throttled and finish slower.
  • After the first run ffmpeg.wasm is cached in IndexedDB, so subsequent compressions start instantly even offline.

Frequently Asked Questions

Does my video leave my device?
No. Compression runs 100% locally in your browser using ffmpeg.wasm — your file is never uploaded to any server.
Why does it require Chrome / Edge?
ffmpeg.wasm needs SharedArrayBuffer for multi-threaded WebAssembly. SharedArrayBuffer is only enabled when the page sends COOP and COEP cross-origin isolation headers. Chrome, Edge, Brave and Arc all support this; Safari is partial; older browsers do not.
What does CRF mean and what value should I pick?
CRF (Constant Rate Factor) controls H.264 quality. 18 is near-lossless, 23 is the FFmpeg default for visually transparent encoding, and 32 produces noticeably smaller but blockier files. Try 23 first; raise to 28 for aggressive compression.
Is there a file size limit?
There is no server-imposed limit, but your browser tab has a memory ceiling of around 2 GB on 64-bit systems. Practically, files up to ~500 MB process reliably; larger files may run out of memory.
Does compression reduce quality?
Yes — H.264 CRF is lossy by definition. Lower CRF values preserve more detail. CRF 18-22 is visually transparent for most content; 23-26 is fine for web; 27+ shows visible compression artifacts.
Why is the first run slower than later runs?
ffmpeg.wasm is roughly 30 MB and downloads on first use, then is cached by your browser. Subsequent compressions start instantly even if you go offline.
What is the 'preset' and how does it differ from CRF?
Preset controls encoder effort. Slower presets find better compression at the same quality. CRF picks the quality target; preset picks how hard the encoder works to hit it.
Does this re-encode audio too?
Yes, audio is re-encoded to AAC at 128 kbps for broad compatibility. Original audio quality is preserved well at this bitrate for speech and most music.

Explore the category

Glossary

CRF
Constant Rate Factor: an H.264 quality target where lower numbers mean higher quality and bigger files. Range 0-51, sane range 18-32.
H.264
The most widely supported video codec on the web, also called AVC. Compatible with practically every device and browser.
Preset
An x264 encoder effort setting — slower presets find smaller files at the same CRF by searching the compression space more thoroughly.
ffmpeg.wasm
A WebAssembly port of FFmpeg that runs the full video toolkit inside the browser tab without any server-side processing.
SharedArrayBuffer
A JavaScript memory primitive required for multi-threaded WebAssembly. Browsers gate it behind cross-origin isolation (COOP/COEP) headers.
moov atom
MP4 metadata block describing the file. +faststart moves it to the front so playback can begin before the whole file downloads.