The quickest fix for grainy AI output is to raise steps to 28 or 30 and switch from an ancestral sampler (Euler a, DPM++ SDE) to a converging one like DPM++ 2M Karras or UniPC, then confirm your VAE is loaded. Undissolved latent noise is the cause. If you would rather not tune, a clean hosted generator like AI Nudez outputs finished images.
Your image looks like it was shot at ISO 12800: speckled, dithered, colored dots crawling across skin and every flat area. That grain is leftover noise the sampler never finished removing, or noise that something in the pipeline added back after the fact. It is one of the most fixable defects in the whole workflow once you know which knob is responsible, and unlike some problems it usually has a single clear cause rather than a tangle of them.
This guide is for adults 18+ and all example characters are fictional adults, not real people or real likenesses.
Grain has a couple of distinct looks worth telling apart. Fine monochrome speckle over the entire frame usually means the denoise did not finish. Colored dots and a dithered, almost rainbow static, especially in smooth areas like a cheek or a wall, usually points at the VAE. Knowing which one you have tells you which fix to reach for first, so glance at the flat regions of your image before you start changing settings.
Why grainy noise happens
Diffusion starts from pure noise and removes it step by step until an image emerges. Grain means the process stopped early or something reintroduced noise after the fact.
Too few steps. This is the number one cause. At 8 or 12 steps a non-turbo model has not finished denoising, so raw latent speckle survives straight into the final image. The sampler simply ran out of steps before it could resolve the last of the noise into detail. More steps means a more complete denoise and a cleaner result.
An ancestral or SDE sampler. Euler a, DPM++ 2S a and DPM++ SDE inject a small amount of fresh noise at every step and never fully converge, so a faint grain can persist no matter how many steps you add. Converging samplers such as DPM++ 2M Karras and UniPC settle down to a stable, clean result instead of endlessly re-noising, which is exactly what you want for smooth output.
A missing or broken VAE. The VAE decodes the latent into visible pixels. If it is missing, mismatched to your checkpoint, or corrupted, you get colored speckle and dithering across the whole frame that no amount of extra steps will fix. Loading the correct VAE removes it instantly, which is why this is worth checking early.
Turbo or LCM run at the wrong settings. Fast models expect low steps and low CFG. Run a turbo checkpoint at 30 steps and high CFG and it grains and burns; run a normal model at 6 steps and it stays noisy because it never finished. Matching the model to its intended range matters more than most people realize.
Upscaler or hires denoise too low. An upscale pass at denoise 0.1 does not clean the tile, it just enlarges whatever noise is already there, so the grain gets bigger and more obvious. A slightly higher hires denoise cleans as it enlarges.
CFG too high or a low-res base. Very high CFG amplifies speckle along with everything else, and a tiny base image has less real signal relative to the noise, so any grain reads louder against it.

How to fix grainy noise
Cheapest and fastest changes first. The first three steps clear the overwhelming majority of grain.
1. Raise your step count
For a standard, non-turbo model, use 20 to 30 steps. This alone clears most grain because the denoise actually gets to finish. Do not jump to 80 steps, that wastes time and rarely helps once the sampler has converged. If your image is speckled at 12 steps, bumping to 28 is very often the entire fix. The CFG and sampler settings guide explains the relationship between step count and sampler choice in more depth.
2. Switch to a converging sampler
Move from Euler a or DPM++ SDE to DPM++ 2M Karras or UniPC. These converge to a stable image instead of adding noise on every step, so the final frame comes out clean even at moderate step counts. This pairs naturally with the step increase above, and together they solve the two most common grain causes at once.
3. Load the correct VAE
If you see colored speckle everywhere, especially in smooth areas, this is very likely your culprit. For SDXL, explicitly load sdxl-vae-fp16-fix or the VAE baked for your specific checkpoint rather than leaving it on a default that may not match. A wrong VAE is the fastest grain to fix because it is a single dropdown change that resolves the whole frame at once.
4. Add a denoising upscale pass
Run hires-fix or an upscaler such as 4x-UltraSharp at denoise around 0.35, which cleans and sharpens as it enlarges rather than magnifying the grain. The best upscalers roundup and the free upscalers list both cover models that remove noise instead of amplifying it, which is the distinction that matters for grain.
5. Use correct turbo settings if you run a fast model
For turbo or LCM checkpoints, use 4 to 8 steps and CFG 1.5 to 2.5. Matching the model to its intended operating range stops the grain that comes from over-driving a fast model with too many steps and too much guidance. For a broader tune-up across all your settings, the better results guide collects these baselines in one place.
6. Add quality tags and negate noise
Put high quality, sharp focus, clean image in the positive and film grain, noise, grainy, speckle, jpeg artifacts, dithering in the negative. Treat this as a finishing touch, not a substitute for fixing steps and VAE, since tags alone cannot rescue an image that was never fully denoised. If none of this is how you want to spend your evening, a clean hosted generator like AI Nudez outputs finished images without any of the tuning. For local sharpening once the grain is gone, see how to add detail.
Cause and fix at a glance
| Cause | Symptom | The fix |
|---|---|---|
| Too few steps | Speckle over the whole frame | Raise to 20 to 30 steps |
| Ancestral sampler | Faint crawling grain | Use DPM++ 2M Karras or UniPC |
| Missing or wrong VAE | Colored dithering everywhere | Load sdxl-vae-fp16-fix |
| Turbo at high steps | Burned grainy output | 4 to 8 steps, CFG 2 |
| Hires denoise 0.1 | Enlarged noise | Raise to 0.35 |
| CFG too high | Amplified speckle | Drop to CFG 5 |
Copy-paste settings
Checkpoint: your standard SDXL photoreal model
VAE: sdxl-vae-fp16-fix (load explicitly, do not leave on Automatic if grainy)
Sampler: DPM++ 2M Karras
Steps: 28
CFG scale: 5
Resolution: 832x1216
Hires fix: 4x-UltraSharp, denoise 0.35, upscale 1.5x
Positive add:
high quality, sharp focus, clean image, smooth gradients, detailed, adult
Negative prompt (noise-tuned):
noise, grainy, film grain, speckle, dithering, jpeg artifacts,
color noise, compression artifacts, low quality, deep fried,
child, minor, underage, loli, shota
How to diagnose which cause is yours
Grain has two main signatures and telling them apart points you straight at the fix, so look before you tinker. Open the image and study a smooth region, a cheek, a stretch of wall, a patch of sky. If you see fine monochrome speckle spread evenly, the denoise did not finish, which means too few steps or an ancestral sampler. If instead you see colored dots, a rainbow-ish dither, or blocky color static in those smooth areas, that is the VAE, and no number of extra steps will clear it until you load the right one. This one look saves you from changing the wrong setting.
From there, use a seed-locked test to confirm. Keep the seed and raise steps from wherever you are to 28: if the monochrome speckle clears, low steps was the cause. If it does not fully clear, switch the sampler to DPM++ 2M Karras on the same seed and compare, since an ancestral sampler can hold grain even at high step counts. For colored dithering, simply select the correct VAE and rerun the same seed, the difference is immediate and unmistakable. If you are on a turbo or LCM model, check whether your steps and CFG match its intended range before anything else, because a fast model driven at normal-model settings grains no matter what else you do. Diagnosing first means you fix the actual cause on the first try instead of cycling through unrelated settings.

Preventing grainy noise next time
Prevention is mostly about sane defaults that finish the denoise every time. Set a baseline of 28 to 30 steps on a converging sampler for standard models, and save separate turbo settings, 4 to 8 steps at low CFG, as a distinct preset so you never mix the two up. The most common recurring grain problem is a forgotten VAE, so make loading the correct VAE part of your model-loading routine: when you switch checkpoints, switch the VAE with it, and do not leave the setting on a generic default that may not match.
Build a clean finishing pass into your standard workflow. A hires-fix or upscale at denoise around 0.35 with a noise-aware model such as 4x-UltraSharp cleans as it enlarges, so any faint grain that slips through the base render gets resolved on the way up rather than magnified. Keep a saved noise-tuned negative, noise, grainy, speckle, dithering, jpeg artifacts, ready to attach to any image, and keep quality tags in your default positive. If you frequently work on low-VRAM hardware where the temptation is to cut steps to save time, resist trimming below the point where the sampler converges, since the seconds you save get spent cleaning grain later. Get steps, sampler, and VAE right by default and grain becomes a rare surprise instead of a recurring chore.
A worked example
Imagine an SDXL render of a fictional adult subject that came out covered in fine speckle, worst across the skin and the background. Do not start swapping checkpoints, which is the slow path. Instead, look at a smooth patch first: the speckle is monochrome and even, which points at an unfinished denoise rather than the VAE. Check the metadata and it reads 12 steps on Euler a. That is two grain causes stacked, too few steps and an ancestral sampler, so fix both at once. Keep the seed, set steps to 28, switch the sampler to DPM++ 2M Karras, and rerun. The speckle almost always clears, because the denoise now finishes and the sampler converges instead of re-noising.
Now suppose a different image shows not monochrome speckle but colored dots and a faint rainbow dither in the flat areas. That signature is the VAE, not the steps. Keep the seed, explicitly load sdxl-vae-fp16-fix instead of whatever default was active, and rerun. The colored static disappears in a single change, which is why reading the grain type first saves so much time: the two problems look superficially similar but have completely different fixes.
For the last bit of polish, add a hires-fix or upscale pass with 4x-UltraSharp at denoise 0.35, which cleans as it enlarges so any residual grain resolves on the way up rather than being magnified. If you happen to be on a turbo checkpoint and see grain, the diagnosis flips: check that you are running 4 to 8 steps at low CFG, because a fast model driven at 28 steps and high CFG grains and burns no matter what the VAE is doing. Attach the noise-tuned negative on every attempt as a backstop. Worked in this order, read the grain type, fix steps and sampler for monochrome speckle or the VAE for colored dither, then finish with a denoising upscale, a noisy render becomes clean in one or two passes, and you stop blaming the checkpoint for what was really a settings problem.
A note on hardware and speed
Much of the grain people fight comes from cutting corners to save time on modest hardware, so it helps to think about the trade honestly. Dropping to 10 steps to speed up a batch feels efficient until you spend longer cleaning the grain afterward than the steps would have cost. On a standard model, 28 steps on a converging sampler is close to the floor for clean output, and going lower reliably reintroduces speckle. If speed genuinely matters, the right answer is a purpose-built turbo or LCM checkpoint run at its intended 4 to 8 steps and low CFG, not a normal model starved of steps. That gives you both speed and a finished denoise, whereas under-stepping a normal model gives you neither. Match the model to the step budget and grain stops being the price you pay for going fast.

Common mistakes
People often blame the checkpoint when the real problem is a missing VAE, so they swap models for an hour and still get the same speckle. Check the VAE before you touch the model. Another mistake is raising steps into the hundreds, which does nothing after the sampler has already converged and just burns time and GPU. Running a turbo model at normal-model settings guarantees grain, and running a normal model at turbo settings guarantees the same, so match the model to its range. And setting hires denoise near zero to “preserve” the image simply upscales the existing noise into something larger and more visible. When in doubt, check VAE and steps before anything else, in that order.
Verdict
Grain is unfinished or reintroduced noise, and it has a short list of causes. Raise steps to 28 to 30, use a converging sampler, and confirm the correct VAE is loaded, that trio clears almost every case on its own. Add a denoising upscale for the final bit of polish, and match turbo models to their intended step range so they never over-drive into grain. When you would rather have finished output with no setup at all, a clean hosted generator like AI Nudez is a reasonable shortcut to keep alongside your local pipeline.
Frequently asked questions
Why is my AI image grainy?
Most often the step count is too low, so the sampler never finished removing noise and raw latent speckle survives. Raise steps to 20 to 30 on a standard model and the grain clears.
Which sampler avoids grain?
Converging samplers like DPM++ 2M Karras and UniPC settle to a clean image. Ancestral samplers such as Euler a and DPM++ SDE inject noise every step and can leave a persistent grain.
Can a wrong VAE cause grain?
Yes. A missing or mismatched VAE produces colored speckle and dithering across the whole frame. Load the correct VAE, such as sdxl-vae-fp16-fix for SDXL, and it disappears immediately.
How many steps stop the noise?
For non-turbo models, 20 to 30 steps is enough to finish the denoise. Going beyond that wastes time without further reducing grain once the sampler has converged.
Why is my turbo model grainy?
You are likely running it at normal-model settings. Turbo and LCM checkpoints expect 4 to 8 steps and CFG around 2. High steps and CFG over-drive them into grain and burn.
Does upscaling remove grain?
A denoising upscale can. Run hires-fix or 4x-UltraSharp at denoise around 0.35 so it cleans while enlarging. At denoise near 0.1 it just magnifies the existing noise.
Do negative tags fix grain?
They help as a finishing touch. Adding noise, grainy, speckle and dithering to the negative nudges the result cleaner, but it does not replace fixing steps, sampler and VAE first.
Why only speckle on flat areas?
Flat regions show undissolved noise most clearly because there is no detail to hide it. That is a classic sign of too few steps or an ancestral sampler, so raise steps and switch sampler.



