How to fix role img alt on Headless / Custom (I build in code)
Add a meaningful aria-label (or aria-labelledby) to every element with role="img" so screen readers can announce what the image represents.
Steps for Headless / Custom (I build in code)
- Search your component library/repository for all instances of role="img" (e.g. grep -r 'role="img"' src/).
- For each meaningful instance, add aria-label="[description]" as a prop or hardcoded attribute.
- For SVG components: add a <title> as the first child, assign it a unique id, and set aria-labelledby={titleId} on the <svg role="img"> element — this is the most robust pattern.
- For decorative instances: replace role="img" with aria-hidden="true" and remove role entirely.
- Write a unit test or linting rule (e.g. eslint-plugin-jsx-a11y rule 'no-aria-hidden-on-focusable') to prevent regressions.
- Run axe-core in your CI pipeline (e.g. via jest-axe or Playwright/axe) to catch future violations automatically.
What is role img alt?
When a developer uses the HTML attribute `role="img"` on an element that isn't a native `<img>` tag — for example, an icon font character, an SVG group, a `<div>` containing a decorative graphic, or an emoji used as meaningful content — they are telling browsers and assistive technologies "treat this as an image." However, unlike a real `<img>` tag which has an `alt` attribute, these elements have no built-in place to put a text description. The `aria-label` attribute fills that gap: it provides the invisible text label that a screen reader will read aloud instead of the visual graphic. If `aria-label` (or an equivalent like `aria-labelledby`) is missing or empty, the element is announced to blind or low-vision users as an unlabelled image — or skipped entirely — making it meaningless.
WCAG 2.1 Success Criterion 1.1.1 (Level A — the most basic accessibility level) requires that all non-text content has a text alternative. Failing this criterion means your store is inaccessible to the roughly 7–8 million people in the US alone who use screen readers, exposing you to legal risk under the ADA, Section 508, and equivalent laws in the EU (EAA 2025), UK, Australia, and Canada — accessibility lawsuits against ecommerce stores have increased sharply year-over-year. Beyond legal risk, unlabelled icons and graphics mean blind shoppers cannot understand product badges, trust seals, star ratings rendered as icon fonts, or navigation icons — directly harming conversions and checkout completion rates. Google also uses accessibility signals as part of its overall quality assessment, so a deeply inaccessible site can experience reduced crawl quality over time.
See the complete Role img alt guide for every platform and the full background.
Not sure if your Headless / Custom (I build in code) store has this?
Run a free SEOLZ scan — we’ll find role img alt and every other issue across your whole site.
Scan my site free