What the checker reads
It fetches one page, up to 900 KB, and reads every <img> element in the HTML the server sends. For each image it notes the alt attribute (absent, empty or its text), the image address, any aria-hidden or role attribute, whether an element around it has aria-hidden="true", the width and height, and whether the image sits inside a link.
It reads up to 300 images. Past that, the report says how many more images on the page were not checked. A page that returns an error status or is not HTML stops the check: “The page returned HTTP 404, so there are no images to check.”
For the image address it prefers data-src and data-lazy-src over src, because lazy-loading plugins put a placeholder in src and the real file in one of those. That is the address shown in the Image column.
What it cannot see
- Images added by JavaScript after the page loads: most sliders, lightbox galleries, Instagram feeds and some lazy-load setups.
- CSS background images, such as a cover block’s background or a hero set in the theme’s styles. Google does not index CSS images either.
- Images inside <noscript> tags, which lazy-load plugins use as a fallback copy.
- Inline <svg> graphics and icon fonts. Only <img> elements are read.
- Whether the alt text is accurate. It catches alt text that is missing, a file name or a filler word, not alt text that describes the wrong thing.
Every status, in the order it checks
Each image gets exactly one status. The checker tests them in this order and stops at the first that matches, so an image hidden with aria-hidden, on the image or on an element around it, is reported as decorative even if it has no alt attribute.
| Status | When it applies | Counted as |
|---|---|---|
| Marked decorative | The image, or an element around it such as its link, has aria-hidden="true", or the image has role="presentation" or role="none" | Fine |
| Tracking pixel | width and height are both 2 or less | Fine |
| No alt attribute | There is no alt attribute at all. Screen readers may read the file name instead. | Error |
| Empty alt on a linked image | alt is empty, the image is inside a link, and the link has no other text, aria-label, title or image with alt | Error: the link has no name |
| Empty alt (fine if decorative) | alt is empty and the image is not the only content of a link | To review |
| File name as alt | The alt ends in a file extension, starts like a camera name (IMG, DSC, PXL, Screenshot followed by a number), is a slug with no spaces such as hero-banner-2x, or equals the file’s own name | To fix |
| Generic alt | The whole alt is one of 17 filler words: image, images, img, photo, photograph, picture, pic, graphic, icon, banner, thumbnail, placeholder, untitled, alt, alt text, default or featured image | To fix |
| Starts with “image of” | The alt begins with image of, picture of, photo of, photograph of or graphic of, with or without a or an | To fix |
| Descriptive alt | Anything else | Fine |
Reading the verdict and the two lists
The headline counts the images in Images to fix. It reads “N images to fix” when at least one has no alt attribute or is a linked image with empty alt, the two cases that break things for screen reader users. It reads “N images could use better alt text” when the only problems are file names, filler words or an “image of” opening. “No images need fixing” means none of those were found.
Images to fix lists the problems worst first, with the image address, its current alt and the reason. Empty alt: check these are decorative lists every unlinked image with alt="". Those are not errors. Empty alt is the right answer for a decorative image, and only you can tell which ones are. Images with descriptive alt, decorative images and tracking pixels are counted but not listed.
When the page looks like WordPress, a note under the lists says where to change alt text. For an image placed in post content, that is the image block, because changing the Media Library does not update images already placed. Featured images, the site logo and WooCommerce product images read the Media Library each time the page is built, so the note says to change those there. The section on where alt text lives covers the rest.
Decorative or informative: what each image needs
The W3C’s images tutorial, part of its Web Accessibility Initiative, sorts images by the job they do, and the job decides the alt text. WCAG 1.1.1, Non-text Content, a Level A requirement, asks for a text alternative that serves the same purpose as the image. For a purely decorative image, that purpose is nothing, so the alternative is an empty alt.
| The image is | Its alt text should | WordPress example |
|---|---|---|
| Informative: it shows something the text does not | Say what it shows, briefly | A photo of the finished dish in a recipe |
| Functional: the only content of a link or button | Say where the link goes or what the button does | A logo linking home, an author photo linking to the About page |
| Text in an image | Repeat the text | A banner reading “Free shipping over $50” |
| Complex: a chart or diagram | Give the short point, and put the detail in the text or a caption | A chart of monthly traffic |
| Decorative: it adds nothing a visitor would miss | Be empty (alt="") | A divider flourish, a background texture, a photo that repeats the caption beside it |
A quick test from the same tutorial: if you removed the image, would a visitor lose information? If not, it is decorative. If the image is next to text that says the same thing, an empty alt avoids reading it twice.
Writing alt text that does its job
Describe what the image shows in the context of the page. The same photo of a loaf needs different alt text in a post about crumb structure and in a post about scoring patterns. Leave out “image of” and “picture of”: screen readers already announce that it is an image.
Google’s image guidance says it uses alt text together with computer vision and the page’s content to understand an image, and asks for useful, information-rich alt text that uses keywords appropriately, not a list of keywords. Its own example improves “puppy” to “Dalmatian puppy playing fetch”. Google also uses the alt text of a linked image as that link’s anchor text.
There is no fixed length limit in the HTML standard or in Google’s guidance. Write what the image adds, which is usually one short sentence or less. Save long explanations for the caption or the body text, where every visitor can read them.
A camera file name
Before: IMG 4521
After: Sourdough loaf cut open, showing an open, airy crumb
Flagged as File name as alt. Say what the photo shows, in the terms of the post.
A redundant opening
Before: Image of a proofing basket
After: Dough rising in a floured cane proofing basket
Flagged as Starts with “image of”. The fix drops the opening and adds the detail the post is about.
A linked author photo
Before: (empty alt, inside a link to /about/)
After: About Maria, the baker behind this blog
Flagged as Empty alt on a linked image. A linked image’s alt names the link, so describe the destination, not the face.
Keyword stuffing
Before: sourdough bread recipe easy sourdough best sourdough bread
After: Two sourdough boules cooling on a wire rack
The checker passes the first one, because it is not a file name or a filler word. Google’s guidance asks you not to do it.
Where alt text lives in WordPress
WordPress keeps alt text in two places. Each item in the Media Library has an Alternative Text field. And each image placed in a post’s content carries its own copy of the alt text in the post’s HTML. When you insert an image, the editor copies the library’s alt into the post. After that the two are separate: editing one does not change the other.
Which copy a visitor gets depends on how the image is placed, which is why fixing an image in the Media Library sometimes works and sometimes changes nothing.
| Image | Where its alt comes from | Where to change it |
|---|---|---|
| Image block in a post or page | The block’s own copy, made when the image was inserted | Select the block, then Alternative text in the block settings sidebar |
| Gallery block | Each image inside it is an image block with its own copy | Select each image inside the gallery |
| Featured image (classic theme) | The Media Library, read each time the page is built | Media → Library → the image → Alternative Text |
| Post Featured Image block (block theme) | The Media Library; when the block links to the post, WordPress uses the post title instead | The Media Library, or the post title for linked ones |
| Site logo | The Media Library; if that is empty, WordPress uses the site title | Media → Library → the logo |
| WooCommerce product images | The Media Library. Since WooCommerce 9.3.3, an empty one falls back to the product name, or “Product name - Image 2” for gallery images | Media → Library, or Set product image in the product editor |
| Page builder image widgets | Usually the Media Library, read at render time; check your builder’s widget settings | The widget settings or the Media Library |
Themes that unlink the logo on the home page also set its alt to empty there, because the site title sits next to it. The checker lists it under Empty alt to review, and on that page it is correct.
Plugin settings that write alt text for you
Some SEO plugins fill in alt text automatically. That can explain alt text you never wrote, and why the checker flags it.
Rank Math has Add missing ALT attributes under Rank Math SEO → General Settings → Images, a tab that appears once its Image SEO module is on. It is off by default, and its default format is %filename%. When it is on, Rank Math fills the alt of images in post content, featured images and WooCommerce product images as the page is built, using the file name with hyphens and underscores turned into spaces and the size suffix removed. Nothing is saved to the Media Library. Two side effects show up in this checker: IMG_4521.jpg becomes “IMG 4521”, which is flagged as a file name, and images you left empty on purpose get the file name too, because the setting fills empty alt as well as missing alt.
SEOPress can set alt text from the file name when you upload an image, under SEO → Advanced → Image SEO (as of October 2026). Unlike Rank Math’s, that alt is saved to the Media Library, so it reaches new posts too, and a camera file name becomes a camera alt.
Yoast SEO does not write alt text. Its content analysis checks whether a post has images and whether their alt text includes the focus keyphrase. Treat that as a reminder, not a target: work the keyphrase in only where it describes the image.
Worked example: a recipe post
Illustrative values. A food blogger checks a sourdough recipe post on a site running Rank Math with Add missing ALT attributes on. The page has 14 images.
Summary (illustrative)
Images checked 14 · Descriptive alt 5 · File name as alt 3 · Empty alt on a linked image 1 · Starts with “image of” 1 · Empty alt (fine if decorative) 2 · Marked decorative 2. Verdict: 5 images to fix.
The verdict is “to fix”, not “could use better”, because of the linked image with empty alt.
The three file names
“IMG 4521”, “IMG 4533”, “IMG 4540”
Step photos uploaded straight from a phone. Rank Math built these from the file names because the image blocks had no alt. Writing alt in each block replaces them, since the setting only fills empty ones.
The linked image
The author photo in the bio box, linking to /about/
The bio box is part of the theme, so its alt is set wherever the theme takes the photo from: the theme’s own settings or the Media Library.
The two empty alts to review
A wheat-sprig divider printed by the theme, and the finished loaf in the recipe card
Both sit outside the post content, so Rank Math’s setting did not touch them. The divider is decorative: leave it. The recipe card photo shows the dish and needs alt text, set wherever the recipe plugin takes it from, usually the Media Library.
After the edits, the re-run reads 11 descriptive, 1 empty to review (the divider) and 2 decorative, with the verdict No images need fixing. The owner also renamed new uploads before adding them, so the plugin’s fallback has something better to work with.
Troubleshooting by symptom
When the report does not match what you expect, the cause is usually the difference between the HTML the server sends and the page you see in a browser.
| Symptom | Likely cause | What to do |
|---|---|---|
| A slider or gallery is missing from the list | It is built by JavaScript after load, or its images are CSS backgrounds | Check its alt text in the slider or gallery plugin’s own settings |
| You fixed alt in the Media Library and nothing changed | The image sits in an image block, which keeps its own copy | Edit the block’s Alternative text instead |
| You fixed the block and the checker still shows the old alt | A page cache or CDN served the old HTML | Purge the cache for that page and re-run |
| The same image is listed twice | The theme prints it twice, for example once for desktop and once for mobile, and hides one with CSS | Fix both, or mark the hidden copy aria-hidden in the theme |
| A thumbnail with no alt is counted as decorative | It, or the link around it, has aria-hidden="true", which hides it from screen readers | Fine if a text link to the same page sits next to it. If not, screen reader users can still reach the link but hear no name: remove aria-hidden and give the image alt text |
| More images were found than you can see | Hidden menus, mobile headers, related-post widgets and footer badges are in the HTML too | Check those: they are on every page, so one fix covers the site |
| Alt text you never wrote | An SEO plugin’s automatic alt, WooCommerce’s product-name fallback, or the logo’s site-title fallback | See the two sections above |
Checking the fix, and what to leave alone
Re-run the checker on the same URL after clearing the page cache. To hear what a screen reader gets, open the page in Chrome, inspect the image, and read its computed Name in the Accessibility pane of DevTools.
In Search Console, Performance with the search type set to Image shows clicks and impressions from Google Images. Alt text is one input among several, so treat a change there as a trend over weeks, not proof of one edit.
Leave these alone: decorative images with empty alt, tracking pixels, the home-page logo next to the site title, and images marked aria-hidden on purpose. And there is no need to chase a perfect score on templates you cannot edit: fix the images in your own content first, where most of the meaning is.
Fixing alt text one image block at a time across an old blog is slow. RankHive drafts alt text for images in your posts and pages, and you approve it before its plugin writes it to WordPress.
FAQ about the Alt Text Checker
Should every image have alt text?
Every image needs an alt attribute, but not every image needs a description. A purely decorative image should have an empty one (alt="") so screen readers skip it. Images that carry information, and images that are the only content of a link, need real alt text.
How do I add alt text in WordPress?
For an image in a post, select the image block and fill in Alternative text in the block settings sidebar. Alt text in the Media Library is copied in when you insert an image, but later changes there do not update images already placed. Featured images, the site logo and WooCommerce product images read the Media Library directly, so change those there.
Why are some images on my page missing from the list?
The checker reads the HTML the server returns. Images added by JavaScript after the page loads, CSS background images and inline SVG graphics are not in that HTML as <img> elements, so they are not listed.
Is empty alt the same as no alt?
No. alt="" tells screen readers to skip a decorative image. No alt attribute at all leaves them guessing, and many read out the file name. That is why the checker treats missing alt as an error and empty alt as something to review.
Does alt text help my images rank in Google Images?
It helps Google understand them, together with the page’s text, the file name and what the image shows. Google asks for descriptive alt text in context and warns against stuffing it with keywords.
Why is my alt text flagged as a file name when it has words?
It matches one of the patterns for file names: it ends in an extension such as .jpg, starts like a camera file (IMG, DSC, PXL or Screenshot followed by a number), is a slug such as blue-mug-v2 with no spaces, or equals the image file’s own name. Rewrite it as a short description.
Should alt text include my keyword?
Only where it describes the image naturally. One accurate description that happens to include the topic of the page is enough. Repeating keywords in alt text does not help readers, and Google’s guidance asks you not to.