Key takeaways
- A missing alt attribute is a defect; an empty alt="" is correct, deliberate markup for a decorative image, and treating the two the same produces findings nobody can fix without breaking correct markup
- Google's own guidance is to describe the image specifically ("Dalmatian puppy playing fetch"), not name the file ("image1.jpg") or stuff it with keywords
- Presence isn't enough on its own: alt text over roughly 125 characters, a redundant leading phrase like "image of", the same alt text reused across images, and alt text that is really just a filename are all quality problems a presence-only audit misses
- Auditing this at scale needs a crawl, because the problem is rarely one image, it's a pattern across a template or a content type
Most alt text advice stops at "does the image have one", and that single check produces a genuinely wrong result on a large share of real sites, because it can't tell a missing alt attribute from a deliberately empty one. Here's how to audit image alt text properly: the distinction that actually matters, five quality checks worth running once presence is confirmed, and how to do this across a whole site rather than one page at a time.
The distinction most audits get wrong
An alt attribute can be in one of three states, and only one of them is a defect:
- Absent entirely (no
altattribute on the tag at all). This is the defect. A screen reader falls back to announcing the image's filename, which is rarely useful and often nonsensical. - Present but whitespace-only (
alt=" "). Also a defect, in practice: nobody marks a decorative image this way on purpose, so it reads as an accident rather than an intentional choice. - Present and deliberately empty (
alt=""). This is correct markup for a purely decorative image, not a defect. It tells assistive technology to skip the image entirely, rather than interrupt with a filename or a meaningless label for something that carries no information of its own, such as a spacer graphic or a repeated decorative flourish.
An audit that flags all empty alt attributes as missing alt text produces findings that cannot be fixed without making the markup worse: "fixing" a correct alt="" on a decorative logo by adding descriptive text you had to invent creates a false description for assistive technology to read out, for an image that was never meant to be described at all. If a site check ever tells you every image needs alt text with no exception for decorative ones, that check is describing accessibility guidance incorrectly, not just being strict.
What good alt text actually looks like
Google's own image SEO guidance is specific about what separates useful alt text from either extreme:
"Focus on creating useful, information-rich content that uses keywords appropriately and in context."
And its worked example shows the progression from nothing worth having to genuinely useful:
- Missing:
<img src="puppy.jpg"/>, no alt attribute at all. - Better:
<img src="puppy.jpg" alt="puppy"/>, present, but generic. - Best:
<img src="puppy.jpg" alt="Dalmatian puppy playing fetch"/>, specific enough to actually describe the image.
The same guidance warns explicitly against the opposite failure: "Filling alt attributes with keywords ('keyword stuffing') results in a negative user experience and may cause your site to be seen as spam." Alt text is a description written for a person who cannot see the image, not a place to repeat a target phrase. If it wouldn't make sense read aloud to someone who has never seen the picture, it isn't doing its job, however well it targets a keyword.
Five quality checks worth running once presence is confirmed
Presence, and getting the absent-versus-deliberately-empty distinction right, is only the first pass. On real sites, most of the alt text that technically exists still has a quality problem:
- Length. WebAIM's guidance is to keep alt text under about 125 characters. Screen readers announce it in full with no way to skip ahead, so much longer than that starts to feel like being read a paragraph rather than shown an image. A description that needs more room than that to say something specific usually belongs in surrounding body text instead.
- A redundant leading phrase. Alt text that starts with "image of" or "picture of" wastes the description's first few words on something a screen reader already announces on its own: that the element is an image. Cut straight to what it shows.
- The same alt text reused across two or more images. This is usually a copy-pasted placeholder rather than a real description written for each image, and it tells a screen reader nothing that distinguishes one image from the next.
- Alt text that is really just the filename.
alt="IMG_2043.jpg"oralt="dsc_0091"technically fills the attribute, but a screen reader then announces a camera's file-naming convention instead of a description, which is barely better than announcing nothing. - An underscore in the image's own filename. Not alt text itself, but worth checking alongside it: search engines read a hyphen as a word separator in a filename, but treat an underscore as joining the words on either side of it, so
black-kitten.jpgcarries more signal thanblack_kitten.jpgeven before either image gets its alt text written.
Auditing one page versus auditing a whole site
A single page is easy to check by eye. The actual cost of bad alt text almost never shows up on one page: it shows up as a pattern repeated across every product page a template generates, every post in a category, or every image a CMS inserts the same way by default. Finding that pattern needs a crawl, not a page-by-page read-through, because the fix is usually one template change once the pattern is confirmed, not fifty individual edits.
For a quick, single-page check while you're already looking at one image or one section, our free image alt text checker runs all five quality checks above against any URL you paste in, plus the absent-versus-deliberately-empty distinction itself, and exports the full per-image list as a CSV.
For the pattern across a whole site, Crawl Cove's image SEO checker catalogues every image as it crawls: its source page, its alt text, and its declared width and height, so missing alt text and layout-shift-causing missing dimensions both surface with the page each one sits on. It reads your HTML rather than downloading the images themselves, so it reports what your markup declares, not file weight; pair it with a dedicated image-compression tool if file size is also a concern. Because alt text and heading structure both feed into the same accessibility basics that overlap with SEO, the accessibility checker covers the same alt-text finding alongside heading order and link text, in the same crawl.
If your site runs on WordPress specifically, missing width and height attributes are flagged too, since that's the usual cause of layout shift as WordPress-generated image tags load in in a browser: a second, distinct problem from alt text that the same crawl catches at no extra cost.
Fixing what you find
Once a crawl has the full list, each image resolves to one of two outcomes, not a single generic "add alt text" instruction:
- It's meaningful. Write a specific description, the way Google's own "Dalmatian puppy playing fetch" example does: what the image actually shows, in plain language, without a redundant leading phrase, a copy-pasted duplicate, or a keyword crammed in where it doesn't belong.
- It's decorative. Mark it with a deliberate
alt="". That is the fix, not a placeholder to come back to later. A decorative image with a genuinely empty alt attribute needs nothing else done to it.
Re-run the crawl afterwards to confirm the pattern actually cleared across every page the template touches, rather than assuming a fix to one page fixed all of them.
Wrap-up
Auditing alt text properly means treating "absent" and "deliberately empty" as two different things, because only one of them is a defect, and checking the alt text that does exist against real quality criteria, not just its presence. Length, redundant phrasing, duplication, and filenames masquerading as descriptions all cost real screen-reader users and real image-search visibility, on top of whatever a presence-only check would have caught. Run it across a full crawl rather than one page at a time, since the pattern, not the individual image, is usually where the fix actually lives.
Frequently asked questions
- Is alt="" always wrong?
- No, and treating it as wrong is one of the most common audit mistakes. An empty alt attribute is the World Wide Web Consortium's correct way to mark a purely decorative image, telling a screen reader to skip it rather than announce a filename or a meaningless label. The defect is an alt attribute that is absent entirely, or present but only whitespace, not one that is deliberately empty.
- How long should alt text be?
- Long enough to describe the image specifically, short enough to stay usable. WebAIM's guidance is to keep it under about 125 characters: screen readers read alt text in full with no way to skip ahead, so much longer than that starts to feel like being read a paragraph rather than shown an image.
- Does alt text need to include my target keyword?
- Only if it genuinely describes the image. Google's own guidance warns that filling alt attributes with keywords "results in a negative user experience and may cause your site to be seen as spam." Describe what the image actually shows; if the keyword belongs there naturally, it will usually appear on its own.
- Can I just reuse the same alt text across similar images?
- Not if the images are meant to be distinct. The same alt text on two or more different images usually means a placeholder was copy-pasted rather than a real description written for each one, and it tells a screen reader nothing that distinguishes them.
- What about images that are just decorative, like background textures or dividers?
- Mark them with a deliberate, empty alt="". That is correct, not lazy, and it is the one case where "no description" is the right description.