Nodes/LF Nodes/Film grain
ComfyUI Node

Film grain

Give your images that 35mm texture without leaving the graph

By lucafoscili·Created 2 years ago·Updated 2 years ago· 50
Film grain
  • image
  • ui_widget
  • image
  • image_list
intensity0.50
size1.0
tintFFFFFF
soft_blendfalse

Clean AI output is almost too clean. Film grain is the classic fix - a layer of fine noise that breaks up the plastic-smooth gradients diffusion models love to produce and gives the image a photographic texture. LF_FilmGrain applies it as a post-process filter, with controls for strength, grain size, tint and blend mode, and it runs on single images or whole batches.

It sits at the end of your pipeline, after VAE decode, before the save - the classic spot for "make it look shot on film." Photorealistic work benefits the most: grain masks the slight banding and over-smoothing that give away a generated image, and it does it more convincingly than any "film simulation" filter in a photo editor, because it's happening in your actual pipeline.

How it works

Grain is additive noise, scaled and blended into the image. The four required controls do the shaping:

  • intensity (0–1, default 0.5) - the strength of the effect. Start low; a little goes a long way.
  • size (0.5–5, default 1) - the grain scale. Smaller = finer, more film-like grain; larger = chunkier, more stylized.
  • tint (hex string, default FFFFFF) - the grain color. White is neutral; a warm or cool tint nudges the whole image's mood.
  • soft_blend (boolean) - when on, uses a soft blending mode instead of plain overlay, which lays the grain in more gently on highlights.

Outputs are image (single) and image_list (the same result as a list), so it slots cleanly into either a single-image chain or a batch pipeline. The KUL_COMPARE widget even lets you preview before/after right on the node, which is a genuinely useful touch for tuning intensity.

Installing it

It's part of LF Nodes:

cd ComfyUI/custom_nodes
git clone https://github.com/lucafoscili/comfyui-lf

Restart ComfyUI, or install via ComfyUI Manager by searching LF Nodes. No model downloads - this is pure image processing, and the pack's dependencies (numpy, Pillow, opencv-python) cover it.

Gotchas

The classic beginner move is cranking intensity to 1.0 and getting a noisy mess. Grain should read as texture, not static - try 0.1–0.3 with size around 0.5–1 for a film look, and let soft_blend smooth out the worst of it. Also remember the tint is a hex string; paste FFFFFF if you want neutral and it's not already set.

Also: don't grain before other filters. Grain is a finishing touch - put it after upscaling and color work, not before, or you'll just be blurring and re-stretching the noise.

The pack note, briefly: comfyui-lf is legacy (frozen Feb 2025) and the author's active work lives in lucafoscili/lf-nodes, where the filter widgets got rebuilt on the new LF Widgets library. The frozen build works fine.

Category✨ LF Nodes/Filters

Inputs (6)

NameTypeDefaultDescription
imageIMAGEInput image tensor or a list of image tensors.
intensityFLOAT0.500–1Controls the strength of the film grain effect.
sizeFLOAT1.00.5–5Controls the size of the grain. Smaller values = finer grain.
tintSTRINGFFFFFFHexadecimal color (default is FFFFFF for no tint).
soft_blendBOOLEANfalseIf True, uses a soft blending mode for the grain.
ui_widgetoptKUL_COMPARE[object Object]

Outputs (2)

NameTypeDescription
imageIMAGE
image_listIMAGE