Add Grain in Finishing, Not in the Prompt
Prompted grain is baked and fights the compressor. A post stack for size, amount, and chroma you can turn down per platform, after legalizer and loudness.
If the grain is in the prompt, it is in the pixels. You cannot turn it down for a 9:16 Reels encode, you cannot keep it off the legalizer, and you cannot stop the compressor from spending its budget on noise you no longer want. Grain is a finishing layer. Write it that way.
Prompt tokens such as "35mm grain" or "ISO 800" do something. They also do it permanently, at whatever size the model felt like, with chroma mixed in, before you know the delivery.
Why prompted grain cannot be a finish
Baked grain fails three tests a finishing layer has to pass.
It does not scale. A grain structure that reads as "present" on a 1920-wide mezzanine becomes a crawling, blotchy pattern once a social encoder has spent its bits on it. The same structure is invisible on a phone if you under-do it, and is the first thing a compressor destroys if you over-do it. A prompt cannot give you two amounts.
It fights the compressor. Grain is close to random. Random is the most expensive thing in a frame to encode. H.264 and HEVC spend bitrate on it, then the platform re-encodes and smears what is left into patches. You paid for texture and delivered noise. Instagram Reels encoding is a useful reminder of how tight a social envelope is: VBR with a 25Mbps ceiling on Reels, then whatever the app does on ingest. Heavy baked grain arrives at that envelope already noisy.
It sits in the wrong place in the stack. Upscalers treat grain as noise and remove it. Grades redistribute it. Legalizers clip the peaks of it in the super-blacks and super-whites, which is exactly where you wanted texture. Loudness is an audio pass, but it is still a bounce: if grain is already baked into the only file you have, every audio correction is a re-encode of that grain. Upscaling before a prompted grain layer is how you pay for a texture pass that disappears.
The prompt can still name a stock, a lens, a shutter. Those change the picture. They are not a substitute for a grain node you can keyframe, duplicate, and turn down.
A post grain stack you can turn down
One node, on the finished, matched, correctly sized image, after the grade. Three controls matter. Everything else is taste.
| Control | Starting point | What it is matching |
|---|---|---|
| Size | Fine. Smaller than you think. | The plate's noise floor, or a digital-ISO texture if the whole piece is generated. |
| Amount | Below conscious visibility at viewing distance. | The toggle test: off looks plastic, on produces no comment. |
| Chroma | Zero, or a trace. | Real sensor noise is mostly luma. Colour speckles read as a filter. |
Weight the response toward midtones and shadows. Highlights in real footage are comparatively clean; grain that crawls on a window or a practical lamp is a tell. Soften the grain slightly so individual specks do not ring against a compressor. Monochrome. Temporal: the grain should change every frame, locked to the picture, not swim as a separate layer.
Copy this node onto every clip in the sequence. Inconsistent grain is worse than none, because the viewer registers the change at the cut even when they cannot name it. If you are cutting generated inserts against live action, the insert inherits the plate's size and amount; do not pick a 16mm preset because it looks "more filmic" on its own.
These are starting points you test, not a standard. Pause on a still at normal viewing distance on the device people will actually use. If you can point at the grain without being told it is there, it is too much. The grain, flare and vignette pass is the wider finishing recipe this node belongs to. This article is the grain layer itself, and the reason it is a layer.
Turn the same node down per destination, rather than building a new look:
- Mezzanine / broadcast / owned 1080p. Full amount, the version you approved on the monitor.
- YouTube and similar long-form encodes. A step down. Enough to keep the plastic from returning, not enough to become the first thing the encoder spends bits on.
- Reels, Shorts, TikTok. Half or less, or off. The viewing surface is small and the compression budget is the tightest you will ship into. A correct grain pass is often invisible there anyway; an incorrect one becomes blotch.
Save the full-amount node on the mezzanine. Do not bake the social amount into the only master you keep. The whole point of a finishing layer is that you still have a dimmer.
Why grain sits after the legalizer and the loudness pass
Order is the defect that looks like a settings problem.
After the grade. A grade on top of grain re-contrasts the noise. Shadows pick up more grain than you designed; a lift buries it. You end up chasing amount per shot. Grade the picture, match the shots, then grain the result.
After the legalizer. A legalizer clips or compresses luma and chroma that sit outside the legal range. Grain is high-frequency variation. If it is already on the picture, the legalizer flattens it in the toe and the highlights, which is where a noise floor is supposed to live. You wanted texture in the blacks; you get a smooth clip. Legalize the graded picture so Rec.709 16–235 and chroma are in range, confirm the look has not gone grey, then add grain. A conservative luma-only grain on an already-legal image rarely throws a QC fail, because the amplitude is small. If a later QC pass still flags a few pixels, a second, gentler legalizer with more knee is cheaper than redoing the grain.
After the loudness pass. Loudness is audio: EBU R 128 for a documented broadcast target, true peak at or below −1 dBTP. Grain does not change LUFS. It changes the picture you would have to re-encode if you bounce a mixed file and then decide the grain is wrong. Do the picture grade and the legalizer, mix and loudness-correct the audio against the R128 target you actually mean, then apply grain as the last picture layer before you encode. One bounce. No second generation of compression on a texture you are about to change.
The stack, written as a checklist:
- Conform rate and resolution. Clean, deflicker, upscale if you owe an upscale.
- Grade and shot-match.
- Legalizer. Stills compare so the look survived.
- Loudness pass on the audio.
- Grain node. Size, amount, chroma. Same node on every clip.
- Encode per destination, turning the node down for social.
Skip a step and you will do it twice. Grain before step 3 is the expensive version of that.
Judge it on the export, at the size it will play
The Versely editor will not be the grain tool. It is an EDL-based timeline for assembly: clips, transitions, text, music, voiceover, overlays, captions. Build the cut there, then finish texture in the grading app that actually has a grain node with size, amount, and chroma.
The editor's preview: true pass renders at 480p and carries a short per-user cooldown. At 480p a correct grain pass is invisible and a heavy one can still look acceptable, which is the opposite of useful. Use the preview to check timing. Judge grain on the final export. A single charge applies to that export, regardless of clip count. How previews and the final export are charged is the billing note; the craft note is that 480p lies about texture.
Check the social encode on a phone. Check the mezzanine on the monitor you graded on. If the phone encode has turned the grain into crawling patches, you did not under-encode. You over-grained for that destination. Turn the node down and encode again from the mezzanine. That is the move prompted grain cannot make.
Grain does not repair content. A six-fingered hand under a film stock is a six-fingered hand. Anatomy, prompt misses, and morphing objects survive any amount of texture, which is the same limit a grade runs into. Reach for grain to hide those and you will spend an hour discovering it.
FAQ
Can I prompt "fine grain" and then add a lighter node on top?
You can. You now have two grain structures, at two sizes, fighting the compressor together. If the model baked coarse chroma noise into the highlights, a finishing node will not remove it without a denoise, and a denoise on generated footage often smears the detail you actually wanted. Leave grain out of the prompt. Add one node.
Does luma-only grain look fake next to real camera noise?
Real sensors have some chroma noise, especially at higher ISO. A trace of chroma can be right if you are matching a specific plate. A preset that defaults to coloured grain is almost always too much. Start at zero chroma, add a little if a side-by-side against the plate looks too "clean grey," and stop the moment the noise has a tint you can name.
Should I grain before or after captions and burned-in type?
After the picture is grained, before or with the graphics, depending on whether the type should feel like it was shot or like it was designed. Burned-in captions usually sit on top, un-grained, so the letterforms stay sharp. A lower-third that is meant to live in the world of the picture can take a whisper of the same node. Do not grain the type so heavily that the encoder tears the edges.
What if the only file I have already has prompted grain in it?
Treat it as baked. You can denoise and re-grain, and you will pay in softening. You can leave it and turn additional grain off for social. You cannot "turn down" pixels that are already in the RGB. Next time, keep a clean mezzanine.