Compress Video Online (MP4, WebM, MOV) - Reduce File Size
Compress and convert video (MP4, WebM, MOV, MKV) locally in your browser, lower the resolution and bitrate for a smaller file. Audio is kept.
⚠️ Video compression needs WebCodecs, which this browser doesn't support. Try a recent Chrome or Edge.
Drop a video here, or click to choose
MP4, WebM, MOV, MKV · maks 600 MB
How it works
This tool re-encodes your video entirely in your browser using the WebCodecs API and your device's own video codecs. The file never leaves your computer, nothing is uploaded to a server. Pick a lower resolution and/or quality to shrink the file; the audio track is kept and re-encoded to AAC.
Because it uses WebCodecs, it works best in recent Chrome and Edge (and other Chromium browsers). Very large or long videos take longer and use more memory, so keep clips reasonably short.
About this tool
The video compressor makes video files smaller without uploading them to a server. The file is re-encoded using the WebCodecs API and your device’s built-in video codecs (H.264/VP9 via mediabunny), and the audio track is kept as AAC. Pick resolution (keep, 1080p, 720p, 480p) and quality (low, medium, high) and get a new file to save or share. Great for videos too large for email, Slack, LMS platforms or social media. Requires a Chromium-based browser (Chrome, Edge, Opera, Brave) since Firefox and Safari still lack full WebCodecs support.
How to use it
- Drop a video file (MP4, WebM, MOV, MKV) on the drop zone, max 600 MB.
- Choose the desired resolution: keep original, 1080p, 720p or 480p.
- Choose quality: low (smallest file), medium or high (closest to original).
- Press "Compress video", wait for processing and download the new file.
Examples
MP4 1080p 30 fps 3 min, approx. 200 MB. Settings: 720p, medium quality.MP4 720p 30 fps 3 min, approx. 35 MB (6x smaller). Now fits most email limits (still too large for Gmail's 25 MB attachment cap, so pick low quality or 480p).WebM 4K 60 fps 5 min, approx. 400 MB. Settings: 1080p, high quality.MP4 1080p 60 fps approx. 90 MB (4x smaller). Still sharp for screen content.Common use cases
- Sending phone recordings of the kids’ football match to grandparents without cloud storage.
- Attaching short video clips to email or LMS without breaking the attachment limit.
- Reducing the size of screen recordings from Loom, OBS or QuickTime.
- Preparing clips for upload to Instagram, TikTok and YouTube Shorts.
- Compressing security-camera or dashcam videos for archive or sharing with insurance.
Frequently asked questions
- Why doesn’t it work in Firefox or Safari?
- Video compression needs the WebCodecs API, which gives direct access to the browser’s hardware-accelerated codecs. Chromium-based browsers (Chrome 94+, Edge 94+, Opera, Brave, Arc) fully support it. Firefox has experimental support only (enable in `about:config`); Safari 17+ has partial support but lacks H.264 and VP9 encoders. Without WebCodecs the alternative would be to bundle a full video codec as WebAssembly (10+ MB), which would make the tool slow and data-heavy.
- How much smaller does the file get?
- It depends on source and settings. Typically 720p medium quality gives 3-8x smaller files from iPhone/Android recordings (from 4K or high-bitrate 1080p). Screen recordings often compress 5-10x. If the source is already an optimized low-bitrate MP4, the gain is small (maybe 1.5x). Try "low quality 720p" first; if it looks good, keep it; otherwise try "medium" or "high".
- Why is the max size 600 MB?
- Because the whole file must live in browser memory during compression. On mobile devices RAM can be as low as 2-4 GB, and the JS heap is often capped at 1-2 GB. At 600 MB we have a safety margin so the tab doesn’t crash mid-way. For larger files, use desktop software like HandBrake, ffmpeg or Adobe Premiere.
- Is audio kept?
- Yes. The audio track is re-encoded to AAC (the most common audio codec for MP4). Bitrate is auto-set to a sensible value (typically 128 kbps stereo). If the source has no audio, the output has none either. If the source has multiple audio tracks (e.g. several languages), only the first is kept.
Technical background
Process: file bytes are read and parsed with mediabunny to find streams and keyframes. Video stream is decoded with `VideoDecoder` from the WebCodecs API into `VideoFrame` objects, scaled in an `OffscreenCanvas` to the target resolution, and re-encoded with `VideoEncoder` (H.264 baseline or Main profile). Bitrate is set from the quality choice: low 1 Mbps @ 720p, medium 2.5 Mbps, high 5 Mbps (scaled proportionally for other resolutions). Audio stream is decoded with `AudioDecoder` and re-encoded with `AudioEncoder` to AAC 128 kbps. Everything is muxed into an MP4 container. No network calls.