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.
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 markup | What a screen reader does | What it means |
|---|---|---|
| No alt attribute | Announces the filename, or says nothing useful | A gap. Every image needs a decision, and this is the absence of one |
| alt="" | Skips the image silently | Correct for decoration. Not an error, and not something to fix |
| A written description | Reads it in one uninterrupted pass | The goal, provided the description is about the image and not the file |
| A filename or a duplicate | Reads out DSC_0431 or the same phrase twelve times | Present, counted as a pass by most tools, and no more usable than nothing |
| aria-label with no alt | Reads the aria-label | Named for assistive technology, invisible to a crawler and to the broken-image fallback |
| alt text plus role="presentation" | Skips the image, discarding the alt text | A 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.
Images inside links follow a different rule
A link takes its accessible name from its content. When the content is an image and nothing else, the alt text is the name of the link, and this is where the usual advice about decoration produces the worst result on the page.
- A logo linking to the homepage with alt="" is a link a screen reader announces as its URL
- A product thumbnail linking to a product page with alt="product image" tells the reader nothing about which product
- An icon-only link, such as a share or edit button, has no text anywhere and depends entirely on the image being named
- Two links to the same page, one on the image and one on the heading beneath it, are read as two separate links to a screen reader unless the image is left empty on purpose
Describe the destination, not the picture
For an image that is the whole of a link, the useful alt text names where the link goes. alt="CrawlRaven pricing" on a logo that links to the pricing page is better than alt="CrawlRaven logo", because the reader is choosing whether to follow the link, not admiring the artwork.
The last case in that list is the exception. When a thumbnail and a heading link to the same page, an empty alt on the image is correct: the heading names the link already, and describing the image as well makes a screen reader read one destination twice. The tool flags an image-only link only when nothing else in the anchor names it, which is how the two cases are told apart.
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.
| Pattern | Where it comes from | The fix |
|---|---|---|
| DSC_0431.jpg, screenshot-2026-03-14 | A CMS filling the field from the uploaded filename | Describe the subject. The filename is never the description |
| The same alt on many images | A template writing one variable into every image on the page | Vary 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 reader | Drop the prefix. "A woman at a laptop" is what gets read |
| A 300-character description | Treating alt as a caption | One sentence in alt, the detail in a caption or in the copy |
| The target keyword, repeated | Alt text treated as a ranking lever | Describe 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
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 toolHreflang Validator
Validate hreflang tags for international SEO: self-referencing, return tags, x-default, language codes, and duplicate detection.
Use toolSchema & JSON-LD Validator
Validate structured data markup: required properties, date formats, nested entities, and JSON syntax. Supports all major schema types.
Use toolMeta Tag Checker
Check title tags, meta descriptions, Open Graph tags, Twitter cards, canonical URLs, robots directives, and viewport settings.
Use toolMeta 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 toolKeyword 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 toolSERP 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 toolURL 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 toolAnchor 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 toolReadability 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 toolPage 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 toolOpen 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 toolRead up on on-page content
A tool tells you what is wrong. These explain what to do about it.
Google May 2026 Core Update: Live Tracking, Volatility Data & Recovery Guide
Read guideGoogle March 2026 Core Update: Impact Analysis & Recovery Guide
Read guideGoogle’s First-Ever Discover Core Update (Feb 2026): What Changed & What Publishers Should Do
Read guideTerms 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.