Free tool, no signup required

Image Alt Checker

Enter any URL to audit the alt text on every image. Missing attributes, image links with no accessible name, filenames used as descriptions, duplicates, and alt text too long to be read.

3 checks remaining today (free)

Short answer

An image alt checker reads every <img> on a page and reports what its alt attribute says, not merely whether it exists. Four states matter and they need different fixes: no attribute at all, which leaves a screen reader announcing a filename; alt="", which correctly hides decoration; a real description; and alt text that is present but useless, such as DSC_0431.jpg or the same string on twelve images. One case outranks the rest. When an image is the entire content of a link, its alt text is the link's accessible name, so an empty alt there leaves the link nameless and a screen reader reads out the URL. This tool checks every <img>, <area> and <input type="image">, resolves lazy-loaded sources, and counts inline SVG separately because SVG takes no alt attribute at all.

An empty alt and a missing alt are different results

Most alt checkers count attributes and stop, which collapses four different states into a pass and a fail. The distinction is the whole job: one of these is correct markup, one is a gap, and two are present-but-broken.

What is in the markupWhat a screen reader doesWhat it means
No alt attributeAnnounces the filename, or says nothing usefulA gap. Every image needs a decision, and this is the absence of one
alt=""Skips the image silentlyCorrect for decoration. Not an error, and not something to fix
A written descriptionReads it in one uninterrupted passThe goal, provided the description is about the image and not the file
A filename or a duplicateReads out DSC_0431 or the same phrase twelve timesPresent, counted as a pass by most tools, and no more usable than nothing
aria-label with no altReads the aria-labelNamed for assistive technology, invisible to a crawler and to the broken-image fallback
alt text plus role="presentation"Skips the image, discarding the alt textA conflict. Someone wrote a description and a component threw it away

The rule that decides most of the page

Ask what an image is for, not what it shows. It either carries information the copy does not, or it is decoration. Only the first needs describing, and alt="" on the second is an answer rather than a shortcut.

The alt text that passes a checker and helps nobody

A presence check is satisfied by any string at all. These four patterns are what a page looks like once someone has satisfied one, and each of them is reported separately here.

PatternWhere it comes fromThe fix
DSC_0431.jpg, screenshot-2026-03-14A CMS filling the field from the uploaded filenameDescribe the subject. The filename is never the description
The same alt on many imagesA template writing one variable into every image on the pageVary it per image, or use alt="" where the images are genuinely decorative
"Image of a woman at a laptop"Writing for the attribute rather than for the readerDrop the prefix. "A woman at a laptop" is what gets read
A 300-character descriptionTreating alt as a captionOne sentence in alt, the detail in a caption or in the copy
The target keyword, repeatedAlt text treated as a ranking leverDescribe the image. Google's image guidelines name stuffing as spam

None of these register as errors in a tool that counts attributes, which is why a page can report a clean bill of health and be unusable with a screen reader. It is also why the results show the image next to its alt text: whether a description is the right one is a judgment no checker can make for you.

What alt text does for search, and what it does not

Alt text is the main thing telling Google what an image contains, and Google Images is a meaningful traffic source for anything visual: recipes, products, travel, design, property. Two things follow from that, and one myth does not.

  • Alt text is read as anchor text when the image sits inside a link, which makes it a real on-page signal for the page being linked to rather than only an accessibility attribute
  • Descriptive filenames help as well, because the file path is read alongside the alt text and the surrounding copy
  • Keyword stuffing in alt attributes is named as spam in Google's own image guidelines, and a phrase repeated across every image on a page is the easiest version of it to detect
  • An image a crawler cannot find in the server HTML is slower to be indexed, whatever its alt text says

Where the two audits meet

Because alt text doubles as anchor text, an image link with no alt gives its destination nothing at all. The internal link analyzer reports which destinations on a page are reached only through image links, and the external link checker does the same for outbound links. An unnamed image link shows up in all three tools for three different reasons.

How to audit the alt text on a page

Six steps, ordered so the fixes that change what a page means come before the ones that tidy it. The tool runs all six; the sequence is what matters when you are working through a page by hand.

  1. 01

    Separate the missing attributes from the empty ones

    An absent alt attribute and alt="" are different results with different fixes. The empty one is a decision, correctly marking an image as decoration. The absent one is a gap, and a screen reader falls back to reading the filename.

  2. 02

    Decide what each image is for before describing it

    An image either carries information the copy does not, or it is decoration. Only the first needs a description. Writing alt text for a background flourish adds noise to a screen reader for no gain.

  3. 03

    Check the images that are inside links first

    When an image is the entire content of a link, its alt text is the link's accessible name. An empty alt there is not decoration: it leaves the link nameless, and a screen reader reads out the URL instead.

  4. 04

    Read the alt text you already have, not just the count

    Filenames, product SKUs, and the same string repeated across twelve images all pass a presence check. This is the most common way a page reports zero alt errors while being unusable.

  5. 05

    Trim anything longer than a sentence or two

    Alt text is read straight through with no way to pause, skim, or re-read. Detail that runs past about 125 characters belongs in a caption or in the body copy, where everyone can read it.

  6. 06

    Handle the images that are not <img> elements

    Inline SVG takes no alt attribute and needs role="img" with a <title> child, or aria-hidden="true" when decorative. A CSS background image cannot be described at all, so anything meaningful should not be one.

Run it again after a theme or component update. Alt attributes are set by templates more often than by writers, and a component that stops passing its alt prop through strips the descriptions from every page using it at once, silently.

What this tool checks

Missing alt attributes

Reported apart from alt="", because the two need different fixes

Image links with no name

An image that is the whole of a link and has nothing naming it

Filenames used as alt

DSC_0431, screenshot-2026-03-14, and the src basename repeated as a description

Duplicate descriptions

The same alt text on several images, usually a template filling one variable

Overlong alt text

Anything past 125 characters, which is read in one pass and skipped

Redundant phrasing

"Image of" and "photo of", which a screen reader has already announced

Role conflicts

Alt text on an image also marked presentational, where the role wins and the text is lost

Lazy-loaded sources

The real file resolved from data-src or srcset rather than a 1x1 placeholder

Inline SVG and dimensions

SVG elements with no <title>, plus images with no width and height set

Alt text is written by templates more often than by writers

The images someone chose and described by hand are rarely the problem. The gaps come from a component that stopped forwarding its alt prop, a migration that dropped the field, a plugin that fills it with the filename, or a design system icon that ships role="presentation" and quietly discards whatever description was passed to it. None of those appear in a review of the copy, because none of them are in the copy. Check a page after every template change, and read the results next to the page word counter when a page is mostly images: a gallery with 40 undescribed pictures and 80 words of copy is thin in two different ways at once.

Frequently asked questions

What is an image alt checker?

It is a tool that reads every image on a page and reports what its alt attribute actually says. That covers the images with no alt attribute at all, the ones correctly marked decorative with alt="", the ones whose alt text is a filename or a duplicate of another image, and the image links left with no accessible name. It answers whether the alt text on a page is usable, rather than only whether the attribute is present.

Is alt="" the same as missing alt text?

No, and treating them as the same is the mistake that makes most alt checkers useless. alt="" tells a screen reader to skip the image entirely, which is the correct markup for decoration that adds nothing to the page. A missing alt attribute tells it nothing, so it falls back to announcing the filename. This tool reports empty alt as correct decorative markup, with one exception: an image that is the whole content of a link.

What happens when an image inside a link has no alt text?

The link is left with no accessible name. A link's name comes from its content, so when the content is an image and the image has no description, there is nothing to announce and a screen reader reads the URL instead. That fails WCAG 2.4.4 as well as 1.1.1. The fix is to describe where the link goes rather than what the picture shows: alt="CrawlRaven pricing" on a logo linking to the pricing page, not alt="logo".

Does alt text help SEO?

It is what Google uses to understand an image, and it is the main way images earn traffic through Google Images. Alt text is also read as anchor text when the image is inside a link, which makes it a genuine on-page signal for the destination page. What it will not do is lift a page's ranking through keyword repetition, and stuffing every alt attribute with the target phrase is a pattern Google's own image guidelines name as spam.

How long should alt text be?

One clear sentence is usually right, and about 125 characters is the practical ceiling. Nothing truncates at that number; it comes from how alt text is delivered. A screen reader reads the whole attribute in one uninterrupted pass with no way to skim or repeat a section, so a paragraph of alt text is more often skipped than absorbed. When an image genuinely needs a longer description, such as a chart, put it in a caption or in the copy near the image.

Why does the tool flag alt text that is a filename?

Because it is present and describes nothing, so it passes every checker that only asks whether the attribute exists. Filenames arrive by default: a CMS fills the field with the uploaded name, or the image was exported as DSC_0431.jpg and never renamed. A page with 40 images described that way reports zero missing alt attributes and is no more usable than one with none.

Should alt text start with "image of" or "photo of"?

No. A screen reader announces the element as an image before it reads the attribute, so "image of a hiker on a ridge" is heard as "image, image of a hiker on a ridge". Start with the subject instead. The exception is when the medium is the point, such as a painting, an illustration, or a screenshot, where naming the form carries information the reader needs.

What should I do about decorative images?

Give them alt="", with nothing between the quotes. That removes the image from the accessibility tree so a screen reader passes over it silently, which is what you want for a divider, a background texture, or an icon sitting next to a label that already says the same thing. Leaving the attribute off entirely is not the same thing and is not a substitute.

Can inline SVG have alt text?

No. The alt attribute belongs to <img>, and inline <svg> is not an image element, so an SVG icon written directly into the markup carries no alt at all. A meaningful one needs role="img" plus a <title> child, or an aria-label. A decorative one needs aria-hidden="true", otherwise some screen readers announce its raw contents. This tool counts inline SVG elements and reports how many have no <title>, but does not list them individually.

What about CSS background images?

They carry no alt text and cannot, which is exactly how a screen reader treats them: as though they are not there. That is fine for decoration and a problem for anything meaningful, so a chart, a logo, or a photograph that the page depends on should be an <img> element rather than a background. This tool reads HTML, so background images do not appear in the results at all.

Why do some images show a filename from data-src rather than src?

Because the page lazy-loads them. Lazy-loading libraries put a transparent placeholder in src and keep the real file in data-src, data-lazy-src or srcset. Reading src alone would report a page of identical 1x1 placeholders, which tells you nothing about which image is missing its description, so the tool resolves the real URL and says which attribute it came from.

Does the tool count the <source> elements inside <picture>?

No. A <picture> element holds several <source> candidates and one <img>, and only the <img> carries alt. Counting each source as an undescribed image would report a page serving three formats per photo as having three times the problem it has. The <img> inside each picture is checked exactly once.

What does it mean when several images share the same alt text?

Usually that a template is filling the attribute from one variable, so every product thumbnail on a category page is described as the category, or every author avatar as "avatar". It is not a failure in the way a missing attribute is, but it leaves a screen reader user unable to tell one image from another, and it wastes the signal on any page where the images differ meaningfully.

Can an image have alt text and a decorative role at the same time?

It can be written that way, and the result is that the alt text is never read. role="presentation", role="none" and aria-hidden="true" remove the element from the accessibility tree, and they win over the alt attribute. When the tool reports this conflict, someone wrote a description and something else, usually a component library default, threw it away.

Does this checker find images added by JavaScript?

No. It reads the HTML your server returns, which is what a crawler sees first. Images inserted by client-side JavaScript are not in that response and are not counted. If the tool reports no images on a page full of them, that gap is itself worth knowing, because an image a crawler cannot see in the initial HTML is an image that is slower to be indexed.

Other on-page SEO tools

Canonical Tag Checker

Validate canonical tags for self-referencing, protocol mismatches, trailing slash conflicts, noindex conflicts, and og:url consistency.

Use tool

Hreflang Validator

Validate hreflang tags for international SEO: self-referencing, return tags, x-default, language codes, and duplicate detection.

Use tool

Schema & JSON-LD Validator

Validate structured data markup: required properties, date formats, nested entities, and JSON syntax. Supports all major schema types.

Use tool

Meta Tag Checker

Check title tags, meta descriptions, Open Graph tags, Twitter cards, canonical URLs, robots directives, and viewport settings.

Use tool

Meta Tags Generator

Write the title, description, and social share tags every page needs. Live character counts plus previews of how it will look in Google and on social.

Use tool

Keyword Density Checker

See which words and phrases your copy actually leans on. Single word, two word and three word counts with density and first-mention position.

Use tool

SERP Snippet Preview

See your title and meta description the way Google renders them, measured in pixels. Desktop and mobile, with the exact character your snippet is cut at.

Use tool

URL Slug Generator

Turn a list of page titles into clean, readable URL slugs. Accents transliterated, filler words optional, and duplicates caught across the whole list.

Use tool

Anchor Text Generator

Build branded, partial, long tail and naked URL anchor variations for any page, then audit the anchors you already have against a natural distribution.

Use tool

Readability Checker

Score any text on six readability formulas at once, then see which sentences are dragging the grade up. Passive voice and long sentences broken out separately.

Use tool

Page Word Counter

Count the words on any URL, with the body copy separated from the nav, header and footer. Unique words, reading time, paragraphs and the heading outline.

Use tool

Open Graph Preview

See the share card Facebook, X, LinkedIn, Slack and Discord will each render from your meta tags, cut at the exact character each one cuts at.

Use tool

Read up on on-page content

A tool tells you what is wrong. These explain what to do about it.

Terms this tool checks

  • Alt Text (Alternative Text)

    Alt text (alternative text) is an HTML attribute added to image tags that describes the content and function of an image.

  • Image Optimization

    Image optimization is the process of reducing image file sizes and improving delivery without sacrificing visual quality.

  • Core Web Vitals

    Core Web Vitals are a set of specific page experience metrics that Google uses as ranking signals: LCP (Largest Contentful Paint) measuring loading speed, INP (Interaction to Next Paint) measuring interactivity, and CLS (Cumulative Layout Shift) measuring visual stability.

Find the images with no alt text across the whole site

One template writes the same broken markup onto every page that uses it, and a single URL will never show you the scale of that. CrawlRaven crawls the site, records the alt coverage of every page, and joins it to Search Console so you can see which of those pages were earning image traffic before the descriptions went missing.