FL Image Add Noise
Add controllable grain to break the plastic look
- image
- IMAGE
AI images have a tell: they're too clean. Skin looks like plastic, gradients are glassy, everything has that airbrushed sheen that screams "generated." A little noise fights that. FL_ImageAddNoise adds controllable Gaussian noise to an image, seeded so it's reproducible, and it's a small but genuinely useful tool for making a render read as a photograph instead of a CGI still.
There are two ways people use it. The obvious one is a final grain pass - a touch of noise over the finished image, the way film grain gets added in photo editing, to knock back the digital smoothness. The subtler, more powerful one is feeding a lightly-noised image back into img2img at low denoise: the noise gives the sampler texture to latch onto, and it comes back with organic detail where there was plastic before. That second trick is a known move in the photorealism playbook for beating the over-smooth look.
The inputs and output
Refreshingly short:
image(IMAGE) - what you're adding noise to.strength(0.0–1.0, default 0.5) - how much noise. This is the whole game. For a grain finish you want it low - 0.05 to 0.2 is plenty, and 0.5 is already heavy. For breaking up a plastic surface before an img2img pass you can go a bit higher. Above ~0.5 it starts looking like static, not grain.seed- makes the noise reproducible. Same seed, same noise pattern; change it to reroll the grain. Handy when you're matching noise across a set of frames or want the exact same result twice.
Output is a single IMAGE - your input with the noise applied, clipped back to a valid range so nothing blows out.
Installing it
Part of ComfyUI_Fill-Nodes. ComfyUI Manager: search Fill-Nodes, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes
then restart ComfyUI. No downloads - it's a quick tensor op.
How to actually get a good result
The mistake is treating strength like a normal 0–1 slider and parking it at 0.5. Start much lower. Real film grain is subtle; you should have to look for it. If you're using it as the img2img texture trick, the recipe is: add a modest amount of noise, run a low-denoise pass (~0.3–0.45) with your prompt, and the sampler converts the noise into believable surface detail - pores, fabric weave, sensor grain - instead of the airbrushed default. One thing this node doesn't do: it applies uniform Gaussian noise across the whole image, so it won't respect a mask or vary by region. If you need grain only in some areas, composite it in separately. For the common "make it look less rendered" job, though, a low strength here is one of the cheapest wins there is.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| seed | INT | 00–18446744073709550000 | The random seed used for creating the noise. |
| strength | FLOAT | 0.500–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |