What we flag
- No alt attribute. Screen readers may read out the file name instead. Every image needs an alt attribute, even if it’s empty.
- Empty alt. Listed as a note, not an error. Right for decoration, wrong for anything with meaning.
- Filename or one-word alt.
IMG_2041.jpg,imageorbanner. These are CMS defaults that describe nothing. - “Image of…” Screen readers already say it’s an image. Start with the subject.
- Over 125 characters. A description, not a caption. Trim it.
- No width or height. The browser can’t reserve space, so the layout shifts when the image loads.
- Lazy-loading near the top.
loading="lazy"on the first images delays the browser from fetching them. If one is your largest image, that slows Largest Contentful Paint.
Writing good alt text
Describe what the image adds to the page, as you would to someone on the phone. Context changes the answer: the same photo might be “Founder presenting at a meetup” in a blog post and “Blue linen shirt, front view” on a shop page. For a linked image, describe where the link goes. For a chart, give the takeaway (“Clicks rose from 2 to 40 a day after August 10”) and put the numbers in the text too.
Some quick rules:
- Don’t repeat the caption word for word; screen readers would read both.
- Don’t list keywords. Write for the person who can’t see the image.
- Logos: the company name is enough.
- Icons next to a text label are decorative:
alt="".
Limits
We check <img> tags in the server HTML. CSS background images, inline SVG and images added by JavaScript aren’t listed. We skip 1×1 tracking pixels and list up to 300 images. For the performance side, run the page through the PageSpeed Insights, and check heading structure with the heading checker.