F30: When Alt Text Isn't Actually Alt Text

Jamie
digitalwcagalt textscreen readerscontent managementautomated testing

Jamie · AI Research Engine

Analytical lens: Strategic Alignment

Small business, Title III, retail/hospitality

AI-assisted · Source-linked · Editorially reviewed · Methodology

Trust note

This article was drafted with AI assistance, reviewed against accessibility.chat editorial standards, and should be treated as research and education rather than legal advice. We prioritize primary sources and correct material errors.

Hands touching braille text, focusing on tactile reading and accessibility for visually impaired individuals.
Photo by Yan Krukau on Pexels

2003: screen readers begin gaining mainstream adoption. 2008: WCAG 2.0 codifies the requirement for meaningful text alternatives. 2023: WCAG 2.2 publishes, and F30 — the failure document covering fake alt text — remains unchanged. Twenty years of the same error, still appearing in production code every day.

The pattern is stubborn because it looks like compliance. The alt attribute is present. Automated scanners often pass it. But WCAG Failure F30 (opens in new window) draws a precise line: if the text alternative cannot substitute for the non-text content without losing information or function, it is not an alternative — it's a placeholder wearing a compliance costume.

The Failure

F30 (opens in new window) applies to all technologies and directly fails two success criteria: 1.1.1 Non-text Content (opens in new window) and 1.2.1 Audio-only and Video-only (Prerecorded) (opens in new window). The W3C document identifies three recurring failure patterns:

Placeholder strings — text dropped in as a formality:

HTML
<!-- These all fail F30 -->
<img src="hero.jpg" alt=" ">
<img src="chart.png" alt="image">
<img src="photo.jpg" alt="spacer">
<img src="diagram.svg" alt="picture">

Programming references — internal identifiers that mean nothing to users:

HTML
<!-- These all fail F30 -->
<img src="intro.jpg" alt="picture 1">
<img src="data.png" alt="0001">
<img src="slide.jpg" alt="Intro#2">

Raw filenames — paths exposed directly as alt values:

HTML
<!-- These all fail F30 -->
<img src="Oct.jpg" alt="Oct.jpg">
<img src="Chart.jpg" alt="Chart.jpg">
<img src="sales/oct/top3.jpg" alt="sales\oct\top3.jpg">

The unifying problem: none of these can replace the image for a user who cannot see it. The W3C's test is elegant in its simplicity — remove the image and substitute the alt text. Does the page still communicate the same information? If not, F30 applies.

Why This Matters

For a screen reader user, alt="Oct.jpg" announces "Oct dot jay pee gee" — a string that communicates the file format and nothing else. If that image is a quarterly sales chart showing a 40% revenue increase, the user receives zero of that information. They're not getting a degraded experience. They're getting a different experience entirely, one that excludes them from content their sighted colleagues access without friction.

The 1.2.1 dimension is less discussed but equally consequential. A prerecorded audio clip labeled alt="0001" or a video described only as "Intro#1" leaves users with no basis for deciding whether the content is relevant to their needs before committing time to it. That's not a minor inconvenience — it's a structural barrier to equal participation.

F30 failures are particularly common in CMS-driven environments where content editors upload images without alt text, and the system automatically populates the field with the filename. This is a workflow problem disguised as a content problem. The failure happens upstream, in how publishing tools are configured — not just in the final HTML.

This is also where automated testing reaches its limits. Our research paper Beyond Detection: Why Context Separates Automated Testing from Manual Audits documents that automated tools catch at most 37% of accessibility failures. F30 is a prime example of why: a scanner can confirm an alt attribute exists, but it cannot evaluate whether "Chart.jpg" meaningfully describes a complex data visualization. That judgment requires human review.

The Fix

The corrected pattern requires alt text that conveys the information or function the image provides — not what the image is called, but what it communicates:

HTML
<!-- Informational image -->
<img
src="sales/oct/top3.jpg"
alt="Bar chart showing October's top 3 products by revenue: Product A ($2.1M), Product B ($1.8M), Product C ($1.4M)">
<!-- Functional image (linked) -->
<img
src="search-icon.png"
alt="Search">
<!-- Decorative image (genuinely decorative) -->
<img
src="divider.jpg"
alt="">
<!-- Complex image with long description -->
<img
src="org-chart.png"
alt="Organizational chart — see text description below"
aria-describedby="org-chart-description">
<div id="org-chart-description">...</div>

Note the empty alt="" for decorative images — this is intentional and correct. An empty string tells assistive technology to skip the image entirely. A space or the word "spacer" does not reliably produce that behavior across all screen reader and browser combinations, which is why those patterns appear explicitly in F30's failure list.

For audio-only and video-only content under 1.2.1, the text alternative must describe what the content contains at a level that allows users to understand its purpose and decide whether to engage with it.

Applying This

Catching F30 in a real workflow requires layered approaches:

Detection MethodWhat It CatchesWhat It Misses
Automated scannerMissing alt attribute entirelyPlaceholder text, filenames, numbering
Regex/linting ruleKnown bad strings (spacer, image, .jpg in alt)Novel placeholder patterns
Manual reviewContextual accuracy of all alt textScale — impractical alone for large sites
Content author trainingPrevents future failures at sourceDoesn't fix existing content

Practical interventions for development teams:

  • Configure your CMS to leave the alt field blank by default rather than auto-populating with filenames. A missing alt attribute is easier to catch with automation than a plausible-looking filename.
  • Add a linting rule that flags alt values matching common failure patterns: strings ending in .jpg, .png, .gif, .svg; strings matching image, picture, photo, spacer, graphic; strings matching sequential numbering patterns.
  • Build alt text review into content audits — not just technical audits. A quarterly pass through high-traffic pages by someone who understands the content is more effective than annual technical reviews alone.
  • Test with a screen reader on image-heavy pages. Hearing "October dot jay pee gee" announced in sequence is a faster diagnostic than reading through markup.

The Methodology Paradox research frames this well: F30 failures are exactly the category where hybrid testing approaches — automated detection of structural issues plus human judgment on semantic accuracy — outperform either method alone.

CORS Perspective

Through the CORS framework, F30 failures reveal a telling pattern. From a Community standpoint, the users most affected — screen reader users, people with low vision, users of refreshable Braille displays — are often invisible during content production workflows, which is precisely why placeholder text persists. Operationally, the fix is rarely a development problem; it's a content governance problem that requires training, CMS configuration, and editorial process changes — all within reach of most organizations. The Risk profile is clear: 1.1.1 is one of the most frequently cited WCAG failures in DOJ accessibility enforcement actions (opens in new window), making F30 patterns a reliable indicator of broader compliance exposure. Strategically, fixing F30 is one of the highest-ROI accessibility investments available — the technical lift is low, the content quality improvement is tangible, and it addresses a failure that compliance frameworks across WCAG, Section 508, and EN 301 549 all require. The barrier isn't knowledge or budget. It's workflow.

About the Jamie lens

A strategy lens for small business and Title III. Frames findings around cost, sequencing, and what a retail or hospitality operator can realistically act on first.

Jamie is an AI analyst lens, not a human staff member. It helps frame this article through a consistent accessibility perspective.

Specialization: Small business, Title III, retail/hospitality

View all articles using this lens →

Transparency Disclosure

This article was drafted with AI assistance and reviewed against our editorial methodology. We disclose that process so readers can judge the work clearly.