Video compressor
Compress and transcode video files directly in your browser using client-side WebAssembly. No video is uploaded to any cloud server or third-party service. Set a target file size (e.g. 8MB for Discord, 25MB for email attachments) or use quality presets (CRF) and resolution scaling to reduce file size while maintaining visual clarity.
Client-only video compression. Videos are re-encoded directly inside your browser tab with WebAssembly. No files leave your machine.
Select a video to compress
Drag and drop an MP4, MOV, WebM, or MKV file here, or click to browse.
Converts to web-optimized H.264 + AAC MP4 with faststart streaming headers.
Example
Shrink a 45MB screen recording for Discord
Load a 45MB 1080p MP4 recording. Set compression mode to Target Size (8 MB) or CRF 28 with 720p scaling. The in-browser WebAssembly engine re-encodes the file to an 7.6MB H.264 MP4 with faststart streaming headers.
Related: Image compressor, GIF compressor
FAQ
- Is my video uploaded to a cloud server?
- No. Transcoding runs entirely on your local machine using a WebAssembly build of FFmpeg inside a browser Web Worker. Your video never leaves your browser tab.
- Which video formats are supported?
- You can input MP4, MOV, WebM, MKV, AVI, and M4V video files. Output is always encoded to universally compatible H.264 video with AAC audio in an MP4 container.
- What does CRF mean in video compression?
- CRF stands for Constant Rate Factor. Lower values (like 22) preserve higher visual quality but produce larger files. Higher values (like 30 or 34) yield smaller files with higher compression.
- Can I compress videos to meet Discord, Slack, or email attachment limits?
- Yes. Choose 'Target File Size' and select 8MB (Discord free tier), 16MB (Slack), or 25MB (Gmail/Outlook). The tool automatically calculates the necessary video bitrate to hit the size threshold.
- Why does in-browser video compression take time?
- Video encoding is compute-intensive. In the browser, FFmpeg runs inside a WebAssembly sandbox executing on CPU cores without native GPU hardware acceleration. Short clips take a few seconds, while multi-minute clips may take a couple minutes.
- How do I compress video locally from the command line?
- Install FFmpeg and run ffmpeg -i input.mp4 -c:v libx264 -crf 26 -preset slow -c:a aac -b:a 128k -movflags +faststart output.mp4. For target file size: calculate bitrate (kbits = targetMB * 8192 / seconds - audioBitrate) and pass -b:v ${bitrate}k.