Why does AI art mess up the words in a picture?
Visual text rendering: the image model gets tokens, not letters, and paints each word from memory · Beginner · 5 min · tokens, training · after Diffusion (denoising image models)
AI image generators misspell text because the text encoder passes on tokens, not letters. The image model learns each token’s look from captioned pictures and paints words from memory: short common words often work, long or rare ones break.
1 Guess first
2 Look
The words you type, the IDs it gets
1 / 4You type the words for the sign:
- 6 letters“coffee”
- 8 letters“stopping”
- 9 letters“smackeroo”
- 15 letters“moneymoneymoney”
38 letters
Token IDs: CLIP BPE (Stable Diffusion 1.5’s text encoder), measured 2026-10-23
You see letters, and you want them painted on the sign exactly as typed.
The words reach the image model as token IDs, not letters, so it has to paint each word from what it remembers that ID looking like.
An image model never reads your prompt itself. A text encoder turns it into tokens, then into numbers the painter follows. A common word arrives as one ID with no letters inside. The painter learns what each ID looks like from captioned pictures, so it draws words from memory: close, with letters dropped, doubled or swapped.
4 You are the model
You are the image model. Paint each sign from what the text encoder hands you: sometimes token IDs, sometimes one token per letter.
sign 1 of 4 · you are handed token IDs only
#2453Token IDs: CLIP BPE (Stable Diffusion 1.5’s text encoder), measured 2026-10-23
You are the image model. Paint the sign from what you are handed.5 Check
Letters help. In Liu et al.’s 2022 tests, adding character-level input raised spelling on painted signs from 75% to 94% for common words, 47% to 83% for rare ones. Newer models still slip as text grows: on CVTG-2K (2025), FLUX.1 [dev] got 61% of words right with 2 text areas, 43% with 5.
So keep the words short, common and in quotes, and ask for one block of text, not five. Check every letter before you use the picture. For a long line or a rare name, make the picture without text and add the words in an editor: a real font spells every letter.
8 Say it back
9 Mission · 5 min
In Bing Image Creator, ask for “a shop sign that says "COFFEE"”, then “a shop sign that says "SMACKEROO BREAKFAST CLUB"” (a made-up name), then a poster with a full sentence of your choice. Zoom in and check every letter. Which one broke first?
Three quick ones
Drawn at random from this lesson's pool; different next time.
Done?
Go deeper
Sources
- Liu, Garrette, Saharia, Chan, Roberts, Narang, Blok, Mical, Norouzi, Constant, “Character-Aware Models Improve Visual Text Rendering” (arXiv:2212.10562, v1 2022-12-20, v2 2023-05-03, https://arxiv.org/abs/2212.10562, checked 2026-10-23). §3.1: WikiSpell samples Wiktionary words into frequency buckets, 1,000 test words per bucket. Table 1 (English, frozen encoders, exact match): T5-XXL 66% on the top 1% bucket and 65% on the bottom 50%; ByT5-XXL 98% and 98%. §3.2: “87% of words in the English Top 1% bucket are single-token for T5”. §5.1: Imagen uses the T5-XXL encoder; Stable Diffusion, DALL·E 2, Imagen and Parti all use character-blind BPE tokenizers. Table 3 error examples include “stopping → stoping” and “possible → posssible”. Conclusion: DrawText Spelling (signs, OCR via Google Cloud Vision, full-string match) improved “75% → 94% on common words and 47% → 83% on rare words” with a hybrid token- and character-level encoder
- Wu et al., “Qwen-Image Technical Report” (arXiv:2508.02324, v1 2025-08-04, https://arxiv.org/html/2508.02324v1, checked 2026-10-23), Table 8, English text rendering on CVTG-2K (2K prompts, each with 2–5 text regions), word accuracy for 2 / 5 regions: FLUX.1 [dev] 0.6089 / 0.4316, GPT Image 1 [High] 0.8779 / 0.8218
- Token splits and IDs measured on 2026-10-23 with the CLIP BPE vocabulary (https://github.com/openai/CLIP, clip/bpe_simple_vocab_16e6.txt.gz, last changed in commit 3bee281, repository main at d05afc4) and a port of clip/simple_tokenizer.py: coffee = [2453]; stopping = [10735]; possible = [3134]; smackeroo = smack[21280] er[517] oo[2822]; moneymoneymoney = money[12743] money[12743] money[2327] (end-of-word “money”); “a photo of a cat” = 320 1125 539 320 2368, matching CLIP’s published tokenization
- Stable Diffusion v1-5 model card (https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5, checked 2026-10-23): “uses a fixed, pretrained text encoder (CLIP ViT-L/14)”; Limitations: “cannot render legible text”
- The role’s other spellings (toffee, coffer, shopping, smackaroo, smakeroo, possibel), the “CELEBRAITON” poster, the mission’s sign texts and the advice to add long text in an editor are illustrative, not from a benchmark
- aifree.dev catalog, bing-image-creator (verified 2026-10-12): free image creation with a personal Microsoft account, 15 fast creations a day, then standard speed
Published Oct 23, 2026 · updated Oct 23, 2026