
When a linked image carries alt text that just repeats the visible link text next to it, a screen reader announces the same label twice. Set the image’s alt to empty (alt="") and let the adjacent text label the link.
What this check flags — and why it matters
This fires when an image inside a link has alt text that duplicates the human-readable text in the same link (or the text right beside it). The classic shape is an icon plus a label pointing at one destination: a small cart graphic followed by “View Cart,” where the image alt also says “View Cart.” A sighted user sees one tidy link; programmatically the link now exposes two identical labels stacked on top of each other, and the screen reader voices the same words twice. Alt text exists to replace information lost when an image can’t be seen — and here nothing is lost, because the text is already there.
Why the double announcement hurts
A screen reader builds a link’s accessible name by concatenating everything inside the anchor — image alt plus adjacent text. When the alt repeats the visible text, the reader voices the label twice: “View Cart View Cart, link.” It is not catastrophic, but it is friction on every single one of those links, and on a site with dozens of icon-plus-label patterns that friction adds up fast. The image is decorative in this context: the text already names the link’s purpose, so the picture reinforces meaning rather than adding it.
A real failing example
Icon and label share a link, and the alt duplicates the label:
<a href="/cart">
<img src="/icons/cart.svg" alt="View Cart">
View Cart
</a>The accessible name becomes “View Cart View Cart.” Because the icon adds nothing the text doesn’t already say, empty the alt so the image drops out of the accessible name:
<a href="/cart">
<img src="/icons/cart.svg" alt="">
View Cart
</a>Now the reader announces “View Cart, link” once. An empty alt="" is deliberate, not a mistake — it tells assistive tech the image is decorative and safe to skip. Note the difference from a missing alt attribute, which screen readers may fall back to reading the filename for.
Empty alt vs. missing alt vs. descriptive alt
| Markup | Screen reader behaviour | Use when |
|---|---|---|
alt="" | Image skipped entirely | Icon beside text that already labels the link |
| No alt attribute | May read the filename aloud | Never — always include alt |
alt="View Cart" (with visible “View Cart”) | Announces the label twice | Never in this pattern — this is the failure |
alt="View Cart" (icon-only link, no text) | Announces “View Cart” once | Icon is the only label in the link |
The last row is the key nuance: if the icon is the only thing in the link, its alt has to carry the label. The rule only fires when visible text already does that job.
How to detect it
- Screaming Frog — crawl and export the Images > Alt Text data, then scan for alt values that match nearby anchor text. A custom extraction pulling
<a>inner text alongside child<img>alt makes the duplicates obvious at scale. - axe DevTools — run the extension; it flags redundant alt text where the image’s alt repeats the link’s accessible name, pointing you straight at the node.
- Lighthouse — the Accessibility audit surfaces image-alt and link-name issues; review flagged links where the name looks doubled.
- View Source / DevTools — inspect a link that pairs an icon with a label and compare the
<img>alt to the visible text. If they say the same thing, that’s the failure.
How to fix it
- Find links that pair an image with visible text pointing at the same destination.
- Where the alt repeats the visible text, set that image’s alt to empty:
alt="". Keep the attribute — just make it empty. - For icon-only links with no visible text, do the opposite: give the image alt that names the action, or add an
aria-labelon the link. - Re-run axe on the page to confirm the redundant-alt flag is gone and the link now reads its label once.
Common mistakes
- Deleting the alt attribute instead of emptying it. A missing alt is not the same as
alt=""— some readers fall back to the filename. Always keep the attribute present and empty. - Emptying alt on an icon-only link. If there is no visible text,
alt=""leaves the link with no accessible name at all. Only empty the alt when text already labels the link. - Stuffing the alt with keywords. Repeating the link text and padding it with extra terms makes the double-announcement longer and reads as spam. Keep decorative icons out of the accessible name.
FAQ
Is an empty alt attribute valid HTML?
Yes. alt="" is the standard, spec-blessed way to mark an image as decorative so assistive tech skips it. It is a deliberate signal, not an oversight.
Does this affect image SEO?
Emptying the alt on a decorative icon costs you nothing in image search — a UI icon beside a text label was never ranking on its own. Save descriptive alt for content images that genuinely need it. Background on the attribute: alt text.
What if the icon carries extra meaning?
Then it’s not decorative and you shouldn’t empty the alt — but that’s rare in the icon-plus-label pattern. If the icon adds information the text lacks, describe that specific meaning instead of repeating the label.
How is this different from an icon-only link?
An icon-only link needs the alt (or an aria-label) because nothing else names it — the opposite fix. See links must have discernible text and the sibling check image button needs alt.
Does this relate to role=img images?
It’s adjacent. Elements with role="img" have their own naming requirements — see role=img elements need alternative text — but the redundancy principle is the same: don’t announce the same thing twice.
Need a full technical audit?
SEO ProCheck runs deep crawls that catch issues like this across your whole site.
Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.







