Video Compressor

Compress MP4, AVI, MOV, MKV and WEBM videos free, entirely in your browser — your footage is never uploaded. Choose the quality level, shrink the file for sharing, and download instantly.

Video Compressor

Reduce video file size while keeping good quality. Choose a compression level below.

Drag & drop your file here
or click to select

100% private: your file is processed entirely inside your browser — nothing is uploaded to any server. The conversion engine (~30 MB) downloads once on first use and is cached for later.

User Guide

1

Add the video

Drop in an MP4, MOV, MKV, AVI or WebM file up to 300 MB. The engine downloads once (~30 MB) and is cached for later runs.

2

Pick a level, not a target size

The four levels are resolution caps, not percentages. High keeps up to 1080p, Balanced caps at 720p, Strong at 480p and Maximum at 360p. Choose by where the video will be watched.

3

Understand what will not happen

No level upscales. The filter is scale='min(W,iw)':-2, so a 480p source stays 480p on the High setting — it simply gets a lower bitrate. Compressing an already-small video gains very little.

4

Press Compress and wait

Encoding runs at roughly real time to half real time depending on resolution. Keep the tab in the foreground; browsers throttle background tabs and the job will stall.

5

Compare the before and after

The tool reports both sizes when it finishes. Watch a few seconds of the result at full screen before you commit — blocking in fast motion is the first thing to look for.

6

If it barely shrank

Your source was already efficiently encoded. Step down one level: resolution is the reliable lever, quality settings alone are not. Going from 1080p to 720p removes 55% of the pixels before compression even starts.

About the Video Compressor

This tool re-encodes video to H.264 at a lower resolution and bitrate, in your browser, without uploading anything. It is built around one insight that most compression tools hide: quality settings alone do not reliably shrink a file. Resolution does.

Why a quality slider is not enough

H.264 encoders use a constant rate factor — CRF — where lower numbers mean better quality and larger files. The FFmpeg H.264 encoding guide describes the scale as roughly 18 to 28 for sane output, with 23 as the default. The intuitive move is to raise CRF and expect a smaller file.

It does not always work. CRF asks the encoder to hit a quality level, not a size. Feed it a video that has already been compressed — anything downloaded from a social platform, for instance — and asking for CRF 29 can produce a file the same size or larger, because the encoder faithfully reproduces the compression artefacts already baked into the source.

Cutting resolution has no such ambiguity. Halving the width and height removes 75% of the pixels before the encoder starts. That is why each level here caps resolution and tunes CRF together, rather than offering a slider on its own.

Exactly what each level does

Level Max width CRF Audio Best for
High 1920 px (1080p) 26 128 kbps Archiving, large screens
Balanced 1280 px (720p) 29 96 kbps Email, messaging, most uploads
Strong 854 px (480p) 31 96 kbps Tight attachment limits
Maximum 640 px (360p) 34 64 kbps Smallest possible, phone viewing

Every level uses the faster x264 preset, forces yuv420p chroma for universal playback, and applies +faststart so the file can begin playing before it has fully downloaded. Audio is re-encoded to AAC (FFmpeg AAC guide).

Estimating the result

File size is governed by size (MB) ≈ bitrate (kbps) × duration (s) ÷ 8192. Working backwards from typical bitrates each level produces, a 3 minute clip lands roughly here:

Level Typical video bitrate 3 min result
High (1080p) ~2,500 kbps ~58 MB
Balanced (720p) ~1,200 kbps ~28 MB
Strong (480p) ~700 kbps ~17 MB
Maximum (360p) ~400 kbps ~10 MB

Treat these as a range, not a promise. CRF is quality-targeted, so a static talking-head clip lands well under the figure and a handheld shot of moving foliage well over it. Content complexity moves the result more than any setting does.

Choosing sensibly

Match the level to the screen, not to a size target. Video watched on a phone at 360p is indistinguishable from 720p at arm’s length. Video destined for a television or a projector should stay at High. For email, most providers cap attachments around 25 MB — Balanced on a clip under two minutes usually clears it.

One thing worth knowing: if you are uploading to YouTube, Instagram or similar, do not compress first. Those platforms re-encode everything on arrival, so you would be stacking two generations of loss. Upload the original.

Privacy and limits

Everything runs through a WebAssembly build of FFmpeg downloaded into the browser tab on first use (about 30 MB, cached afterwards). The video is never transmitted — there is no upload, no queue and nothing to delete afterwards. A single-threaded WebAssembly module can address only about 2 GB of memory, so files above 300 MB are rejected and anything over 60 MB warns that it will be slow.

Frequently Asked Questions

Why did my video barely get smaller?

It was already efficiently encoded — typically because it had been through a social platform, which compresses on upload. CRF targets a quality level rather than a size, so on an already-compressed source it has little left to remove. Step down a level: cutting resolution is the reliable lever.

Can I set an exact output size?

No. The tool works by quality level and resolution cap rather than a size target, because CRF encoding cannot guarantee a size in a single pass. Use the estimate table as a starting point and step down a level if you need to go smaller.

Will it make a small video bigger?

It will not upscale — the scale filter uses min(width, input width), so a 480p source stays 480p even on the High setting. It can still produce a slightly larger file if the source was already compressed harder than the level you chose.

Which level should I pick for email?

Balanced usually clears the common 25 MB attachment limit for clips under about two minutes. For longer video use Strong, or trim it first and send the part that matters.

Should I compress before uploading to YouTube or Instagram?

No. Those platforms re-encode everything on arrival, so compressing first stacks two generations of loss for no benefit. Upload the original and let them do it once.

What do the CRF numbers mean?

Constant rate factor: lower is better quality and a bigger file. The usable range is roughly 18 to 28, with 23 as FFmpeg’s default. This tool uses 26 through 34 alongside resolution caps, because the two together shrink files predictably where CRF alone does not.

Is the video sent to a server to be compressed?

No. FFmpeg runs as WebAssembly inside your browser tab. The file is read from disk into memory and the result written back. Nothing is transmitted, which is why there is no size-for-speed trade to be made by using a server.

How long will it take?

Roughly real time to half real time depending on resolution — a 3 minute 1080p clip takes about 3 to 6 minutes. WebAssembly runs at 50–80% of native speed on a single core. Keep the tab in the foreground or the browser will throttle it.