Validates image alt attributes for accessibility compliance
3 of 3 free audits left today
See what Image Alt finds on your site. No sign-up needed.
Fetch β sends a GET request to the audited URL as 37AuditsBot. A blocked request ends the audit with 590; any other failure (timeout, DNS, TLS, non-2xx answer) ends it with 500.
Parse β parses the HTML with jsoup and collects every <img> element in document order. The page is not rendered, so images added by JavaScript are not seen.
Rules β each <img> with no alt attribute is one FAIL finding (400); each <img> whose alt is present but empty or whitespace-only is one WARNING finding (300). The finding's resource is the image's absolute src (falling back to the raw src, then the page URL), and its data carries src, absoluteSrc, alt and the image's 1-based index.
Aggregate β FAIL wins over WARNING. When every image has a non-empty alt, or the page has no images at all, the audit is SUCCESS (200) with the image count in the message.
Specification pin β every run emits 37A-ImageAltAuditor-100 (INFORMATION), naming WCAG 2.2 Success Criterion 1.1.1 Non-text Content (W3C Recommendation of 12 December 2024). It does not change the overall status.
Every row maps to one checkRule* method and one CheckCode, in the order the auditor runs them. CheckCode suffixes use status ranges: 100 information, 200 success, 300β399 warning, 400β499 fail, 500β599 error.
| CheckCode | Status | When it fires | Recommendation | Why it matters |
|---|---|---|---|---|
37A-ImageAltAuditor-100 | INFORMATION | Always. Records the specification version this auditor implements. | β (recommendation is null; nothing for the site to change) | β |
37A-ImageAltAuditor-400 | FAIL | One finding per <img> that has no alt attribute at all. | Add an alt attribute to Image "{src}" that describes what it shows, or alt="" if it is purely decorative. | Without an alt attribute, screen readers announce the file name or nothing at all, so visitors who cannot see the image lose its message and search engines cannot index it; the page also fails a basic WCAG requirement that accessibility laws reference. |
37A-ImageAltAuditor-300 | WARNING | One finding per <img> whose alt attribute is present but empty or whitespace-only. | If Image "{src}" conveys information, describe it in its alt attribute; keep alt="" only when the image is purely decorative. | Screen readers skip an image with an empty alt, so if it carries meaning, blind and low-vision visitors miss it and search engines have nothing to index for it. |
37A-ImageAltAuditor-200 | SUCCESS | All rules passed: the page has no <img>, or all {totalImages} images have a non-empty alt. Message reports the count. | β | β |
37A-ImageAltAuditor-500 | ERROR | The page could not be fetched (timeout, DNS, TLS, or a non-2xx answer other than a block). | Make sure {url} answers with HTTP 2xx, then run the audit again. Last error: {error}. | β |
37A-ImageAltAuditor-590 | ERROR | The audited page answered HTTP 403, HTTP 429 or a Cloudflare challenge, so 37AuditsBot was blocked before it could read the page. | Allow 37AuditsBot in your firewall or bot protection: allowlist its user agent, or verify its Web Bot Auth signature. See https://www.37audits.com/bot. | While 37AuditsBot is blocked this audit cannot look at the site, so problems on it go unreported. |
| Status | Description | Test logic |
|---|---|---|
| SUCCESS | Every image has a text alternative | No <img> on the page, or every <img> has a non-empty alt (200). |
| WARNING | Some images have an empty alt | At least one <img> has alt="" (or whitespace only) and none is missing alt (300, one check per image). |
| FAIL | Some images have no alt attribute | At least one <img> has no alt attribute (400, one check per image); empty-alt warnings (300) are listed alongside. |
| ERROR | The auditor could not read the page | Fetch failure or non-2xx answer (500); site blocked 37AuditsBot (590). |
| INFORMATION | Specification pin | Always emitted (100); does not change overall status. |
Blind and low-vision visitors rely on screen readers, which can only describe an image through its alt text. A missing alternative hides product photos, charts, buttons drawn as images and infographics from them.
Search engines index alt text and use it for image search, so descriptive alternatives bring traffic and help rank the page.
WCAG 1.1.1 is a Level A criterion, the minimum that accessibility laws and procurement rules (ADA, EN 301 549, the European Accessibility Act) point to.
alt="" is the correct markup for a purely decorative image (a spacer, a background flourish, an icon next to its own label). Screen readers skip it on purpose.
The auditor cannot tell a decorative image from a meaningful one, so an empty alt only warns. Review each warning: keep alt="" for decoration, write a description for anything that carries information.
A page whose only problems are empty alt attributes is now WARNING; it used to be FAIL. alt="" is valid for decorative images, so it no longer fails the page on its own.
The auditor no longer emits a SUCCESS check for every well-described image; a single 200 check with the image count replaces them.
A fetch failure is reported as ERROR (500) with the observed error instead of a generic message, and a blocked request as 590.
Only the audited URL is parsed; other pages of the site may have images without alt.
The HTML is not rendered: images inserted by JavaScript, CSS background images, <svg> and <canvas> graphics are not inspected.
The quality of the alt text is not judged: "image", "photo" or a file name counts as non-empty. Images with role="presentation" or aria-hidden="true" but no alt still fail, since alt remains required on <img>.
This documentation is built and hosted on Mintlify, a developer documentation platform.
Add this auditor to your monitoring setup and start identifying issues on your websites today.