Broken text, six-fingered hands, melted faces in crowds, jewellery that turns into skin — these are usually discussed as separate quirks with separate explanations. They are mostly one phenomenon. The image you see was not generated at the size you see it, and almost everything follows from that.
The one fact
Diffusion does not run on pixels. It runs in a compressed latent space, typically 8× smaller per side — a 512×512 image is generated as a 64×64 latent.
A separate decoder then expands that back to pixels. So fine detail is reconstructed by the decoder, not generated by the model. Anything too small to occupy several latent pixels never really existed.
Why generation happens in miniature
Running diffusion directly on pixels is possible and ruinously expensive. Latent diffusion compresses first.
Forty-eight times less data to process at every one of twenty or fifty denoising steps. That is the difference between image generation being a consumer product and a research curiosity — the compression is not a compromise bolted on, it is what made the whole thing viable.
The cost is that the model's actual canvas is tiny. Everything it composes, it composes at 64×64.
The arithmetic of small objects
Here is where the artefacts come from. Work out how much latent space an object actually gets:
| Object in a 512px image | Output pixels | Latent pixels |
|---|---|---|
| Full-frame portrait face | ~300 | ~37 — plenty |
| Half-body subject's face | ~120 | ~15 — adequate |
| A hand at half-body distance | ~60 | ~7 — marginal |
| Background face in a crowd | ~40 | ~5 — fails |
| Text on a sign | ~20 tall | ~2 — hopeless |
| An individual finger | ~15 | ~2 — hopeless |
| Distant eyes | ~8 | ~1 — nothing |
Read that table as a prediction rather than an observation, because it predicts exactly the failure list everyone knows. Text and fingers get two latent pixels. Two values cannot encode a letterform or a knuckle. The diffusion model produces something with the right statistical texture for that region, and the decoder faithfully expands texture that has no structure underneath it.
💡 Why the results look confidently wrong rather than blurry
A blurry result would be the honest output of insufficient information. Instead you get crisp nonsense — sharp letters that spell nothing, well-defined fingers in the wrong quantity.
That is the decoder doing its job. It was trained to produce plausible, sharp, detailed pixels from latents. Given a latent encoding "text-like texture here", it renders convincing letterforms. It has no concept of spelling, and no mechanism for expressing uncertainty.
Why hands are the worst case
Hands are famous because they combine three problems at once, rather than being uniquely difficult in themselves:
- Small in frame. Rarely more than 5–8 latent pixels — right at the threshold where structure collapses.
- Highly articulated. A hand has a precise, non-negotiable structure: five digits, specific joint counts, specific proportions. Faces are also structured, but a face is usually larger in frame and its features are more forgiving of small variation.
- Enormously variable in training data. Hands appear in every conceivable pose, orientation and degree of occlusion. The model learns "hand-shaped things vary a lot", which is exactly the wrong lesson for a structure with a fixed count.
The result is a region that has hand texture, hand colouring and hand-like protrusions, with no constraint enforcing that there be five of them. Hands in close-up portraits generally come out fine — because then they have enough latent pixels.
VAE artefacts specifically
The decoder introduces its own signature, separate from the resolution problem:
| Artefact | Cause |
|---|---|
| Slight colour shift | Lossy latent round-trip |
| Faint grid or checkerboard | Upsampling in the decoder |
| Washed-out or oversaturated tones | VAE trained on a different distribution |
| Loss of very fine texture | High frequencies compressed away |
| Seams on tiled generation | Tiles decoded independently |
The VAE is a swappable component, which is why the same model with a different VAE produces visibly different colour and detail. If your outputs look consistently dull or oddly tinted across many prompts, that is a VAE symptom rather than a prompting one — the fix is a different decoder, not different words.
Artefacts that are not the latent's fault
Not everything traces back to resolution. Three other sources, worth separating so you fix the right thing:
That last one is the counterweight to "generate bigger to fix small objects". It works up to a point and then reverses — go too far beyond the training resolution and you trade mangled hands for two people where you asked for one. The usual resolution is to generate at native size and enlarge afterwards, which is covered in upscaling AI images.
⚠️ Duplicated limbs are a composition failure, not a decoder one
It is easy to lump extra arms in with extra fingers. They are different failures. Fingers fail because there is not enough latent resolution to represent them. Limbs duplicate because the model has composed the scene incoherently at low resolution — a global structure problem, not a local detail one.
The distinction matters for fixing them: more resolution helps fingers, and often makes duplication worse.
What actually helps
- Frame the thing you care about larger. The single most effective change. A portrait crop gives a face ten times the latent pixels of a full-body shot.
- Generate at the model's native resolution, then enlarge. Fighting the training size costs more than it gains.
- Regenerate small regions at full size. Inpainting a hand region as its own generation gives it the entire latent canvas — this is what dedicated face and hand fixing passes actually do.
- Do not put text in an image. Add it afterwards with a text layer. Newer models handle short words better, but "better" is not "reliable", and real typography is a solved problem.
- Moderate the CFG scale. If everything looks burnt, this is usually why.
🚨 This is a moving target
Architectures are changing in exactly the areas described here. Higher latent resolutions, different compression ratios, transformer-based backbones and improved decoders all shift the artefact profile, and newer models are visibly better at text and hands than the generation that made those failures famous.
What does not change is the underlying trade: compression is what makes generation affordable, and detail below the latent resolution is reconstructed rather than generated. Whenever a model improves at small detail, check whether the latent got bigger — usually it did, and usually generation got slower to match.
Working with generated images?
Resize, crop, convert and compress images entirely in your browser — nothing is uploaded to a server.
Open Image Resizer →Summary
- Diffusion runs at ~1/8 scale per side. A 512px image is generated as a 64×64 latent.
- Fine detail is reconstructed by the VAE decoder, not generated by the model.
- Text and fingers get ~2 latent pixels — not enough for structure, only texture.
- Results are confidently wrong, not blurry, because the decoder always renders sharp detail.
- Hands combine small size, strict structure and huge training variance.
- VAE choice affects colour and fine texture independently of the prompt.
- Duplicated limbs are a composition failure, and more resolution makes them worse.
- Frame subjects larger, generate at native size, inpaint small regions.
Frequently Asked Questions
Why does AI-generated text look like gibberish?
Because letters are fine high-frequency detail and diffusion runs in a compressed latent space around eight times smaller per side than the output. A 20-pixel-tall word occupies barely two latent pixels, so there is not enough resolution to represent letterforms — the decoder then reconstructs something with the texture of text but not the structure.
What is a VAE in image generation?
A variational autoencoder — a pair of networks that compress an image into a small latent representation and expand it back to pixels. Diffusion models generate in that compressed space because it is far cheaper, then the VAE decoder produces the final image, which is why fine detail is reconstructed rather than directly generated.
Why are hands and fingers so difficult for AI image models?
Hands combine several problems: they are usually small in frame, so they get very few latent pixels; they are highly articulated, so plausible-looking variations are structurally wrong; and training images show them in enormous positional variety. The model produces hand-textured regions without the underlying count and joint structure.
Why do faces in the background look wrong?
Same resolution problem. A face occupying 40 pixels in the output has roughly five latent pixels to work with, which cannot encode eyes, nose and mouth as distinct features. The decoder fills in face-like texture, which reads as uncanny because the structure was never there.
Does generating at higher resolution reduce artefacts?
For small objects, yes — more output pixels means more latent pixels per object, so faces and hands get enough representation to hold together. But generating far beyond a model's training resolution introduces its own problems, commonly duplicated subjects and incoherent composition.