Skip to main content

Compress Video

Shrink a video to a size you name — 10 MB for Discord, 25 MB for email — without uploading it. The video is re-encoded in your browser with a bitrate calculated from your target, stepping the resolution down only when the budget demands it, and there is no watermark.

Local-only

Heads up: video encoding runs in real time on your CPU — a 60-second video takes about 60 seconds, and your device may warm up. That is normal; your files never leave this tab.

Drop a video file

or drop anywhere on this page · Choose a file · 100 MB

Accepted: MP4, M4V, MOV, WebM, MKV, AVI, WMV, ASF, FLV, 3GP, 3G2, MPG, MPEG, M2V, VOB, TS, M2TS, MTS, OGV, MXF, DV, F4V, RM, RMVB, DIVX

Compression re-encodes in your browser in real time with WebCodecs, available in current Chrome, Edge, Firefox and Safari. Your video never leaves this device.

How does Compress Video work?

Video compression is bitrate arithmetic: a target size divided by a duration gives the bits per second the file may spend. The subtlety is spending them where they matter — and admitting when the budget is impossible rather than silently producing mush.

From megabytes to megabits

The tool subtracts the audio track (128 kbps AAC, unless you drop it) and a 5% container margin from your target, then divides what remains by the duration. That is the video bitrate. A 10 MB target on a 60-second clip means roughly 1.2 Mbps of video — comfortable at 720p, hopeless at 4K, which is why the resolution steps down automatically: 1080p, then 720p, 480p, 360p.

The viability floor

Each resolution has a minimum bitrate below which the picture falls apart — about 0.07 bits per pixel per frame. The tool refuses targets that cannot clear even the 360p floor, and says so plainly, because a 2 MB “HD” video that looks like soup helps nobody. That refusal is a feature competitors rarely offer; they would rather take your upload and hand you the soup.

How the encode runs

Your browser decodes the video, draws it frame-by-frame to a canvas at the target resolution, and WebCodecs' VideoEncoder — hardware-accelerated on most devices — re-encodes it to H.264. Audio is decoded and re-encoded to AAC, or dropped. The mp4-muxer library writes a fast-start MP4, so the result streams before it finishes downloading. Everything happens in this tab; the encode runs in real time.

Example input

clip.mp4 — 96 MB, 4K, 45 s

Example output

clip-10mb.mp4 — 9.8 MB, 720p, under the Discord limit

What options and edge cases does Compress Video support?

Options
ParameterTypeDefaultBehaviour & edge cases
Target sizepresets / 1–500 MB10 MBDiscord (10 MB), WhatsApp (16 MB) and email (25 MB) presets, or any custom size.
Keep audiotoggleOnRe-encodes to 128 kbps AAC. Off drops the track and gives its bits to the video.

Frequently asked questions

Is my video uploaded anywhere?

No. Decoding, re-encoding and muxing all run in this tab via WebCodecs and your browser's media pipeline. Open DevTools on the Network panel and compress something: nothing carrying your file is sent.

Which browsers can compress video?

Any browser with WebCodecs video encoding: current Chrome, Edge and Firefox, and Safari 16.4 or later on iPhone, iPad and Mac. Where the browser has no audio encoder (Safari before 26), the original sound track is copied into the new file unchanged. An older browser gets a clear message instead of a failed run.

Will it hit my exact target size?

The target is an estimate, not a guaranteed cap. The bitrate budget allows for audio and container overhead, but encoder behavior can produce a larger or smaller file. Check the measured size after export and reduce the target if the destination has a strict limit.

Why did my 4K video come back as 720p?

Because the budget demanded it. 10 MB over 60 seconds is about 1.2 Mbps, which cannot carry 4K without visible damage — the tool steps down to the highest resolution the bitrate can honestly support. Raise the target if you need the pixels; the plan line above the button shows the resolution before you run it.

What if my target is impossibly small?

The page refuses and tells you, before encoding anything. Below roughly 0.07 bits per pixel per frame even 360p falls apart, and shipping that file would be worse than declining. No upload site will tell you this — they will take the file and hand you the mush.

How long does it take?

About as long as the video itself: the encode runs in real time through your device's encoder (hardware-accelerated on most phones and laptops). A 60-second clip takes about a minute, with a progress bar and a cancel button.