Nodes/ComfyUI/Add Noise to Image
ComfyUI Node Runs on cloud

Add Noise to Image

Film grain as a single node

By Comfy-Org·Created 4 years ago·Updated about 2 hours ago· 129,820
Add Noise to Image
  • image
  • IMAGE
seed0
strength0.50

The fastest way to make a generated image stop looking like a generated image is a little noise. ImageAddNoise ("Add Noise to Image") slaps Gaussian noise onto finished pixels - its own search alias is literally "film grain" - and it's been in core since May 2025. It's a tiny node with exactly three inputs, and it's a reminder that some of the most useful effects in ComfyUI are the dumbest ones.

Why you'd use it

Three honest jobs:

  • Film grain for a photographic look. AI images come out sterile and clean; real photos are not. A faint dusting of grain breaks up the plastic-smooth gradients and reads as "shot on film" rather than "rendered by a diffusion model." This is the photorealism cheat code you rarely hear named.
  • Vary a batch without re-sampling. Run the same image through this node with different seeds and you get visually distinct versions - useful for A/B looks or for making a batch of near-identical frames not-quite-identical.
  • Test denoisers / kill banding. Gradients posterize in 8-bit; a whisper of noise dithers the banding away, which is the same trick game consoles used for decades.

How it works

The math is one line: image + strength * randn(...), where randn is standard Gaussian noise, clamped to [0, 1] at the end. Two controls:

  • seed (0 to 2^64) - what generates the noise. Note the little "randomize" behavior: it has control_after_generate wired up, so it'll give you a fresh seed after every run unless you lock it.
  • strength (0–1, default 0.5) - how much noise. 0 is no-op, 1 is a lot.

The output is an IMAGE the same size as the input, ready to chain into anything downstream.

The thing most people get wrong

This is pixel-space noise. It does not and will not do what adding noise to a latent does in an img2img recipe. If you're trying to set up a denoise-strength img2img pass, adding noise here is not the mechanism - that noise lives on the latent, added by the sampler, and this node sits after VAE Decode. Use this for look, not for pipelines.

Two subtler things, both visible if you read the source:

  • Same seed = same grain on every frame. The noise is generated once for the whole batch, so a video clip gets identical grain across all frames. That's good news if you hate flicker, but it means no temporal variation - real film grain shimmers, this won't.
  • Strength 0.5 is genuinely heavy. It reads as strong grain. For a film look, start around 0.02–0.05 and nudge up; the slider's default is calibrated for "noticeably grainy," not "subtle."

Getting it

Ships with ComfyUI core (since May 2025), no install - search "Add Noise" or "ImageAddNoise". Pixel-space filter, so it sits after VAE Decode, before Save.

Common gotchas

  • Clipping at both ends. Because it clamps to [0,1], heavy strength flattens blacks and whites into gray - it's not just "adding grain," it's shifting the whole tone. Keep strength low.
  • It adds noise to everything, including your subject. There's no mask here. If you want grain only on the background (the classic "subject in focus, grain everywhere else" look), you'll need to mask the blend yourself.
  • Watch out pairing it with ImageBlur. Blur-then-grain is a legit film-look chain; grain-then-blur just smears the grain into muck. Order matters.
Categoryimage/filters

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
seedINT00–18446744073709550000The random seed used for creating the noise.
strengthFLOAT0.500–1

Outputs (1)

NameTypeDescription
IMAGEIMAGE