The image-alt rule flags <img> elements that have no text alternative at all, so assistive technology has nothing to announce but "image" or the file name. The fix is an alt attribute on every image: a short description when the image carries information, and an empty alt="" when it is pure decoration.
What the rule means
WCAG 1.1.1 requires a text alternative for every piece of non-text content that conveys something. For an <img>, that is almost always the alt attribute. The alternative should say what the image contributes in its place on the page – not describe every pixel.
axe accepts any of these as a text alternative: an alt attribute (including an empty one), aria-label, aria-labelledby, a title attribute, or role="none"/role="presentation". It reports an image that has none of them, and an alt that holds only a space – screen readers do not all ignore that. Images hidden with aria-hidden="true" or display: none are skipped.
What axe cannot do is read the image. alt="IMG_2041.jpg", alt="picture" or a description of the wrong photo all pass the rule. Whether the text is right stays a human judgement, which is why the fact box above says "partly".
Who is affected
Blind people using a screen reader or a braille display hear "image" or a file name instead of the content. People on slow connections or with images switched off see the alternative text in place of the picture, and voice-control users cannot name an image link that has no text. Missing alternative text is the second most common failure on the web: the WebAIM Million 2026 found it on 53.1% of the top one million home pages [3].
Why the check fails
- CMS uploads where the "alternative text" field is optional and left empty – the template then prints
<img>with noaltat all. - Theme templates and page builders that output product, teaser or team images without an
altattribute, even when the editor filled one in. - Sliders, galleries and lazy-loading scripts that build
<img>elements in JavaScript and drop the attribute. - Linked images – a logo or product tile inside
<a>with noalt, which also leaves the link without a name. - Tracking pixels and spacer images (1 × 1 px), which are visible to axe and need
alt="".
How to fix it
- Decide per image: does it carry information the text around it does not? If yes, describe that information in a short phrase. If no, use
alt="". - For a linked image, the
altnames where the link goes ("Home", "Running shoe Aero 3 – details"), not what the picture shows. - Fix it where the markup comes from – the template or component – and make the alternative text field required in the CMS for content images.
<!-- Before: no alt – screen readers announce the file name -->
<img class="team-photo" src="/images/team-berlin.jpg" width="640" height="360">
<!-- A decorative divider, also without alt -->
<img class="divider" src="/images/divider-wave.svg" width="200" height="12">
<!-- After: the photo is described in its context -->
<img class="team-photo" src="/images/team-berlin.jpg" width="640" height="360"
alt="Our six-person support team at the Berlin office">
<!-- Decorative: alt="" tells screen readers to skip it -->
<img class="divider" src="/images/divider-wave.svg" width="200" height="12" alt="">
A complex image such as a chart gets a short alt plus the full information in the text next to it or in a data table, not a 300-word attribute.
How to test it manually
- Open the page and list its images – in Firefox's accessibility inspector or with the free WAVE browser tool, which shows each image's alternative next to it.
- For every image, read the alternative text without looking at the picture. Does it tell you what you need at that point on the page?
- Check linked images and image buttons: does the alternative say where the link leads or what the button does?
- Turn on a screen reader (NVDA on Windows, VoiceOver on macOS) and move through the page. Listen for file names, "graphic", or descriptions that repeat the caption word for word.
Related WCAG criterion
1.1.1 Non-text Content, Level A. Related: 2.4.4 Link Purpose (In Context) for images that are the only content of a link, and 1.4.5 Images of Text for text set as a picture.
How Reviseberg reports it
Reviseberg runs image-alt on every crawled page at 1280px. The issue list shows the rule with its severity, WCAG criterion and level, the number of images and pages affected, and the points you get back by fixing it. The detail view gives the CSS selector, the HTML snippet and every page the image appears on – a logo in the header shows up once per page, and one template change fixes all of them.
For missing alt text, Reviseberg can also propose alt text with AI. A proposal is a suggestion: a person reads it, edits it and accepts or rejects it, and nothing is written into your site automatically. Findings you disagree with can be marked "ignore", "can't fix" or "false positive" with a reason; every decision is logged. A clean result here never marks 1.1.1 as passed: only a person can confirm the alternatives are right.
Related rules
- undefined – image buttons (
<input type="image">) without a text alternative. - undefined – elements with
role="img"that have no name. - undefined – inline SVG graphics without a text alternative.
- undefined – links with no text, often an image link without
alt.
Find every image without alt text on your site – get a free scan