Your portrait comes out with skin so smooth it looks plastic — no pores, no subtle redness, no peach fuzz, no micro-shadows. It reads as either CGI or as if someone abused a beauty filter. This is one of the most distinctive AI-image tells and the biggest reason “AI photos” still feel uncanny. The cause is a combination of three things: most photo training data is already retouched, face-restore models like CodeFormer/GFPGAN aggressively smooth by default, and “beautiful” / “perfect skin” in prompts pushes the model toward the smoothest looks in its training set.
The fix is to actively prompt for skin texture, dial down face-restore weight to ~0.3, and add film grain in post or via prompt.
Common causes
Ordered by hit rate, highest first.
1. Face-restore weight too high
CodeFormer at weight 1.0 and GFPGAN at weight 1.0 will smooth skin to plastic every time. They were trained to maximize “face similarity” on a dataset of already-retouched magazine photos, so they push toward the same look.
How to spot it: check your Automatic1111 / Forge / ComfyUI workflow. If CodeFormer or GFPGAN is set above 0.5, that is likely your problem.
2. “Perfect skin” or “flawless skin” in prompt
Words like flawless skin, perfect skin, smooth skin, beautiful complexion, airbrushed, model skin all push toward the plastic look. The training data labels these descriptors on heavily retouched images.
How to spot it: search prompt for any “perfect”/“flawless”/“smooth”/“airbrushed” near “skin.”
3. Photo-realistic LoRA with smoothing bias
Many popular photoreal LoRAs (RealVision, JuggernautXL, EpicRealism in some variants) were trained on retouched stock-photo datasets. They bias toward the same smoothed look.
How to spot it: same prompt without the LoRA → texture comes back? LoRA bias confirmed.
4. Beauty filter language
Words like Instagram model, beauty shot, magazine cover, model portrait all push toward retouched-skin aesthetics.
How to spot it: any social/magazine vocabulary near the subject.
5. No grain or texture cues in prompt
Real photos have film grain or sensor noise. AI defaults produce clean output. Without explicit “grain” cues, the model has no reason to add micro-texture.
How to spot it: prompt mentions no grain, no film stock, no ISO, no analog.
Shortest path to fix
Step 1: Lower face-restore weights drastically
Open your workflow and set:
CodeFormer weight: 0.3 (or disabled)
GFPGAN weight: 0.3 (or disabled)
ADetailer denoise: 0.30 (was 0.45)
If you cannot disable face-restore (some workflows need it for eye fixing), keep weight at 0.3 so it only corrects glaring asymmetry without smoothing texture.
Step 2: Prompt for explicit skin texture
Add to positive prompt:
(skin pores:1.1), (natural skin texture:1.2), (visible peach fuzz:1.0),
slight skin imperfections, fine wrinkles, subtle moles, natural micro-shadows,
(realistic skin detail:1.15), unretouched photograph, no filter
The colon-weight values keep these terms loud enough to override the smoothing bias.
Step 3: Add film grain and analog cues
(film grain:0.7), Kodak Portra 400, 35mm film, slight noise,
ISO 800, analog photography, slightly grainy
Film stocks like Kodak Portra 400, Fujifilm Pro 400H, Cinestill 800T, and Ilford HP5 all carry built-in grain associations in training data. Pick one and use it consistently.
Step 4: Negative-prompt the plastic look (SD-family)
Add to negative prompt:
plastic skin, airbrushed, overly smooth, smooth skin, perfect skin,
flawless skin, beauty filter, retouched, doll-like skin, CGI skin,
3d render skin, wax figure, mannequin skin, no pores
This actively repels the smoothing bias. Keep weights normal — these are strong enough at 1.0.
Step 5: If still too smooth, add grain in post
Open the output in any image editor and apply:
Photoshop: Filter > Noise > Add Noise, Gaussian, 1.5% to 2.5%, Monochromatic
Affinity: Filters > Noise > Add Noise, 2% Gaussian
Lightroom: Detail > Grain, Amount 25, Size 25, Roughness 50
Post-grain rescues a render that’s almost-good without re-running the full pipeline.
Prevention
- Default CodeFormer / GFPGAN to 0.3 in your global settings, only raise per-image when needed
- Save a “skin texture” preset block:
(skin pores:1.1), (natural skin texture:1.2), (film grain:0.6)and append it to every portrait prompt - Avoid the words
flawless,perfect,smooth,airbrushedin your portrait prompts entirely - For commercial portraits, render at 1.5x final resolution then downscale — downscaling preserves grain better than upscaling
- Build a comparison sheet of CodeFormer 0.2 / 0.4 / 0.6 / 0.8 / 1.0 for your favorite checkpoint so you know exactly where the smoothing kicks in