( Perceivable / WCAG 1.1.1 )
Alt text repeats adjacent visible text
What is this issue?
An <img> has non-empty, accurate alt text, but that text repeats a caption, heading, or paragraph already sitting directly next to the image in the page’s visible content. A screen reader has no way to know the image and the nearby text are saying the same thing; it reads the alt value, then continues to the visible text, announcing the same phrase twice in immediate succession.
This is a quality issue, not a missing-information failure. The image’s alt text does describe the image accurately; the problem is that description is redundant with content the user is about to hear anyway.
Why does this matter?
Hearing the same short phrase announced twice in a row (once as an image’s alt text, once as the caption underneath it) adds friction without adding information. On a single image it’s a minor annoyance; on a page with a dozen captioned photos, each one duplicating its own caption, it turns straightforward reading into a repetitive slog a sighted user never experiences, since they perceive the image and caption as one visual unit at a glance rather than two sequential announcements.
A team page listing employee photos, each with alt="Sarah Johnson" directly above a visible <p>Sarah Johnson</p> caption, makes a screen reader announce “Sarah Johnson… Sarah Johnson” for every single person on the page. Nothing is technically wrong (both pieces of text are accurate), but the redundancy makes the page measurably slower and more tedious to get through by ear than by eye.
Who is affected?
- Screen reader users: hear the same short phrase announced twice in immediate succession for every affected image, adding cumulative friction across a page with several instances.
- Cognitive disabilities: users relying on a screen reader to reduce reading load get extra, repetitive audio to process for no informational benefit, working against the goal of a clean, low-friction listening experience.
What users experience
Tomas uses JAWS on Windows to browse a company’s “Our Team” page, which lists twelve employees as photos with visible name captions underneath, and each photo also carries alt text matching the caption exactly. JAWS announces “Sarah Johnson, graphic… Sarah Johnson” for every person, back to back, twelve times in a row. Nothing is factually wrong on the page, but working through the redundant pairs takes him noticeably longer than a sighted colleague scanning the same twelve names visually.
How do I fix it?
Mark the image decorative with alt="" when it’s purely illustrating text that already states the same information. This works because an empty alt tells screen readers to skip the image silently, leaving only the visible text, which every screen reader user already hears regardless of the image, to carry the information once, cleanly.
Only give the image its own real alt text if it adds something the visible text doesn’t: a photo captioned “Sarah Johnson” that also visually shows her holding an award the caption doesn’t mention would genuinely benefit from alt describing that extra detail, rather than restating the name.
Code Examples
<img src="/team/sarah.jpg" alt="Sarah Johnson">
<p>Sarah Johnson</p><img src="/team/sarah.jpg" alt="">
<p>Sarah Johnson</p>The visible caption already gives every user, sighted or using a screen reader, the name once. Marking the photo decorative removes the duplicate announcement without losing any information, since nothing the alt text said wasn’t already present in the caption a screen reader reads regardless.
Common Mistakes
Mistake: “Alt text should always describe what the image literally shows, so matching the caption is correct.” Alt text should describe what the image adds, not just what it depicts in isolation. When a caption already states the same fact, the image’s job becomes purely decorative reinforcement of information the user already has, which calls for alt="", not a matching description.
Mistake: “Removing the alt text entirely, instead of setting it to empty, fixes the duplication.” A missing alt attribute is an error state that can trigger a filename-fallback announcement in some screen readers, which is worse than the original duplication. alt="" is the deliberate, correct way to mark an image as contributing nothing beyond what’s already stated elsewhere.
Mistake: “This is a real accessibility violation that needs to be prioritized like a missing alt attribute.” Because the original alt text is accurate, this doesn’t fail WCAG 1.1.1 the way a missing or meaningless alt does; it’s a best-practice refinement RedFlag surfaces as an informational finding. Worth fixing for a better listening experience, but not equivalent in severity to genuinely missing information.
How RedFlag Detects This
AI-assisted: flagged by the optional Review Labels feature. RedFlag’s label-review workflow (src/lib/ruleCatalogData.js’s LABEL_REVIEW_SEVERITY['redundant-alt']) surfaces a candidate image whose alt text closely matches nearby visible text, and a human reviewer confirms, edits, or rejects the flag before it becomes a recorded finding. There is no automated text-similarity detector running on every scan; this is a hybrid flag-then-confirm workflow, not a deterministic rule. RedFlag also classifies this finding as informational rather than a hard WCAG failure, since the underlying alt text is accurate.
False negative: redundant alt text that doesn’t get surfaced as a candidate during a review pass goes unflagged, since detection depends on the AI-assisted workflow being run and a reviewer confirming the match. False positive: an image whose alt text legitimately overlaps with nearby text in wording but adds real extra detail (a caption naming a person, with alt text naming the same person plus describing what they’re doing in the photo) can be flagged for a closer look even though the overlap is only partial. Manual step: confirm the alt text genuinely adds nothing the visible text doesn’t already state before removing it in favor of alt="".
Manual Testing
- Open the page in Chrome or Firefox with NVDA or VoiceOver running.
- Navigate to an image that sits next to a caption, heading, or short paragraph.
- Listen to what’s announced: if the image’s description and the following visible text say the same thing in close succession, note it as a candidate for this rule.
- Confirm visually that the caption or nearby text fully covers what the image’s
altcurrently states, with nothing extra lost by making the image decorative.
Related WCAG Success Criteria
1.1.1 Non-text Content: All non-text content must have a text alternative that serves the equivalent purpose. Redundant alt text technically satisfies this criterion, since accurate text alternatives are present; this rule addresses a quality refinement beyond the compliance minimum, not a 1.1.1 failure itself.
Related Issues
Image is missing alt text is the opposite failure in the same family: no text alternative at all, rather than one that’s accurate but redundant.
Alt text is a filename or placeholder covers a different quality failure where the alt text exists but is meaningless, rather than accurate-but-repetitive.
Decorative image is not hidden from assistive technology covers the more general version of the same underlying fix: using alt="" correctly whenever an image adds nothing beyond what’s already accessible elsewhere on the page.
Object element has no text alternative covers the missing-alternative failure on a different non-text element type.
Alt text is a raw filename covers a related quality failure specific to form controls rather than standalone images.
References
Frequently asked questions
Is redundant alt text a WCAG failure or just a best-practice issue?
It is best practice, not a hard WCAG failure. Because the alt text is accurate, it satisfies 1.1.1 Non-text Content technically. RedFlag surfaces this as an informational finding rather than a compliance violation, since the practical harm is repetitive noise, not missing information.
Should I remove the alt text or the visible text to fix this?
Keep the visible text and mark the image decorative with alt="". The visible text is readable by everyone including screen reader users, so the image become pure visual reinforcement of information that already exists in an accessible form.
Does this apply when the image and the text are not right next to each other?
It matters much less. This rule is specifically about an image and text that sit close enough together that a screen reader user encounters both in quick succession and clearly perceives them as the same information stated twice. Duplicate content spread far apart on a page is a different, lower-priority concern.
What if the image inside a link already matches the link's visible text?
The same fix applies. A product thumbnail inside a link that also contains the product name as visible text should have alt="" on the image, since the link's accessible name already includes the product name once through the visible text, and repeating it in the image's alt just duplicates the announcement.