> ## Content Index
> Fetch the complete content index at: https://ffmpeguru.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Add a vintage film-grain effect
- URL: https://ffmpeguru.com/add-a-vintage-film-grain-effect/
- Published: 2026-08-17T09:00:00.000Z
- Updated: 2026-10-13T17:59:37.000Z
- Author: FFmpeguru
- Tags: ffmpeg

![](https://picsum.photos/seed/ffback11/1200/630)

The \`grain\` filter adds film-like noise to a video so a clean digital source can read as analog, archival, or hand-processed. It is a stylistic effect — you would not use it for documentary footage you want to look neutral, but it is a one-line effect for moody montage or title sequences.

## The command

```
ffmpeg -i in.mp4 -vf "grain=8:2" -c:v libx264 -crf 20 out.mp4
```

## What it does

The two numbers are grain amount and grain variance. Higher amounts make the noise more visible; higher variance makes the noise look more like real film grain (coarser in shadows, finer in highlights). For a subtle effect that survives web compression, start at \`grain=4:1\`. For a heavy look, push to \`grain=15:5\`.

## Requirements

Any video input. The filter is in libavfilter. CPU-only. Since the effect is added before encoding, the encoder will spend extra bits encoding the noise — set your CRF one or two points higher than usual to keep the file size similar.

## Things to avoid

- Expecting a stable grain pattern across frames. The filter seeds a different noise per frame, so the grain shimmers. This is the desired look, but if you need a fixed pattern, use \`geq\` with a static noise function.
- Adding grain to a dark scene. Grain is most visible in shadows and will look like compression noise on bright content.
- Combining grain with denoise. They fight each other; the denoise will smooth out the grain you just added. Apply grain as the last step before encoding.
- Forgetting to set a deterministic seed. The filter takes a random seed, so two runs will produce slightly different grain patterns. Use the \`noise=...:seed=12345\` variant of the noise filter if you need a reproducible look.