Netflix Deletes Your Film Grain and Paints It Back. Grade for That
Netflix's AV1 streams strip grain and resynthesise it on the TV. How grain synthesis works and how to grade and QC for it.

If a Netflix viewer is watching your film on an AV1 stream, the grain you signed off in the grade may never reach them as pixels. Netflix's encoder removes it, sends a short description of it, and the TV paints new grain back on. It is a statistical copy, not your grain. That is a good trade for bandwidth. It changes what "approving the grain" means.
The numbers behind the switch
In December 2025 Netflix's engineers reported that AV1 now carries about 30% of Netflix viewing. They also reported that AV1 sessions score 4.3 VMAF points higher than AVC and 0.9 higher than HEVC, use about a third less bandwidth, and buffer 45% less often. Some 88% of large-screen devices submitted for certification between 2021 and 2025 decode AV1. About 85% of the HDR catalogue, measured by viewing hours, has AV1 HDR10+ encodes.
The same post dates film grain synthesis (FGS) to July 2025. An earlier, more detailed Netflix post on FGS at scale, published on 2 July 2025, says the rollout had been running since March. The two dates probably mark the start of the rollout and its wider deployment. Netflix's headline figure is a 66% bitrate cut with better quality, but that comes from one grainy title: They Cloned Tyrone, which dropped from 8,274 kbps to 2,804 kbps. Across about 300 titles the average saving was 36% at 1080p and above, and only 10% below 1080p, likely because downscaling already filters out much of the grain. Use 36% as the realistic number.
How the pipeline actually works
- Denoise. The encoder strips grain from the source. The AV1 standard does not specify how; that is up to the encoder.
- Model. The difference between the original and the denoised image is the grain. It is described by an auto-regressive pattern model, which captures grain size and texture, and a piecewise-linear scaling function, which sets how strong the grain is at each brightness level. In the AV1 specification the luma scaling curve can have at most 14 points, and the pattern model looks at most three samples back.
- Encode clean. The denoised picture compresses far more efficiently, because the encoder no longer spends bits on random noise.
- Resynthesise. The decoder builds a noise template from the parameters (82 by 73 samples for luma in the spec). According to Netflix, it then adds random 32×32 patches of it to the decoded picture, scaled by brightness.
Two details matter for colourists. First, the parameters travel with each frame, but an encoder can reuse the previous set, so grain character can follow your scenes or stay fixed for long stretches. Second, the AV1 specification allows decoder output that is not bit-exact. A decoder may add its own processing, such as debanding, before the grain step. It only has to avoid "perceptually significant differences" from the reference output, and the spec leaves defining those to the service provider. So two certified TVs can render your grain slightly differently, by design.
What survives and what doesn't
| Grain property | Survives FGS? | Why |
|---|---|---|
| Overall amount and size | Largely | Captured by the pattern model and scaling curve |
| Grain that changes with exposure (e.g. heavier in shadows) | Approximately | Up to 14 points describe strength across the luma range |
| Colour grain vs luma grain balance | Approximately | Chroma has its own scaling, or can follow luma |
| Grain that differs across the frame, e.g. a grainy insert inside a clean frame | Poorly | One parameter set applies to the whole frame |
| The exact grain field you approved | No | The decoder generates new pseudo-random grain |
| Grain on sub-1080p streams | Partly | Downscaling removes much of it before modelling |
What to do in the grade
Netflix's FGS post does not mention colourists, creative intent or per-title tuning. So nothing we found says you can control how your title's grain is modelled. Work on the assumption that you can't, and grade so the model has an easy job.
- Keep grain as uniform as the look allows within a frame. Mixed grain in one frame, such as a grainy archive insert on a clean background, is what a single per-frame model handles worst. Decide whether you would rather see that insert's grain averaged across the whole frame or removed altogether.
- Treat synthetic grain as a brightness-dependent texture, not a fixed overlay. Most grain plugins already vary by brightness, and that is what the scaling curve can reproduce. Unusual structures, such as directional or scanned-print textures, will come back as generic noise.
- Don't add grain to hide banding. Grain synthesis is applied after decoding, so banding in the clean picture is still there underneath. A decoder may deband first, or it may not. Fix banding in the master.
- Think about what the denoiser will see. Very fine grain at very low levels may be classified as image detail and encoded, or removed and resynthesised. Either way you are not in control at that level.
A QC routine for grain-heavy titles
- Make your own FGS proxy. Encode a few reels with an open-source encoder that supports grain synthesis, for example SVT-AV1 with --film-grain set between 1 and 50 (see the SVT-AV1 parameter docs). It is not Netflix's pipeline, but it shows how your grain behaves under a denoise-model-resynthesise cycle.
- Compare at viewing distance, not at 400%. The new grain will never match frame for frame. Judge texture, the sense of sharpness, and how shadows feel.
- Watch the hard cases: dark scenes with lifted grain, skin in close-up, flat skies and grainy inserts.
- Check a 720p version. That is where most of the grain goes away, and where many mobile viewers will see your film.
- Look at two TVs from different makers if the look depends on grain, because decoders are allowed to differ.
The takeaway
On AV1, Netflix ships a description of your grain, not your grain, and saves about a third of the bitrate doing it. Grade for grain that a per-frame model can describe: consistent within the frame, tied to brightness, and not used to cover banding. Then QC a resynthesised proxy before you sign off, because that is closer to what viewers will see than your master is.