Alt text used to do one job. Screen readers read it aloud, Google Image Search ranked on it, and that was the whole story. Multimodal models changed the math. GPT-4 with Vision shipped to ChatGPT on September 25, 2023, the API followed on November 6, 2023, and Anthropic released Claude 3 with native vision on March 4, 2024. Every major assistant now sees the pixels and reads the alt attribute side by side. When the two contradict each other, you lose trust. So the same string of text now has three audiences with overlapping but distinct expectations: a JAWS user, Googlebot-Image, and a vision-capable LLM deciding whether to cite your page.

What WCAG actually requires (and what it doesn't)

WCAG 2.2 Success Criterion 1.1.1 Non-text Content is Level A — the floor of legal conformance. The text says every non-text element presented to the user must have a text alternative that serves the equivalent purpose, with named exceptions for CAPTCHA, sensory experiences, tests, and decoration. Equivalent purpose is the part most teams miss. If an image is a chart, the alternative needs the data points the chart conveys. A filename is a documented failure mode (F30). The phrase "image of" is not in the spec and adds nothing — screen readers already announce the element as a graphic.

The regulatory weight behind 1.1.1 is heavier than most marketing teams realize. Section 508 in the United States, EN 301 549 across the European Union, and the AODA in Ontario all reference WCAG conformance directly. The European Accessibility Act enforcement window opened June 28, 2025, and pulled most B2C digital products into scope. Bad alt text is now litigation surface, not just reputation.

The 125-character "limit" is a JAWS 6 quirk

You'll see "keep alt text under 125 characters" in roughly every CMS tooltip. The number traces back to Terrill Thompson's 2005 testing of JAWS 6.0, which segmented alt text into 125-character chunks for line-by-line navigation. JAWS 6 turned twenty in 2025. The chunking behavior was never a truncation cap. One tester pasted the Declaration of Independence into an alt attribute thousands of times and JAWS read all of it.

Treat 125 as an ergonomics signal, not a rule. The real constraint is that screen reader users can't pause mid-attribute — long alt forces a restart from the top if attention slips. Aim short for buttons and icons. Allow more for charts, diagrams, and infographics where the equivalent information genuinely needs the room. The W3C does not specify a maximum.

Before and after: a product screenshot

The image is a dashboard screenshot showing a site's AI readiness score of 78/100 with three failing checks listed below.

<!-- BAD: filename, no information, fails WCAG F30 -->
<img src="dashboard.png" alt="dashboard.png">

<!-- BAD: redundant prefix, vague, contradicts what GPT-4V sees -->
<img src="dashboard.png" alt="Image of a dashboard showing some scores">

<!-- GOOD: equivalent purpose, screen-reader friendly, AI-grounded -->
<img
  src="dashboard.png"
  alt="isitready.dev dashboard for example.com showing an AI readiness score of 78/100, with failing checks for llms.txt, JSON-LD Organization schema, and image alt coverage."
>

The good version reads naturally aloud, ranks for queries about readiness scoring, and matches what a vision model extracts from the pixels. That last part matters now. When an LLM cross-references the image and sees three failing checks but your alt text says "screenshot of our app," your page reads as low-fidelity to the model.

Before and after: an editorial photo

The image shows the company's founder onstage at a conference, holding a microphone, with a slide reading "Cloudflare Workers" behind her.

<!-- BAD: SEO keyword stuffing, useless to a screen reader -->
<img src="talk.jpg" alt="cloudflare workers serverless edge compute talk conference 2025 keynote">

<!-- BAD: identifies nothing verifiable, AI sees a contradiction -->
<img src="talk.jpg" alt="A woman speaking">

<!-- GOOD: who, where, what, in one sentence -->
<img
  src="talk.jpg"
  alt="Maya Chen, CTO of Kordu, presenting on Cloudflare Workers at Render ATL 2025."
>

Notice the third version names a real person and a real event. Multimodal models can verify the slide text, the stage setting, and (with the surrounding page context) the speaker's identity. A vague alt invites the model to second-guess your authorship signals.

When alt should be empty

Decorative images get alt="" — the empty alt attribute. The HTML Living Standard and WAI-ARIA both treat empty alt as a deliberate signal that assistive tech should skip the element entirely. Omitting the attribute is different and worse: many screen readers fall back to reading the filename. Use empty alt for:

  • Spacer images, dividers, and ornamental flourishes

  • Background patterns and decorative gradients used as <img> for layout reasons

  • Icons paired with adjacent visible text that already conveys the meaning (e.g. an envelope icon next to the word "Email")

  • Author headshots in bylines where the author's name is already linked beside the image

  • Pure aesthetic photography on a marketing page where the surrounding copy carries the message

If the image conveys information not available in nearby text, it isn't decorative. CSS background images are the cleaner pattern for true ornament since they don't enter the accessibility tree at all.

Alt text vs. caption vs. figure

Alt is the text alternative — it replaces the image for users and parsers that can't render it. A caption is visible text rendered alongside the image, usually inside <figcaption>. Both can coexist, and they should say different things. The caption gives context everyone reads. The alt describes what the image actually depicts.

<figure>
  <img
    src="latency-chart.png"
    alt="Bar chart comparing p95 latency: Workers 42ms, Lambda 118ms, Cloud Run 96ms across 1000 requests."
  >
  <figcaption>
    Cold-start p95 across three serverless platforms, measured from Frankfurt over 24 hours.
  </figcaption>
</figure>

Repeating the caption in the alt wastes screen-reader time and confuses ranking signals. Google Image Search uses alt text plus surrounding text — including captions — as primary signals for image relevance, so duplication actively hurts.

The triple-purpose mental model

The new frame: every alt attribute serves a screen-reader user, an image search crawler, and a vision-capable AI grounding its answer. Write for the screen reader first. The other two are downstream beneficiaries of the same discipline. Skip the "image of" prefix. Skip the keyword stuffing. Name the things in the picture that a sighted reader would notice in the first second of looking. If a multimodal model would see something different from what you wrote, fix the alt before the model fixes its trust score for your domain.

Verify before shipping

Run isitready.dev on your canonical origin to audit alt coverage across every indexable page. The report flags missing alt attributes, filename-as-alt failures, suspiciously long descriptions, and decorative images that should be using alt="". Image accessibility is one of the cheapest WCAG wins available, and one of the highest-leverage AI grounding signals — get it right before the next crawl.