videocompression Blog
How to Achieve Netflix-Level AV1 Compression
How to Achieve Netflix-Level AV1 Compression
"Netflix-level compression" gets thrown around a lot. It doesn't mean a magic setting — it means Netflix's *approach*: per-title (and per-shot) encoding, where every piece of content gets exactly the bitrate it needs, no more. Combined with the AV1 codec, that's how they stream 4K that looks pristine at bitrates that used to barely manage 720p. Here's how close you can get for free.
What Netflix actually does
Three pillars:
- AV1 codec — royalty-free, ~30% more efficient than HEVC. Netflix helped develop it and now serves AV1 to most devices.
- Per-title encoding — instead of one bitrate ladder for everything, they analyze each title's complexity. A cartoon gets a totally different ladder than an action movie.
- Per-shot optimization — taken further: encoding parameters adapt *within* a title, shot by shot. Complex scenes get more bits; simple ones get fewer.
You can't replicate their compute farm, but you can absolutely use the same codec and the same *philosophy*.
Step 1: Get SVT-AV1
SVT-AV1 (by Intel/Netflix/others) is the best open-source AV1 encoder. It ships with recent ffmpeg builds:
ffmpeg -encoders | grep libsvtav1
If it's missing, grab a full static build from johnvansickle.com (Linux) or gyan.dev (Windows) — both bundle it.
Step 2: The Netflix-style command
ffmpeg -i input.mp4 -c:v libsvtav1 -crf 30 -preset 6 \
-c:a libopus -b:a 128k output.mp4
- CRF 30 ≈ the sweet spot for AV1 (note: AV1's CRF scale differs from H.264's — 28–32 is the useful range, not 18–23).
- Preset 6 — good balance of speed and efficiency. Lower (4–5) = better compression, much slower. Higher (8) = fast, slightly bigger.
- libopus for audio — the modern, efficient choice.
Step 3: Think per-title (the real secret)
Don't use one CRF for everything. Match it to content complexity:
| Content type | Suggested CRF |
|---|---|
| Animation / slides / talking head | 32–35 |
| Typical movies / vlogs | 28–32 |
| Grainy film / fast sports | 24–28 |
Test on a 30-second representative clip first (-t 30), compare, then encode the whole thing. That's per-title thinking on a budget.
Step 4: Two-pass for exact sizes
If you need to *hit a file size* (say, under Discord's limit), CRF won't guarantee it. Use two-pass:
ffmpeg -i input.mp4 -c:v libsvtav1 -b:v 2M -preset 6 -pass 1 -an -f mp4 /dev/null
ffmpeg -i input.mp4 -c:v libsvtav1 -b:v 2M -preset 6 -pass 2 -c:a libopus -b:a 128k output.mp4
Honest limits
- Speed: AV1 encoding is slow. A 10-minute 1080p video at preset 6 might take 30+ minutes on a decent CPU. Preset 8 is ~3x faster with a small efficiency cost.
- Playback: AV1 needs a modern device. Old phones and smart TVs may stutter — keep an H.264 copy for compatibility.
- You won't match Netflix exactly. Their per-shot optimization runs on massive compute with proprietary analysis. But SVT-AV1 at the right CRF gets you ~80% of the way there for 0% of the cost.
The shortcut
All of this runs in your browser too: our free online video compressor uses ffmpeg under the hood for MP4/WebM transcoding with adjustable quality — no installs, no uploads, no watermark.