Film Science·8 min read

Film Grain vs. Digital Noise: Why They Feel Different

Grain and noise look similar at a glance but behave completely differently. This article breaks down the physics of silver halide crystals and why organic randomness is so hard to fake.

May 5, 2025

Ask a colorist — any colorist — what's the single hardest thing to replicate digitally.

Not skin tone rendering. Not highlight rolloff. Not the characteristic curve of a specific emulsion.

Grain.

It always comes back to grain. And the reason is slightly embarrassing if you're a digital engineer: the thing that makes film grain look right is that it's genuinely, physically, irreducibly random in a way that computers are terrible at generating.

Here's why.

What's Actually Inside a Roll of Film

Film emulsion is a suspension of silver halide crystals in gelatin. Billions of them, per frame. When a photon hits one of those crystals with enough energy, it triggers a chain reaction — silver ions get reduced to metallic silver, a latent image forms, development chemistry makes it permanent.

The part everyone skips over: crystal size is not uniform.

A single roll of film contains crystals that vary dramatically in size, shape, and sensitivity. This isn't a manufacturing flaw. It's a deliberate engineering choice. Larger crystals are more sensitive to light — they capture photons at lower intensities — but they resolve less spatial detail. Smaller crystals are sharper but need more light to fire. A film stock is, among other things, a carefully calibrated distribution of crystal sizes optimized for a specific balance of speed, grain character, and resolving power.

When you develop the film, the crystals that captured light get reduced to metallic silver grains. The spatial distribution of those grains across the frame is determined by which crystals got hit by photons — and photons arrive probabilistically, governed by quantum mechanics.

Real randomness. Not pseudorandom. Real.

Why Grain Looks Organic and Noise Looks Wrong

Film grain has three properties that digital noise almost never replicates correctly.

It clumps. Crystals in a gelatin suspension aren't isolated — they're in contact with their neighbors. Development chemistry spreads slightly beyond individual crystal boundaries. The resulting silver grains form clusters that are larger and more irregular than any single crystal. Visually, this means grain has spatial correlation — adjacent grains are related to each other. It flows. It breathes. It doesn't look like a pixel grid with random values.

It shimmers with color. Color film has three emulsion layers — one sensitive to red, one to green, one to blue — stacked physically on top of each other at different depths. Each layer develops independently with its own crystal distribution. The grain in the red layer is slightly different from the grain in the green layer, and both are misregistered with the blue layer because they're at different physical depths. This is why color film grain has subtle, shifting color variation. Digital noise, which adds the same statistical pattern to every color channel simultaneously, just looks flat by comparison.

It peaks in the midtones. This is the one that trips up almost every grain plugin ever made. Film grain is not worst in the shadows. In deep shadow areas, there simply aren't enough exposed crystals to form visible clusters — the image is thin. In highlights, the emulsion is so thoroughly exposed that density becomes uniform. Grain is most visible in the midtones, where you have enough exposure to form clusters but not so much that everything blends together.

Digital noise does the opposite. It's dominated by shot noise, which is worst in shadows (low signal, high relative variation) and invisible in highlights. Shadow areas on a digital sensor are where your image looks like static. Shadow areas on film look clean.

The Poisson Distribution Problem

Digital noise isn't mysterious. It's a direct consequence of how photons work.

Each photosite on a sensor counts the photons it receives during an exposure. Photon arrival is random — it follows a Poisson distribution. At ISO 800, a well-exposed photosite might collect 200 photons on average, with a variation of roughly ±14 (the square root). That's about ±7% — clean enough.

In deep shadow, the same photosite might collect 5 photons on average, with a variation of ±2.2. That's ±44%. That's the noise you're seeing. It's not the camera being bad at its job — it's the fundamental statistics of light.

The result is spatially uncorrelated noise: each pixel is statistically independent of its neighbors. No clumping. No flow. No color variation between channels. Just random values at pixel scale, worst exactly where you don't want them.

What It Actually Takes to Simulate Grain Correctly

Here's the engineering problem in plain terms: you need randomness that has structure.

Not white noise (too uniform). Not Perlin noise (too smooth). Something in between — band-limited, spatially correlated, spectrally asymmetric, density-dependent, and temporally independent. Every frame should get a completely new grain field, because each frame of film is a physically separate exposure event. Crystals have no memory of the previous frame.

That last one is easy to overlook and almost always wrong in grain plugins. Static grain that doesn't change between frames looks painted on. Film grain flickers. Not randomly — it regenerates completely, because the crystals regenerate completely, because the film is new.

Getting this right means modeling the process, not the output. Not "what does grain look like" but "what physical process produces grain and how do we replicate that process with math."


The gap between a grain filter and real film grain isn't a quality gap. It's a category gap.

One is a texture applied to an image. The other is the direct visual record of quantum events happening in silver crystals in gelatin. The latter just looks different — not better in an aesthetic sense, but more coherent, in the way that things produced by consistent physical laws always cohere in ways that approximations don't.

That coherence is what you're actually chasing when you reach for the grain slider. Knowing that doesn't make it easier to generate. But it does tell you what you're actually trying to solve.