sfw/fix
image-alt high

Image missing alt text (WCAG 1.1.1)

An <img> has no alt attribute or accessible name, so screen readers read the filename or skip it entirely.

What you see

Images must have alternative text (image-alt)
Fix any of the following:
  Element does not have an alt attribute
  aria-label attribute does not exist or is empty
  Element has no title attribute

What’s actually happening

Screen readers announce a meaningless filename like 'IMG_4827.jpg' or say nothing where an informative image should be, so a blind user loses content sighted users get for free. The axe-core 'image-alt' rule flags any <img> with no alt, no aria-label/aria-labelledby, and no title. It fires on missing alt, but a present-and-empty alt="" is treated as a deliberate 'decorative' signal and passes, which is the distinction people get wrong. This was on 53.1% of home pages in the February 2026 WebAIM Million.

Common causes

  • Images inserted without an alt attribute at all (hand-coded <img>, page builders, or a CMS field left blank).
  • Decorative images given a generic or filename-like alt instead of the correct empty alt="".
  • Theme or plugin output that prints <img> tags with no alt, including logos, icons, and sliders.
  • CSS-driven or background images carrying meaning, which alt can't fix and which need an accessible-text alternative.
  • Bulk-uploaded media where the alt field was never filled in the media library.

How to fix it

  1. Write alt that conveys the image's purposeDescribe what the image communicates in context, not what it literally depicts. A product photo's alt should be the product name/variant; a chart's alt should state the takeaway. Keep it concise, skip 'image of'/'photo of' (the screen reader already says 'graphic'), and don't keyword-stuff.
  2. Mark decorative images with empty altFor spacers, dividers, and purely ornamental images, use alt="" (present but empty). That tells screen readers to skip it. Leaving the attribute off entirely is the failure; alt="" is the correct decorative pattern.
  3. Set alt in the CMS, not just in codeIn WordPress, open each image in the Media Library and fill the 'Alternative Text' field; in the block editor set it in the image block's settings. For logos rendered by the theme, alt usually comes from the site title or a theme/customizer setting.
  4. Handle functional and background imagesAn image that's a link or button needs alt describing the action ('Search'), not the icon. For meaningful CSS background images, add visually-hidden text or an aria-label on the element, since there's no <img> to carry alt.
  5. Re-scan and sample with a screen readerRe-run axe DevTools or WAVE to clear the image-alt violations, then tab/arrow through a few pages with VoiceOver (Mac) or NVDA (Windows) to confirm the alt text actually reads sensibly. Automated tools catch missing alt, not bad alt.

Stop it recurring

Make alt text a required step when adding any image: descriptive for informative images, empty alt="" for decorative ones.

Related errors