---
title: "Gibberish Text in AI Images vs Text Rendered by Code: Our Measurements for Carousels"
url: "https://content-engine-emh.pages.dev/blog/ai-image-models-vs-rendered-text-for-carousels/"
markdown_url: "https://content-engine-emh.pages.dev/blog/ai-image-models-vs-rendered-text-for-carousels/index.md"
published: 2026-10-30
updated: 2026-10-30
summary: "Our measured comparison for carousels: FLUX.1 schnell put fake lettering in 1 of 4 images despite a no-text prompt; code-rendered text is exact and contrast-checkable. One model, small samples, dated."
site: "The Content Engine Blog"
---

*Original measurements · 5 min read*

By [The Content Engine](https://content-engine-emh.pages.dev/) (organization). Written and reviewed by the Content Engine editorial team. Published 2026-10-30 · Last reviewed 2026-10-30

# 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?

| Test | Result | Sample | Date |
| --- | --- | --- | --- |
| Prompt ended with "No text, no words, no letters in the image" | 1 image had garbled fake lettering on a fireplace mantel | 4 images | 2026-09-19 |
| Same scene after rewriting the prompt to ban text-prone nouns and surfaces | No fake lettering | 6 images | 2026-09-20 |
| Detect fake lettering automatically: edge-structure heuristic | The one positive scored at or below the clean images at every grid setting, so no threshold could work | 1 positive, 6 clean images | 2026-09-20 |
| Detect it with Cloudflare vision models | Two returned an empty HTTP 200; the third (LLaVA) answered yes for everything, including a plain ocean photo | 1 positive, 6 clean, plus ocean and rain stills | 2026-09-20 |
| Hold a mascot identity with a seed value | The endpoint rejected `seed` with HTTP 400; three poses of a "friendly robot" gave three different robots | 3 poses | 2026-09-28 |
| Hold the background colour | It came back mint for one pose and grey for the next | 3 poses | 2026-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?

| Measurement | Result | Date |
| --- | --- | --- |
| Render time, HTML with Playwright vs ffmpeg drawtext | About 279 ms vs about 66 ms per slide; 500 five-slide posts in about 12 minutes | 2026-09-28 |
| Contrast of hand-invented themes against WCAG 4.5:1 | 3 of 8 failed, the worst at 2.47:1 | 2026-09-28 |
| Shipped themes | 12 themes, each at or above 4.5:1, enforced when the code loads | 2026-09-28 |
| Text over a photo backdrop | A 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.49 | 2026-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?

| Need | Use | Why |
| --- | --- | --- |
| Exact words, numbers or brand names on a slide | Code-rendered text | The string is data; nothing is invented |
| A photo or illustration behind the text | Image model, prompted without text, plus code-rendered type | The failure we saw was lettering inside the image |
| Legible text on a busy photo | Code text with a measured scrim | Brightness can be measured per region |
| Same character on every slide | Not solved by a seed on the endpoint we tested | Seed was rejected; identity drifted |
| Alt text for the slide | Reuse the rendered string | The 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](https://content-engine-emh.pages.dev/blog/faceless-instagram-account-policy-and-disclosure-checklist/), and for our design findings [Does Carousel Design Affect Reach?](https://content-engine-emh.pages.dev/blog/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.

## Sources and our data

- [Cloudflare Workers AI pricing](https://developers.cloudflare.com/workers-ai/platform/pricing/) — read 2026-09-28 (page stamped Sep 17, 2026); not re-opened for this post, so recheck
- Our own data: FLUX prompt tests 2026-09-19 and 2026-09-20; detector tests 2026-09-20; mascot tests 2026-09-28; rendering and contrast measurements 2026-09-28; photo-slide scrim measurement 2026-10-07. Small samples, one model, one provider.

## Keep reading

- [Canva Alternative for Batch Carousels: Render From a Plan](https://content-engine-emh.pages.dev/blog/canva-alternative-for-batch-carousels/): When rendering from a plan beats Canva, when it does not, and our PPTX import test.
- [How to Make Instagram Carousels With Claude](https://content-engine-emh.pages.dev/blog/make-instagram-carousels-with-claude/): Claude writes one idea per slide, code renders the slides, you check every frame.
- [Does Carousel Design Affect Reach? We Tested Nine Variables](https://content-engine-emh.pages.dev/blog/does-carousel-design-affect-reach/): Nine design variables tested on 70 posts: none significant.

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.
