Skip to content
Writing
AI7 min read

Never let the model render the text

Image models are good at pictures and unreliable at typography. Splitting the two made our branding consistent by construction — and made misspellings impossible.

Generating an image with words in it is the most common way teams use image models, and it's the use case those models handle worst. Not because the text is always wrong — it's often fine — but because it's inconsistent, and inconsistency is the specific thing branding cannot tolerate.

Ask a model for the same headline treatment fifty times and you get fifty typefaces, weights, and positions. Individually acceptable, collectively incoherent. Fifty pieces of collateral that don't read as one company.

There's a worse failure underneath it: eventually one comes back with a misspelled word, and it goes live because nobody proofreads an image.

Split the job in two

We stopped asking the model for finished artwork. Now the model generates only the illustration — and the prompt contains an explicit compositional instruction: the entire left 55 percent of the frame must be empty.

A small local script then composites the typography into that reserved space at a fixed size, colour, and stroke, using an installed font.

The results are qualitatively different from prompt-engineering your way to better text:

  • Branding is identical by construction, not by luck. The type is drawn by the same code every time, so there is nothing to drift.
  • Spelling errors become impossible. The words come from a string in a config file that a human wrote and can read.
  • Re-wording is free and instant. Changing the headline doesn't require regenerating anything, which means testing five headline variants costs nothing.
  • The expensive part is cached. Illustration generation is the slow, metered step; text is a local render measured in milliseconds.

That fourth point quietly changes what's possible. When every headline variant costs a fresh generation, you test one. When variants are free, you test as many as you want and let data pick.

Reserve the space in the prompt, not in post

The instruction that makes this work is the negative-space requirement. Without it, the model fills the frame edge to edge and your text lands on top of the subject's face.

Be blunt and quantitative about it — "the entire left 55 percent of the image must be empty background" works far better than "leave room for text on the left." Models comply with measurements more reliably than with intentions.

Test at the size people actually see

Every render also writes a second file: a thumbnail-sized preview at the true dimensions the image will occupy in a mobile feed.

Reviewing a large image on a large monitor tells you almost nothing about whether it works, because that isn't how anyone will encounter it. Shrunk to feed size, the honest answer usually arrives immediately: too many words.

If the words don't read at feed size, they don't read at all. The fix is fewer words, never a bigger font.

Our template settled on a hard cap — four words, two lines maximum, one accent colour, subject on the right, type on the left. Constraints that tight feel restrictive for about a week and then start doing your design work for you.

Where this generalizes

The principle is broader than thumbnails: let generative models do the part that benefits from variation, and let deterministic code do the part that requires consistency.

Illustration, texture, atmosphere, composition — variation is the value. Logos, legal text, prices, names, calls to action — variation is the defect. Most pipelines that produce embarrassing output are asking one system to do both.

We build this kind of thing for a living.

Start a conversation