Which Video Format Is Actually Smallest?
“Convert to MP4 to save space” is common advice, and it’s mostly wrong — because MP4 isn’t a compression method at all. What actually sets the size is the codec inside the file. So we measured the three that matter — H.264, VP9 and AV1 — encoding two 720p clips across a full quality sweep and scoring each with VMAF, Netflix’s perceptual quality metric. Here is how much smaller the same video gets, at the same quality, just by changing the codec.
Same quality, very different bitrate
Plotting VMAF against bitrate puts all three codecs on one picture. A line further to the left reaches the same quality for fewer bits. AV1 sits well left of everything; VP9 is clearly left of H.264; H.264 needs the most bits for any given quality. At a VMAF of 90 — visually very close to the original — VP9 comes in about 40% under H.264 and AV1 about 60% under.
H.264VP9AV1 — each dot is a CRF step; mean of two 720p clips.
The same clip, three sizes
Read off the curves at VMAF 90 and turn bitrate into a real file. For a 10-second 720p clip at that quality, the codec choice is the difference between a 3.3 MB file and a 1.3 MB one — identical footage, identical quality target, same container if you like. That’s why streaming services encode in VP9 and AV1: the bytes saved add up fast at their scale.
A 10-second 720p clip encoded to VMAF 90, by codec. Same quality target; the container is irrelevant.
The full sweep
Every codec at each quality setting (CRF), with the resulting bitrate at 720p30 and VMAF. Higher VMAF is closer to the original; 100 would be identical. The efficiency ordering is consistent across the whole range: AV1, then VP9, then H.264.
| Codec | CRF | Bitrate | VMAF |
|---|---|---|---|
| H.264 | 22 | 3,489 kbps | 93.5 |
| H.264 | 28 | 1,542 kbps | 85.6 |
| H.264 | 34 | 730 kbps | 70.0 |
| H.264 | 40 | 374 kbps | 45.8 |
| H.264 | 46 | 195 kbps | 21.1 |
| VP9 | 30 | 3,125 kbps | 95.3 |
| VP9 | 37 | 1,767 kbps | 91.5 |
| VP9 | 44 | 1,018 kbps | 85.1 |
| VP9 | 51 | 582 kbps | 75.5 |
| VP9 | 58 | 328 kbps | 62.4 |
| AV1 | 30 | 2,260 kbps | 95.9 |
| AV1 | 38 | 1,385 kbps | 93.0 |
| AV1 | 46 | 854 kbps | 88.7 |
| AV1 | 54 | 531 kbps | 82.4 |
| AV1 | 62 | 218 kbps | 66.4 |
Bitrate is at 720p30; values are the mean of the two clips. There is a real catch not shown here: AV1 and VP9 encode much slower than H.264, so the size win costs CPU time.
Reproduce this
Two public clips, three encoders, one perceptual metric — the whole thing is a short script you can run.
- Clips: Big Buck Bunny (animation) + Jellyfish (detailed live action), 720p, 10s each.
- Encoders (single-pass CQ): x264 preset medium; libvpx-vp9 cpu-used 1; SVT-AV1 preset 6.
- Metric: VMAF (libvmaf), with both streams normalised to CFR + yuv420p so frames pair correctly.
- Reported: the mean of the two clips at each quality step.
The clips are H.264 masters, so these are transcodes — the ratios between codecs are the finding, not the absolute sizes, and 2-pass or higher resolutions shift the exact numbers. Want to convert your own video between these formats? The Video Tools do it in your browser, nothing uploaded.