Blog

Original measurements · 5 min read

Gibberish Text in AI Images vs Text Rendered by Code: Our Measurements for Carousels

For carousel slides, text rendered by code (HTML and CSS) is exact and can be contrast-checked, while text drawn by an image model can come out garbled. In our test of one model, FLUX.1 schnell on Cloudflare Workers AI, 1 of 4 images made with a no-text instruction still contained fake lettering; a rewritten prompt gave 0 of 6. We did not test any other model.

Short answer: Use an image model for the picture and code for the words. Our numbers are small, from one model and September 2026, so they show a failure mode that exists, not a rate for AI image models in general.
Rendered text means words drawn by code as real text in a chosen font and colour, as opposed to words an image model paints as pixels inside a picture.

What did we measure?

TestResultSampleDate
Prompt ended with "No text, no words, no letters in the image"1 image had garbled fake lettering on a fireplace mantel4 images2026-09-19
Same scene after rewriting the prompt to ban text-prone nouns and surfacesNo fake lettering6 images2026-09-20
Detect fake lettering automatically: edge-structure heuristicThe one positive scored at or below the clean images at every grid setting, so no threshold could work1 positive, 6 clean images2026-09-20
Detect it with Cloudflare vision modelsTwo returned an empty HTTP 200; the third (LLaVA) answered yes for everything, including a plain ocean photo1 positive, 6 clean, plus ocean and rain stills2026-09-20
Hold a mascot identity with a seed valueThe endpoint rejected seed with HTTP 400; three poses of a "friendly robot" gave three different robots3 poses2026-09-28
Hold the background colourIt came back mint for one pose and grey for the next3 poses2026-09-28

All of these are one model (FLUX.1 schnell) on one provider, so read them as a documented failure mode. The 1-in-4 figure has a wide margin of error.

What did we measure for text rendered by code?

MeasurementResultDate
Render time, HTML with Playwright vs ffmpeg drawtextAbout 279 ms vs about 66 ms per slide; 500 five-slide posts in about 12 minutes2026-09-28
Contrast of hand-invented themes against WCAG 4.5:13 of 8 failed, the worst at 2.47:12026-09-28
Shipped themes12 themes, each at or above 4.5:1, enforced when the code loads2026-09-28
Text over a photo backdropA global brightness percentile missed a lit lamp; measuring the brightest 8x8 block moved the bright-area reading from 0.115 to 0.413 and the scrim from 0.00 to 0.492026-10-07

Code-rendered text is a known string in a known font and colour, so the words cannot drift and the contrast can be computed before publishing. That is why we use code for type and an image model, if at all, for backdrops.

Which approach fits which need?

NeedUseWhy
Exact words, numbers or brand names on a slideCode-rendered textThe string is data; nothing is invented
A photo or illustration behind the textImage model, prompted without text, plus code-rendered typeThe failure we saw was lettering inside the image
Legible text on a busy photoCode text with a measured scrimBrightness can be measured per region
Same character on every slideNot solved by a seed on the endpoint we testedSeed was rejected; identity drifted
Alt text for the slideReuse the rendered stringThe slide text already exists as data

What is the hybrid workflow, step by step?

  1. Write the slide text first, as data in a plan file.
  2. Generate backdrops with a prompt that names the scene and bans text-prone objects and surfaces; do not rely on "no text" alone.
  3. Look at every generated image; our automatic detectors failed.
  4. Render the text over the image with HTML and CSS; compute contrast, and add a scrim where a bright region sits behind the type.
  5. Export 1080x1350 slides and reuse the slide text as alt text.

Free-tier arithmetic from Cloudflare's pricing page as read on 2026-09-28: 10,000 neurons per day free, and about 57.6 neurons per 1024x1024 image at 4 steps, so roughly 173 images per day. Recheck before relying on it; Cloudflare says that on a free plan, operations beyond the allocation fail.

What do these measurements not show?

They do not show that other image models fail at text. Newer or paid models may spell far better, and we measured none of them. They also say nothing about how readers or Instagram respond to AI imagery. For policy questions see the faceless account policy checklist, and for our design findings Does Carousel Design Affect Reach?

Frequently asked questions

Can AI image models render text correctly?

Some may; we only measured FLUX.1 schnell, where a no-text instruction still left fake lettering in 1 of 4 images. We make no claim about other models.

Why render carousel text with code instead of an image model?

Code-rendered text is an exact string in a known font and colour, so wording is correct by construction and contrast can be calculated before posting.

Can AI be used to detect garbled text in generated images?

Not in our test: an edge heuristic pointed the wrong way, two vision models returned empty responses and a third said yes to every image. We review by eye.

Can you keep one AI character consistent across images?

Not with the endpoint we tested. Cloudflare's FLUX endpoint returned HTTP 400 for a seed value, and three poses of the same prompt produced three different robots.

What is a good workflow for AI backdrops and text?

Generate text-free backdrops, check them by eye, render the type with HTML and CSS, measure contrast, and add a scrim where the photo is bright.

The Content Engine researches a niche, writes post ideas and renders carousels (PNG) and reels (MP4) on your own computer. USD 67 one time, 7-day refund. It needs a paid Claude plan (Pro or higher), Node.js and FFmpeg, and we have tested it on Windows only.

See the Content Engine

Sources and our data

Keep reading

Facts last verified 2026-10-30 against the sources listed above; pages can change, so check the source before relying on a number. Results vary. No promise of views, followers or income. The Content Engine is an independent product, not made or endorsed by Meta, Instagram or Anthropic. Claude is named only as the tool it runs on.