Free tool · H.264 · Runs in your browser

Compress a video

No uploadUp to 100 MB per fileNo daily limit

Short answer

Pick 480p, 720p or 1080p and the tool re-encodes your video as H.264 at CRF 28 inside your browser, so nothing is uploaded. On our 10 second 1080p test clip (13.36 MB) the three presets produced 0.36 MB, 0.65 MB and 1.30 MB. A file that is already small can grow: our smallest source grew 22.3% at 1080p.

Batch is free and unlimited - files are processed one after another on your device, with no queue or daily cap. Maximum 100 MB per file; the first run loads a ~30 MB engine once per visit.

Pick a maximum output resolution. Check the downloaded file against your destination’s upload limit.

Key takeaways

  • The presets set the largest frame, not a file size. The tool fits the video inside 854 × 480, 1280 × 720 or 1920 × 1080 without ever upscaling, and holds quality at CRF 28.
  • Measured on the shipped engine: 13.36 MB became 1.30 MB (-90.3%), 0.65 MB (-95.1%) and 0.36 MB (-97.3%) at 1080p, 720p and 480p. Video only.
  • The output bitrate follows the picture and the frame, not the input: at 720p three sources from 664 to 10,687 kbps all came out at 485 to 519 kbps.
  • An efficient source can grow. The 829,715 byte source became 1,014,580 bytes at 1080p (+22.3%). Compare sizes before you upload.
  • For an exact size, solve for the bitrate and encode in two passes: the result landed within 1.8% of the target in our test, against 7.9% to 11.3% under for a single pass.

What the tool does to your file

Every preset runs the same encode and differs only in the size of the frame it fits the video into. The tool scales the video down to fit inside the preset without ever scaling it up, keeps the aspect ratio, and rounds each side to an even number, which H.264 with 4:2:0 color requires.

The settings behind the Compress a video tool.
SettingValueWhat it means
Video codecH.264 (libx264), yuv420pThe most widely accepted video format
Rate controlCRF 28A quality target, not a file size target. FFmpeg's wiki calls 17 to 28 the subjectively sane range, so 28 is its low-quality end
Encoder presetveryfastFaster encoding in the browser, at the cost of some compression efficiency
AudioAAC, 128 kbpsRe-encoded, so it adds 16,000 bytes for every second of video
Frame fitFits inside 854 × 480, 1280 × 720 or 1920 × 1080, never upscalesA 16:9 source fitted to 854 × 480 comes out 852 × 480 in our test

CRF is exponential: the FFmpeg wiki says +6 roughly halves the bitrate and file size, and -6 roughly doubles it. There is no CRF control in this tool; the value is fixed at 28.

Measured: what each preset produced

Measured on Big Buck Bunny, 10 second excerpt (CC BY 3.0, Blender Foundation), 1920x1080 at 30 fps. It is an animated film, not camera footage, so camera video with more motion and noise needs more bits. The test file has no audio track, so every size here is video only; the tool adds AAC at 128 kbps, which is 16,000 bytes for every second of video.

The three sources are the original excerpt (10.7 Mbps, 13,358,215 bytes) and two re-encodes of it, so the table shows what the tool does to a large file, a medium one and a small one. SSIM compares each output with its own source scaled to the output size; 1.0 would be identical.

The Compress a video tool, three sources and three presets
Source and presetOutput sizeChangeOutput video bitrate and frameSSIM against the source
10.7 Mbps source, 480p362,508 bytes (0.36 MB)-97.3% against 13,358,215 bytes290 kbps, 852 × 4800.9642
10.7 Mbps source, 720p648,407 bytes (0.65 MB)-95.1% against 13,358,215 bytes519 kbps, 1280 × 7200.9689
10.7 Mbps source, 1080p1,299,320 bytes (1.30 MB)-90.3% against 13,358,215 bytes1,039 kbps, 1920 × 10800.9731
2.2 Mbps source, 480p356,114 bytes (0.36 MB)-87.2% against 2,791,249 bytes285 kbps, 852 × 4800.9659
2.2 Mbps source, 720p638,518 bytes (0.64 MB)-77.1% against 2,791,249 bytes511 kbps, 1280 × 7200.9719
2.2 Mbps source, 1080p1,247,311 bytes (1.25 MB)-55.3% against 2,791,249 bytes998 kbps, 1920 × 10800.9787
0.66 Mbps source, 480p340,913 bytes (0.34 MB)-58.9% against 829,715 bytes273 kbps, 852 × 4800.9697
0.66 Mbps source, 720p606,661 bytes (0.61 MB)-26.9% against 829,715 bytes485 kbps, 1280 × 7200.9763
0.66 Mbps source, 1080p1,014,580 bytes (1.01 MB)+22.3% against 829,715 bytes812 kbps, 1920 × 10800.9868

Video only; the test file has no audio track.

On the original, the 1080p preset made 1.30 MB (-90.3%), 720p made 0.65 MB (-95.1%) and 480p made 0.36 MB (-97.3%). Encoding the 10 second clip took between 10.4 and 32.3 seconds in a headless run of the same engine; your browser and device will differ.

Why the output is about the same size for very different sources

CRF aims at a quality, so the output bitrate follows the picture, not the input file. At 720p the three outputs were 485 to 519 kbps although the sources ran from 664 to 10,687 kbps, a 16-fold spread. The input only matters when it is already lower than the output the settings would produce, which is the next section.

The practical rule: resolution drives the size more than the source does. Going from 720p to 1080p took the video bitrate from 519 to 1,039 kbps on the original (2.0 times), from 511 to 998 on the medium source and from 485 to 812 on the smallest. Going from 720p down to 480p cut it by 44% on the original.

When the file gets bigger

The tool warns that an already efficient video can come out larger. The measurement shows how far: the smallest source, 829,715 bytes at 664 kbps, became 1,014,580 bytes (+22.3%) at 1080p, because the encode is held to CRF 28 and a slow, careful encode of the same clip had already used fewer bits than that. At 720p it fell 26.9% and at 480p 58.9%.

If the result is larger than the original, keep the original, or choose a lower preset. Compare the two sizes before you upload either.

Audio is a bigger share than you expect at small sizes

AAC at 128 kbps costs 16,000 bytes every second, whatever the picture does. In the 10 second 480p output the video was 362,508 bytes and audio would add 160,000 bytes, which is 31% of the final file. At 720p it is 20% and at 1080p 11%.

The test file had no audio, so the table above is video only. When you plan a size, add the audio yourself.

Hit a target size: the formula and how close it gets

The presets cannot hit a size on purpose. When a service has a hard cap, work backwards: bitrate = file size / duration, then subtract the audio bitrate. This is the method on the FFmpeg wiki: a 200 MiB target over 600 seconds gives about 2,796 kbps in total, and about 2,668 kbps for video after 128 kbps audio.

Two-pass encoding spends the bits where the picture needs them and aims at that average. We measured both approaches on the 10 second clip with a 128 kbps AAC track, for three file sizes. Two-pass landed within 1.8% of the target; a single pass at the same bitrate came in 7.9% to 11.3% under it.

Target and presetVideo bitrate from the formulaTwo-pass resultSingle-pass resultSSIM (two-pass)
1.00 MB at 720p672 kbps1,003,559 bytes (+0.4%)897,086 bytes (-10.3%)0.9749
2.00 MB at 720p1,472 kbps1,987,604 bytes (-0.6%)1,811,354 bytes (-9.4%)0.9863
5.00 MB at 720p3,872 kbps4,925,876 bytes (-1.5%)4,604,349 bytes (-7.9%)0.9930
1.00 MB at 1080p672 kbps1,003,106 bytes (+0.3%)886,659 bytes (-11.3%)0.9624
2.00 MB at 1080p1,472 kbps1,983,418 bytes (-0.8%)1,794,233 bytes (-10.3%)0.9792
5.00 MB at 1080p3,872 kbps4,912,548 bytes (-1.8%)4,547,850 bytes (-9.0%)0.9903

Target is the whole file.

The single pass undershoots, so it wastes space you could have used for quality. If the cap is hard, use two passes.

Work out the bitrate for your size limit

Enter the limit and the length. The result is the video bitrate to give a two-pass encode, with the commands filled in.

Total bitrate that fits
1,111 kbps
Video bitrate after audio
983 kbps

3 min under 25 MB: 25,000,000 bytes × 8 ÷ 180 s ÷ 1000 = 1,111 kbps, minus 128 kbps audio.

480p preset on our test clip
Likely fits: that clip needed up to 290 kbps
720p preset on our test clip
Likely fits: that clip needed up to 519 kbps
1080p preset on our test clip
Probably too big: that clip needed up to 1,039 kbps
Two-pass commands at this bitrate
ffmpeg -y -i input.mp4 -c:v libx264 -b:v 983k -pass 1 -an -f null /dev/null
ffmpeg -i input.mp4 -c:v libx264 -b:v 983k -pass 2 -c:a aac -b:a 128k output.mp4

The presets are a guide taken from one animated clip. Camera footage with more motion needs more bits, so the final check is the size of your own file.

Compress for a specific place

Each destination publishes its own cap. These pages turn a cap into a length that fits, with the same measurements.

Free tools:Compress a video for emailCompress a video for DiscordCompress a video for WhatsApp

Questions people ask

Does this upload my video?

No. The tool runs ffmpeg inside your browser, so the file stays on your device. It accepts files up to 100 MB, and the first run downloads an engine of about 30 MB once per visit.

What do 480p, 720p and 1080p do to a video?

They set the largest frame the video is fitted into, without ever scaling it up. On our 10 second 1080p clip (13.36 MB), 720p produced 0.65 MB and 480p 0.36 MB.

Why is my compressed video bigger than the original?

The quality is fixed at CRF 28, not a size. A source that is already smaller than that would produce can grow: our smallest source (829,715 bytes) became 1,014,580 bytes (+22.3%) at 1080p. Pick a lower preset or keep the original.

How do I compress a video to 10 MB or another exact size?

Work out the bitrate: file size in bytes × 8 / seconds / 1000 gives total kbps, then subtract the audio bitrate. Encode with two passes at that video bitrate. In our test two-pass landed within 1.8% of the target. The calculator on this page does the arithmetic.

Is CRF 28 good quality?

The FFmpeg wiki calls 17 to 28 the subjectively sane range, so 28 is the lowest quality in it. Our SSIM scores against the source were 0.96 to 0.99 across the nine runs. Look at the result at the size you will publish it.

How long does compression take?

In a headless run of the same engine, a 10 second 1080p clip took 10.4 to 32.3 seconds, with 1080p the slowest. Your browser and device will differ.

What happens to the audio?

It is re-encoded as AAC at 128 kbps. That adds 16,000 bytes for every second, which is a large share of a small file.

What is the maximum file size?

The tool accepts files up to 100 MB each. For larger files use a desktop encoder.

Can I compress a video for email, Discord or WhatsApp?

Yes. Gmail allows 25 MB on personal accounts, Discord 20MB without Nitro, and WhatsApp says its default is 100MB at 720p or 64MB at 480p. The pages linked above show how long a video fits under each.

Related

Sources and how we checked

  1. FFmpeg wiki: Encode/H.264 (CRF, presets and two-pass) (read 2026-10-06)
  2. Gmail Help: Send attachments with your Gmail message (read 2026-10-09)
  3. Discord Support: File Attachments FAQ (read 2026-10-09)
  4. WhatsApp Help Center: How to send media, contacts, or location (read 2026-10-09)

Reviewed October 9, 2026. Measurements ran the tool’s own ffmpeg arguments on the same single-thread WebAssembly engine your browser downloads, using a Big Buck Bunny excerpt (CC BY 3.0, Blender Foundation). The evidence file is in data/seo/hub/evidence/2026-10-09/compress.