RatedWithAI

RatedWithAI

Accessibility scanner

Which images on your site have no alt text?

Enter your domain. We read the HTML your server sends and check every image, image button and image-map area on the page for a usable text alternative — no attribute at all, a placeholder like “image”, a file name your CMS left behind, or a link whose only content is a picture with nothing to announce. Each finding names the WCAG success criterion it sits under.

Free, instant, no signup and no card. Nothing is stored.

Free, instant, no signup and no card. We read the HTML your server sends for that one page and check every image, image button and image-map area in it. Nothing is stored.

Missing alt text is the cheapest evidence against you

Of the fifty success criteria in WCAG 2.1 level AA, this is the one that shows up first in almost every demand letter — and the reason is procedural rather than moral. A plaintiff's expert needs no access to your source, no cooperation from your team and no specialist judgement to find it. They open the page, run a free automated tester, and produce a numbered list with your own URLs on it. The same property that makes it trivial to find makes it trivial to fix, which is why an unfixed one reads badly: it is a week of work, and it has been sitting there since the site launched.

None of that means alt text is where accessibility ends. It is the first criterion, not the last one, and a page that passes it can still be unusable with a keyboard, unreadable at 4.5:1 contrast, or built from form fields with no labels. What it means is that this is the failure you should not still have when someone looks.

What the checker looks for

Three of these are failures with a named criterion. The rest are judgement calls a machine can surface but cannot settle, so they are reported separately and never counted as violations — a checker that inflates its own failure count is selling you something.

No alt attribute at allFailureWCAG 2.1 SC 1.1.1 Non-text Content (Level A)
The tag has no alt attribute. A screen reader has nothing to announce, so it falls back to reading the file name aloud — or, on a linked image, the URL. This is the single most common automated accessibility failure on the web and it is the one a demand letter names first, because it is trivial to demonstrate.
The fix: Add alt="…" to every one. If the image carries meaning, write the sentence a sighted reader gets from it. If it is purely decorative, alt="" is the correct answer — but it has to be written, not omitted.
Link whose only content is an image with no text alternativeFailureWCAG 2.1 SC 2.4.4 Link Purpose / SC 1.1.1 (Level A)
The whole clickable area is this image and there is no other text inside the link, so the accessible name of the link is empty. A screen reader announces it as “link” with nothing after it, or reads the URL. Logo-home links, icon-only social buttons and image-only product tiles are where this lives.
The fix: Give the image alt text that describes where the link goes, not what the picture shows — a home logo is alt="Acme — home", not alt="Acme logo". Alternatively add visually-hidden text inside the anchor.
Placeholder word instead of a descriptionFailureWCAG 2.1 SC 1.1.1 Non-text Content (Level A)
The alt text is a word like “image”, “photo”, “graphic” or “untitled”. The attribute exists, so a validator that only counts missing attributes scores the page clean — but it conveys nothing a screen reader user did not already know from the fact that an image was announced.
The fix: Replace it with the information the image carries. If it carries none, the right value is the empty string.
Alt text looks like a file nameReviewWCAG 2.1 SC 1.1.1 Non-text Content (Level A)
Values like “IMG_4021.jpg” or “hero-banner-2@2x.png” are what a CMS writes when nobody filled the field in. It is read out character by character in places and means nothing to anyone.
The fix: Write what the image shows or does. Bulk-editing these in the media library fixes every page that uses the image at once.
Alt text is only whitespace (alt=" ")ReviewWCAG 2.1 SC 1.1.1 Non-text Content (Level A)
A single space is not the same as the empty string. Some assistive technology treats it as content and announces a blank, others skip it; the behaviour is inconsistent enough that it is never the value you want on purpose.
The fix: Use alt="" with nothing between the quotes if the image is decorative, or write a real description if it is not.
Starts with “image of” / “picture of”ReviewWCAG 2.1 SC 1.1.1 (advisory)
Not a failure, and worth a minute anyway: assistive technology already announces that the element is an image, so the prefix is heard twice. It also tends to signal alt text written as a caption for the file rather than as a replacement for it.
The fix: Drop the prefix and keep the description: “photo of a red bicycle” becomes “a red bicycle”.
Longer than 150 charactersReviewWCAG 2.1 SC 1.1.1 (advisory)
There is no hard limit in the spec, but alt text is announced as one uninterrupted run that a listener cannot skim or pause mid-way. Past roughly a sentence or two it stops being a substitute for the image and becomes an obstacle in front of it.
The fix: Keep the short equivalent in alt and move the long description into the page itself, or reference it with aria-describedby — where it is available to everyone, not only to people who cannot see the image.
Declared decorative (alt="")Verify
This is correct markup and not a violation — an empty alt is how you tell assistive technology to skip an image that adds nothing. It is listed because it is also where a real failure hides: a chart, a screenshot with text in it, or a linked logo marked decorative is information the page silently withholds.
The fix: Skim the list. Anything that a sighted reader learns something from needs a description instead.

How to write alt text that is actually worth having

The rule that resolves nearly every case: alt text replaces the image, it does not describe it. Ask what a sighted reader gets from the picture in this position on this page, and write that. The same photograph needs three different sentences depending on where it sits — on a product page it is the product, in a news story it is the evidence, and in a background band it is nothing at all and should carry an empty alt.

The consequences of that rule: a chart's alt text is its finding, not its axes. A screenshot with words in it needs those words, because a screen reader cannot read pixels. A link's image names the destination, not the picture. And a decorative flourish gets alt="" — written, not omitted, because an omitted attribute makes the machine guess and it guesses by reading your file name aloud.

Common questions

What does this checker actually read?
One URL, once. It fetches the page you enter, takes the HTML your server returns, and walks every <img>, every <input type="image"> and every <area> in it. For each one it asks whether there is a text alternative and, if there is, whether the alternative says anything. It does not render the page, run your JavaScript or crawl beyond the address you typed — all three of those are the full scan, which is a different tool on this site and also free.
Is alt="" a failure?
No, and a checker that tells you it is has misread the spec. An empty alt attribute is the correct, deliberate way to tell assistive technology to skip an image that carries no information — a divider, a background flourish, a spacer. A page of them may be exactly right. This tool reports them in their own bucket marked verify rather than counting them as violations, because the thing worth your attention is narrower: a chart, a screenshot with text in it, or a logo that is also a link, marked decorative by accident.
Why is a logo link reported when the image has alt=""?
Because the alt attribute is not the only thing the empty string affects there. When an image is the entire content of a link and its alt is empty, the link itself has no accessible name — a screen reader announces “link” and stops, or reads the URL out. That is SC 2.4.4 rather than SC 1.1.1, and it is one of the highest-frequency real failures on commercial sites, because logo-home links and icon-only social buttons are built this way by default. The fix is to describe the destination, not the picture: alt="Acme — home", not alt="Acme logo". If the anchor carries its own aria-label, or has visible text beside the image, nothing is reported — the link already has a name.
My CMS filled the alt field with the file name. Does that pass?
Technically an attribute is present, so a checker that only counts missing attributes scores it clean — which is exactly why so many sites believe they pass. “IMG_4021.jpg” read aloud is noise, and a page full of them conveys no more than a page with nothing. This tool puts file-name-shaped values in the review band rather than the failure count, because a machine cannot be certain a human did not mean it, and flags anything with an image extension or a camera-and-number stem. Values over 150 characters land in the same band for the opposite reason: alt text is announced as one uninterrupted run a listener cannot skim.
It found nothing, but my page is full of images. What happened?
Almost always client-side rendering. If the images are inserted by React, Vue or a lazy-loading script after the document arrives, they are not in the HTML your server sent and this reader cannot see them — same limitation as the overlay checker on this site, and the same honest answer. The free scan renders each page in a real browser before measuring it, so it sees what your visitors see. Run that one instead.
Does missing alt text actually get sites sued?
It is the most commonly cited failure in US web accessibility demand letters, and the reason is procedural rather than moral: it is the easiest violation to demonstrate from outside. A plaintiff's expert does not need your source, your credentials or your cooperation — they open the page, run a free automated tester and produce a numbered list. Nothing about that means fixing alt text makes you safe. It means an unfixed one is the cheapest possible evidence against you, and it is a week of work rather than a quarter.
How is this different from the alt text generator on this site?
Opposite ends of the same job. The generator takes one image and writes a sentence for it. This takes one page and tells you which images need a sentence. Most people arrive needing the second answer first — you cannot brief a writer, or a bulk edit in the media library, until you know the size and shape of the problem.
Does this store my domain?
No. The check is a single HTTP GET of the page you name, run inside the request and discarded when it answers. There is no account, no email field and no row written anywhere. If you go on to run the free scan, that one does keep a report so you can come back to it, which is the whole point of a report.

Keep reading