Skip to content
Plaintools

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.