Video Compressor
Shrink mp4, webm, and mov videos right in your browser with ffmpeg.wasm. Choose a target preset (web 720p / 1080p, Discord 25 MB, Twitter 512 MB) or set a custom H.264 CRF: your files never leave the device.
Interactive tool
ffmpeg.wasm engine loads on first run (~32 MB)
The engine is cached for the rest of your session. Every transcode runs entirely in your browser: files never leave your device.
Threading: detecting…
Drop a video here
Up to 250 MB / 5 minutes. The file never leaves your browser.
What is the Video Compressor?
A free, in-browser video compressor powered by ffmpeg.wasm. It re-encodes your clip with H.264 at the CRF you pick: yielding a much smaller mp4 that still plays everywhere. Files never leave your device.
How to Use the Video Compressor
- 1Drop a video file (mp4, webm, mkv, mov, avi)
- 2Pick a preset (Web 720p, Web 1080p, Discord 25 MB, Twitter 512 MB) or Custom
- 3Optionally adjust the CRF slider (18 = nearly lossless, 32 = small but lossy)
- 4Click Compress: the engine loads on first run (~32 MB) then is cached
- 5Preview the result, check the before/after byte stats, and download
Key features
Four real-world presets
Discord 25 MB, Twitter 512 MB, Web 720p, Web 1080p: set up for the right balance per platform
CRF slider for fine control
Tweak the H.264 quality factor from 18 (nearly lossless) to 32 (aggressive)
Max-resolution clamp
Optionally cap the output height to skip the extra megabytes of unused resolution
Audio bitrate control
AAC bitrate slider, or mute the track entirely with a one-click toggle
Multi-threaded ffmpeg.wasm
Uses SharedArrayBuffer when available for 5-10x faster transcodes
Faststart for streaming
Adds -movflags +faststart so the file plays from the first byte over HTTP
Before / after byte stats
See exactly how many MB you saved and at what percent
100% private
No upload, no server, no signup: the video stays in your browser
Why Use This Compressor Over a Cloud Tool?
Every popular online compressor uploads your video to a server, takes minutes longer, and frequently adds watermarks or quality caps behind a signup. Doing the transcode locally via ffmpeg.wasm is faster, completely private, and free.
Common use cases
- Squeeze a screen recording under the 25 MB Discord free-tier cap
- Shrink a phone clip to fit Twitter / X video size limits
- Pre-compress training videos before uploading to a slow LMS
- Reduce a bandwidth-heavy email attachment
- Optimise a marketing video for web embedding (HTML5 video / Vimeo Lite)
- Free up phone storage by re-encoding old high-bitrate captures
Picking the right CRF
- 18: nearly visually lossless (best for archival, big files)
- 20: high quality, default for 1080p source video
- 23: H.264 default, balanced quality and size
- 26: noticeably softer, great for short clips and social
- 28: strong compression for 720p web video
- 30+: aggressive, only use when you need a very small file
Why H.264 and not VP9 / AV1?
H.264 is the universally supported video codec: every browser, phone, TV, and chat platform plays it. VP9 and AV1 give better quality per byte but Discord, iMessage, and many editors still refuse them. The companion Video Format Converter lets you switch later.
Multi-threaded vs single-threaded
The tool routes (/tools/video-* and /tools/audio-*) are served with Cross-Origin-Opener-Policy + Cross-Origin-Embedder-Policy so the multi-threaded ffmpeg.wasm core can use SharedArrayBuffer. If your browser blocks SAB, the loader falls back to the single-threaded core, slower but still functional.
Tips & best practices
Trim before you compress
Use the Video Trimmer first if you only need part of the clip: fewer frames is always the biggest size win.
Use Discord 25 MB preset for short screen captures
It pairs CRF 28 with a 720p height cap to reliably land under 25 MB for ~1-3 minutes of content.
Mute the audio for silent recordings
A muted screen capture or whiteboard recording can shave another 5-10 % without losing anything.
Two-pass would help, but is slower
CRF is single-pass: fast and reliable. For exact target sizes, iterate on the CRF slider instead of switching to two-pass.
Mobile RAM is the bottleneck
iOS Safari is hostile to large WASM heaps. Use desktop for anything over ~100 MB to avoid mid-transcode crashes.
Privacy & security
Every byte of compression runs locally via ffmpeg.wasm. Your video is never uploaded, logged, or stored. The engine artefacts are served from our own origin so cross-origin isolation works without third-party CDN dependencies.
Related tools
- Video Format Converter
Convert mp4, webm, mkv, and mov videos to any of those targets: fully in your browser via ffmpeg.wasm. Pick the container; we auto-pair the right H.264 / VP9 / passthrough codec for maximum playback compatibility.
Video Tools
- Video Trimmer
Trim mp4, webm, mkv, and mov videos in your browser with ffmpeg.wasm. Lossless (-c copy) for instant cuts at keyframes, or frame-accurate re-encode when you need precision. No upload, no signup.
Video Tools
- Video to GIF Converter
Turn any mp4, webm, mov, or mkv into a high-quality animated GIF: fully in your browser via ffmpeg.wasm. Pick a time range, FPS, width, and dither; we generate an optimised palette in a single click.
Video Tools
- Video Frame Extractor
Extract still frames from any video as PNG or JPG: every N seconds, every N frames, at a single timestamp, or N evenly-spaced thumbnails. Runs entirely in your browser via ffmpeg.wasm. Downloads as a ZIP.
Video Tools
- GIF to Video Converter
Convert any animated GIF into a much smaller mp4 or webm: entirely in your browser via ffmpeg.wasm. mp4 + auto-play loop is typically 10-20x smaller than the original GIF.
Video Tools
- SIP / Investment Calculator
Project the maturity value of a Systematic Investment Plan (SIP) with optional lumpsum and annual step-up, and compare SIP, lumpsum, and combined modes side by side.
Finance Tools
Frequently Asked Questions
Does the video leave my browser?
No. Compression runs locally via ffmpeg.wasm. The engine artefacts are served from the same origin under /ffmpeg/<version>/, and your input video is read straight from your device.
What is CRF?
CRF (Constant Rate Factor) is the H.264 quality knob. Lower CRF = higher quality and larger file; higher CRF = smaller file and visible loss. 18 is nearly visually lossless, 23 is the default, 28 is aggressive but acceptable for short web clips.
Why H.264 / mp4 only? What about VP9 or AV1?
H.264 + mp4 is the most widely compatible target: every browser, phone, Discord, iMessage, Slack, and editor plays it. The Video Format Converter tool lets you switch container or codec afterwards if you need WebM, VP9, or AV1.
How big a file can I compress?
There is a 250 MB / 5-minute soft cap to protect mobile devices from out-of-memory crashes. Larger files work on desktop browsers with several GB of available RAM, but mobile Safari may struggle.
Why is the first run slower?
The ffmpeg.wasm core is ~32 MB and downloads only on demand. After the first run it is cached for the rest of the session: switching to multi-threaded mode automatically when your browser allows SharedArrayBuffer.
Does it strip metadata?
The re-encoded mp4 does not carry your input file’s arbitrary metadata. Standard playback metadata (duration, codec, bitrate) is re-derived from the freshly encoded streams.