Why can't AI spell, and how do I get readable text in an image?

Older diffusion models had no character-level representation of text, so they produced letterform-shaped texture instead of words. Current models are far better at short strings but still degrade past a few words. The workable approach is short text, explicitly quoted, on a plausible surface — or compositing real type afterwards.

Garbled text was the other classic AI tell, and unlike hands it has a clean technical explanation.

Why it happened

Classic diffusion models encode a prompt into a semantic embedding — a representation of meaning, not of characters. 'A shop sign reading BAKERY' arrives at the image model as roughly 'shop sign, bakery-ness'. The model has learned what signage looks like as visual texture: letterform-shaped marks, in rows, with the spacing and stroke weight of type. So it renders exactly that. Convincing signage made of characters that aren't letters. The model was never asked to spell, because spelling wasn't in the representation it received.

What changed is architectural. Newer models use stronger text encoders and, in several cases, autoregressive components that operate over discrete tokens — a pipeline that can carry character-level information through to the image. That's why gpt-image-2 will reliably put a short, quoted string on a poster, something no 2023 model could do at all.

Where it still breaks

SituationReliability today
One to three words, quoted, prominent in frameUsually correct
A short line on a sign, book cover, or mugOften correct, worth a couple of rolls
A full sentenceFrequently drifts — a wrong or duplicated word
A paragraph, menu, newspaper, dense UIReliably fails past the first line
Text at small scale or steep perspectiveDegrades sharply
A specific real brand's exact logo lockupApproximated, rarely exact; often refused
Non-Latin scriptsMuch weaker than Latin across all three models

How to ask

  1. 1.Put the exact string in quotes: a poster with the text "OPEN LATE" — this is a real signal to modern encoders, not folklore.
  2. 2.Say it once. Repeating the string, or mentioning it in three different clauses, invites the model to render it twice.
  3. 3.Keep it short. Every extra word compounds the failure probability.
  4. 4.Give it a surface and a scale. 'Large hand-painted lettering across the shop window' anchors where and how big; a floating unattached string does not.
  5. 5.Make the frame generous. Text needs pixels. A tight crop on the sign will outperform the same sign in a wide street scene.
  6. 6.Check every letter before you use it. Near-misses are the norm and they're easy to skim past — you read the word you expected.

For anything where the text must be exactly right — a real product, a client deliverable, anything with a brand name in it — generate the image without text and set real type over it. That is standard practice, not a compromise, and it gives you correct kerning and an actual typeface rather than an approximation of one.

The inverse problem: unwanted text

Models often add spurious signage, watermark-like marks, or gibberish captions to scenes that plausibly contain them — storefronts, packaging, screens, magazine spreads. On models with a negative prompt, 'text, watermark, signature, logo' handles most of it. Without one, describe the surfaces as blank: 'unbranded packaging', 'plain white signage', 'clean unmarked wall'. Every image published here is screened for rendered text and watermark artifacts before it goes live, which is why you won't find gibberish signage in the gallery — it's filtered, not absent.

// On this site

More on this

Other questions

← all questions