Add Film Grain to an Image

Pick an image and an amount — analog film grain is applied in your browser, nothing is uploaded.

Try:
Grained image

Add film grain to a photo, in your browser

Pick an image and a grain amount — analog film grain is overlaid with ffmpeg, entirely in your browser. Film grain is the fine speckle of silver-halide photographic film; a touch of it makes a clean digital photo feel organic and cinematic, hides banding in smooth gradients, and gives a vintage or 35mm mood. The friendly Grain amount (0–100) maps directly onto ffmpeg's noise strength — 20 (the default) is a subtle film-like texture, 50+ is heavy, pushed-film grain.

Leave Monochrome grain checked (the default) for neutral gray grain that varies only brightness — the classic black-and-white film look that stays natural over color photos. Uncheck it for colored grain, where each RGB channel is speckled independently, the look of pushed high-ISO color film.

Worked example

Upload portrait.jpg and leave Grain amount at 20 with Monochrome grain checked — the result keeps the exact same dimensions and the grain reads as neutral gray speckle. In numbers: on a plain mid-gray test image (luma 126), monochrome amount 20 leaves the average brightness unchanged while spreading individual pixels to roughly luma 118–133, and the color channels stay equal (still neutral gray) — grain, no color shift. At amount 60 the same pixels spread much wider (about luma 96–155), a heavy grain. If you uncheck Monochrome grain, the red, green and blue channels drift apart per pixel, so the speckle picks up color.

Picking an amount

Limits and edge cases

FAQ

What grain amount should I use?

Start with the default 20 — it adds a natural film texture that most photos carry well. Drop to 5–15 if you only want to break up banding in skies or gradients, and push to 40–70 for a deliberately grainy, pushed-film or vintage look. 80–100 is very heavy, stylised grain that reads as lo-fi rather than photographic.

What's the difference between monochrome and colored grain?

Monochrome grain (the default) varies only the brightness of each pixel, so the speckle is neutral gray — this is how most real black-and-white and even color film grain looks, and it stays natural over any photo. Colored grain speckles the red, green and blue channels independently, so the noise picks up random color — the look of heavily pushed high-ISO color film. Uncheck Monochrome grain to switch to the colored variant.

Does adding grain crop or resize my image?

No. The output has exactly the same width and height as the input — grain only changes pixel color, it never crops or scales. If you want to resize or crop as well, run the image through the image-resize or image-crop tool.

Can I download the result in a different format?

Yes — set Output format to png, jpg or webp to convert while the grain is applied; keep (the default) preserves the input format. JPG conversion uses a high-quality setting so compression doesn't smear the grain, and converting an animated GIF keeps its first frame only.

Is my photo uploaded anywhere?

No. The page downloads an ffmpeg WebAssembly build once and then processes your file locally in the browser tab — the image never leaves your device.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool image-film-grain 'url=https://example.com/input' 'amount=20' 'monochrome=true' 'format=keep'

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/image-film-grain/?url=https://example.com/input&amount=20&monochrome=true&format=keep

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.