Skip to the tool
OnPageKit

Image Alt Text Checker

Every img tag in pasted HTML, with its alt text judged.

paste the page source

Your markup is read here, in this tab. A browser is not allowed to download another site’s page, so every tool that takes a URL is fetching it from a server that keeps a log.

characters
Images
0
No alt
0
Decorative
0
Described
0
Too long
0
Filename alt
0
No dimensions
0
Not lazy
0
  • NoteNo img tags in this markup. CSS background images are invisible to this check, and to assistive technology.

Everything runs in your browser. Nothing you type is sent to a server.

Found a bug in this tool? Report it.

Share this tool

What this image alt checker looks at

This image alt checker takes the HTML you paste and lists every <img> in document order with its source, an approximate line number and a verdict on its alt text: absent, empty, described, longer than your threshold, or simply the file name in disguise. It also counts the images that declare no width and height, and the ones with no lazy-loading hint.

Three of those checks are accessibility checks that happen to help search. One is a performance check. None of them requires uploading anything.

Why you paste markup here

Fetching a third-party page from inside a browser is blocked by design, and no amount of front-end cleverness gets around it. A checker with a URL box is therefore a checker with a back end, and your address is going into it. Since the parsing here is a few hundred lines of JavaScript, the honest arrangement is to run it where the markup already is.

Use view-source for a static page. For anything rendered by a framework, copy the outer HTML of <body> from the Elements panel, because that is the markup that actually exists once the page has run.

Accessibility first, search second

It is worth being clear about the order. The alt attribute was specified so that a person using a screen reader, a person on a text browser, and a person whose image failed to load all get the same information. Search engines read it because it is a reliable description written by the publisher, not the other way round.

That order changes what good alt text looks like. Describe the thing that matters in the picture, in the context of the sentence around it. A photograph of a shop front on a contact page is "The Bristol showroom entrance on Park Street"; the same photograph in a gallery about signage might be "Hand-painted gold lettering above a black shopfront". Neither mentions your keyword, and neither needs to.

Skip "image of" and "picture of". The technology already announces that it is a graphic, so those three syllables are pure overhead on every image.

Empty alt is an answer, not an omission

The checker reports alt="" as a note rather than a problem, because it is the correct way to mark a decorative image. Purely presentational graphics, icons that duplicate adjacent text and tracking pixels should all be hidden from assistive technology, and the empty attribute is the mechanism for saying so.

What deserves attention is the image with no alt attribute at all. That is not a decision; it is a gap, and every automated accessibility audit will report it.

The file name trap

When alt text matches the file name — team-photo.jpg described as "team photo" — nobody wrote a description. A theme or an upload script filled the field, and the result reads to a listener as the name of a file rather than a description of a scene.

This one is a heuristic, so it can fire on an image whose file name is genuinely descriptive. Even then it is worth the second look, because the underlying question is the same: did a person write this?

Dimensions, lazy loading and the fold

Images with no width and height cannot have their space reserved, and the page reflows as each one arrives. Set both attributes to the intrinsic pixel size of the file and control the rendered size with CSS.

The lazy-loading count is reported as a count on purpose. Whether an image sits below the fold depends on the viewport, the font size and the content above it — none of which exist in a chunk of pasted markup. The rule of thumb is that the largest image in the first screenful should stay eager, because deferring it delays your Largest Contentful Paint, and everything below it can be lazy.

When you are done here, the Heading Structure Checker covers the outline of the same page, and the Meta Tag Analyzer reads what is inside the <head>.

Frequently asked questions

Is an empty alt attribute a mistake?

Almost never, when it is deliberate. Writing alt="" tells assistive technology that the image carries no information and should be skipped entirely, which is exactly right for a divider, a rounded corner, a spacer or an icon sitting next to a label that already says the same thing. The mistake is the missing attribute, not the empty one. With no alt at all, a screen reader has nothing to announce and commonly reads the file name instead, which is how a listener ends up hearing IMG underscore 4 4 8 2 dot j p g.

How long should alt text be?

Long enough to replace the image and no longer. In practice one sentence covers nearly everything, which is why 125 characters is the conventional ceiling, borrowed from older screen readers that truncated around there. Length is not the real test though. If the picture is a chart or a diagram carrying data, the short alt should name it and the detail belongs in a caption or a nearby paragraph, where every reader can get to it.

Should I put keywords in alt text?

No. Alt text is read aloud to somebody who cannot see the picture, and stuffing it with search terms makes the page worse for the one audience the attribute exists to serve. Google's image guidance asks for descriptive, useful text and calls keyword-loaded alt spam. If the natural description happens to contain your term, keep it. If you had to force it in, take it out.

Why can this tool not just read my URL?

The browser's same-origin policy will not let a page on this domain read the HTML of a page on yours. Sites that appear to do it are fetching your address on a server, which means the URL, and anything unpublished behind it, is now in somebody's log. Pasting the source is the version that keeps your markup on your own machine, and it works for staging environments and password-protected pages that no crawler could reach anyway.

Do width and height attributes still matter?

Yes, more than they did ten years ago. Modern browsers use the two attributes to compute an aspect ratio and reserve the box before the file arrives, which is what stops the text below jumping down the page mid-read. That jump is Cumulative Layout Shift, one of the Core Web Vitals, and it is measured on real visits rather than in a lab. Setting both attributes and letting CSS handle the display size is the whole fix.

Related tools

Updated