Image Film Grain
The post-process that makes AI images look shot, not rendered
One of the quiet giveaways of an AI image is that it's too clean - surfaces are smooth in a way real photographs never are. Image Film Grain adds a layer of grain on top of your generated image, and that small bit of texture does an outsized amount of work toward making the result read as captured rather than rendered. The WAS README description is just "Apply film grain to a image," but the photorealism playbook explains why it punches above its weight: "adding subtle noise in post makes images look captured rather than generated."
This is a finishing move. You run it after generation, at the very end of your workflow, as one of the last things before you save. It sits alongside the other analog-emulation tricks - chromatic aberration, subtle lens distortion, vignetting - that the community leans on to fake the imperfections of real cameras.
How it works
It overlays noise onto the image's pixels, mimicking the random silver-halide grain of photographic film. Because the grain is applied uniformly and at fine scale, it breaks up the unnaturally smooth gradients that make AI output feel plastic, without meaningfully changing the content. The result is an image your eye reads as having been through a physical process. WAS's suite is, as the ecosystem notes describe it, exactly this kind of "large collection of image processing utilities" for post steps core ComfyUI doesn't include, and film grain is one of the most-reached-for.
The inputs and outputs that matter
- The image in - your finished generation.
- A grain strength / amount - how heavy the grain is. This is the knob that matters, and the whole game is restraint: the photorealism advice is "subtle." A little sells realism; a lot looks like a deliberate vintage filter.
- The grained image out - wire it straight to your save node.
I'm describing the controls from the node's job and the photorealism guidance rather than a formal schema, so I won't invent exact widget names - but strength is the one you'll actually touch.
How to install it
Part of the WAS Node Suite:
- ComfyUI Manager: search was-node-suite-comfyui, install, restart.
- Manually:
cd ComfyUI/custom_nodes && git clone https://github.com/WASasquatch/was-node-suite-comfyui/, thenpip install -r requirements.txtagainst your ComfyUI Python, and restart.
Pure pixel filter - no model download, no heavy dependency.
Common issues
The number-one mistake is overdoing it. Crank the grain and your image stops looking like film and starts looking like a noisy JPEG - heavy grain reads as an artifact, not an aesthetic. Start low and add. If viewers notice the grain, it's probably too much; the effect works best when it registers subconsciously.
Second: apply it last, at full resolution. If you add grain and then upscale, the upscaler smears and resamples the grain into something mushy, and you lose the crisp fine texture that was the whole point. Grain also doesn't survive aggressive re-compression well, so make it one of the final steps before the save, after any upscaling or resizing.
One more: grain interacts with other film effects. Stack it with chromatic aberration and a vignette and a little grain goes a long way - dial each one back when you're combining them, or the "analog" look tips over into "heavily filtered."
And the pack caveat: WAS Node Suite has been retired since December 2023 - heavily used, unmaintained. If a ComfyUI update makes every WAS node vanish with an "Import Failed", that's suite-level dependency drift, not this node. Re-run requirements.txt against the correct Python environment (or the bundled install.bat) and restart.
Inputs (0)
No inputs
Outputs (0)
No outputs