Why Alt Text Is a Real Problem (Not Just an SEO Checkbox)
Open your WordPress media library and count the images with an empty Alt Text field. On most sites I audit, it is 60 to 90 percent of them. Every one of those images is invisible to a screen reader and invisible to Google Images. You can see the scale of the problem with a free accessibility checker that flags missing alt text and heading issues.
Alt text is the text a browser shows when an image cannot load, and the text a screen reader announces when it reaches that image. WordPress keeps it in one place: the Alt Text field on each media item. Under the hood that field is stored in a meta key called _wp_attachment_image_alt and exposed as alt_text over the REST API. Remember that detail, it is how we automate this later.
Three groups of people win when those fields are filled in:
- Screen reader users. Without alt text, a blind visitor hears “image” or, worse, the raw filename. A product page with twelve unlabeled images is unusable.
- Google Images. Google cannot interpret pixels the way you do. Alt text, the surrounding copy, and the filename are its main clues about what an image shows. Image search still sends real traffic to how-to and product content.
- You, when something breaks. A broken image with good alt text still communicates. A broken image with no alt text is a blank rectangle.
The standard advice is to fill these in by hand, one at a time. On a site with 200 images that is a lost weekend. This is exactly the repetitive, judgment-light work AI is built for. The same mindset drives how to write SEO-optimized blog posts with AI, and alt text is just the image-shaped part of that job.
How AI Actually Sees an Image
Most people assume a vision model reads the filename, runs OCR, or checks a database of objects. None of that is how it works, and understanding the real mechanism tells you exactly where to trust it and where not to.
A vision model splits the image into a grid of small patches (think 14 by 14 pixel tiles), converts each patch into a numeric token, and then predicts a description one word at a time from those tokens. Filenames never enter the process. EXIF data does not either. The model describes what the pixels look like, nothing more.
That single fact explains everything you are about to see:
- It is excellent at describing content: “person typing at a desk with a small white robot beside the laptop.”
- It has zero sense of intent. It cannot know that an image is decorative, or that it is the sixth shot in a gallery where the other five already carry the meaning.
- It guesses at small text. On a screenshot full of 11px UI labels it will produce a confident sentence that is partly wrong. Always read the output for text-heavy images.
One more thing worth internalizing: give the model the page title and the description gets dramatically better. Every prompt below includes that context on purpose.

Level 1: Fix a Single Image the Right Way
Start with one image so you can judge the output before you trust it on 200. Open your Media Library, click an image, and look at the Alt Text field on the right. Before you fill it, know the rules, because a bad alt text is worse than none at all:
- No keyword stuffing. “wordpress alt text seo alt text plugin” helps nobody. Google does not reward it, and a screen reader user hears nonsense.
- No “image of” or “picture of”. The screen reader already announced that this is an image.
- Keep it under about 125 characters. That is roughly where some screen readers trail off or read the text as a block.
- Describe the function, not just the appearance, when the image does something. A search icon is “Search”, not “magnifying glass”.
Now the prompt I actually use. Paste the image plus this into your AI tool:
You are writing alt text for a WordPress blog post titled "[post title]". Describe this image for someone who cannot see it. One sentence, under 125 characters. Describe what matters, not the file. Do not start with "image of". If the image is purely decorative, reply with the single word: decorative.
Compare the results. A filename-style description reads “IMG_2043.jpg”. A lazy AI reply reads “a screenshot”. A good alt text reads “Screenshot of the WordPress Media Library showing the Alt Text field under Attachment Details.” Same model, better prompt.
For decorative images (backgrounds, dividers, abstract shapes that add no information) the correct alt text is an empty string, not a description. Say so in the prompt, like I did above, or you will end up with forty images that all announce “abstract blue background”.
Level 2: Bulk-Fix Your Whole Media Library
Here is the part plugin landing pages never show you. There is no “alt text is empty” filter in the media library or in the REST API, so you cannot simply ask for the missing ones. You have to page through every image and check the alt_text field yourself. That is a ten-line loop, and the REST API is happy to do it.
Pull the images a hundred at a time and inspect them:
curl -s "https://yoursite.com/wp-json/wp/v2/media?per_page=100&media_type=image&page=1" -u "user:APP_PASSWORD" > media-page-1.json
Then a short script does the rest: read each item, skip any that already have alt text, send the missing ones to a vision model with the post context attached, and write the result back. Run it in dry-run mode first so you can read the output before anything changes:
Read those lines out loud. If any sound wrong, fix the prompt before you write anything, because 300 images with slightly wrong alt text is worse than an empty field. When you are happy, run the same command with --write to PATCH each item back, one request per image:
curl -X POST "https://yoursite.com/wp-json/wp/v2/media/3401" -u "user:APP_PASSWORD" -H "Content-Type: application/json" -d '{"alt_text":"Screenshot of the WordPress Media Library grid view"}'
WordPress replies with the updated media object and 200 OK. The alt text is now live on the front end, in image search, and in screen reader output. No plugin, no per-image fee. A few hundred images costs cents and finishes in minutes.
One caution about server load. On a budget shared plan, hammering the media library with parallel requests reliably earns a 504 Gateway Timeout and a support ticket. Throttle to a couple of requests per second or run it off-peak. If you keep hitting that wall on the same host, it is worth checking what else is slowing your WordPress site down.
Level 3: Automate Alt Text for Every New Upload
Fixing the backlog is a one-time win. The bigger win is never creating the backlog again. WordPress stores alt text in a post meta key called _wp_attachment_image_alt and fires the add_attachment action the moment a new file lands in the library. That is your hook.
Drop this into a small plugin or your child theme’s functions.php:
Two paths. The plugin path is faster to set up: Yoast SEO Premium and Rank Math both generate alt text on upload, and services like AltText.ai handle bulk plus on-upload generation. The catch is that their output is generic, because they see the image but not the article around it. Use them to clear the backlog and keep a human pass for hero images.
The agent path is what I run now. A scheduled job wakes up every morning, scans for new uploads with empty alt text, asks a vision model with the post title attached, and writes the result back to the media item. It is the same script from Level 2, on a timer. The gap between “AI wrote my alt text” and “AI wrote good alt text” is almost always whether the model was handed the page context.
If your hosting is the bottleneck: Kinsta keeps your site safe with automatic daily backups and one-click restore, so a bad update or a hack is a rollback, not a rebuild. Their support is top tier, and 24/7 live chat is staffed by WordPress engineers who will help fix the actual problem with you, so you are not stuck waiting on your developer to reply. Plans start at $35 per month.
Common Mistakes That Undo Good Alt Text
- Keyword stuffing. The oldest SEO habit in the book. It harms accessibility, reads like spam, and Google has said plainly that alt text is not a keyword field.
- Describing decorative images. Backgrounds, dividers, and abstract flourishes should carry
alt="", which tells screen readers to skip them entirely. - Reusing one description across a gallery. If six images are all “screenshot of the dashboard”, a screen reader user learns nothing about how they differ.
- Forgetting the featured image. Your featured image pulls its alt text from the media item. If that field is empty, your most prominent image is the one nobody can hear.
- Trusting AI on screenshots. Small UI text gets hallucinated. Read every alt text for text-heavy images, no exceptions.
To see the payoff, it is worth making sure Google Analytics is set up on your WordPress site before and after you fix the library, so you can watch image search traffic land.
Check out our guide to the 10 WordPress speed fixes that actually work, images and all. Slow media is usually the first thing to fix.
See Our GuideFrequently Asked Questions
Yes, but indirectly. Alt text is one of the signals Google uses to understand what an image shows, and it helps your images appear in Google Images. The bigger win is accessibility, and sites that serve every visitor tend to keep them. Do not expect alt text alone to move rankings for a competitive keyword.
Aim for under 125 characters and one sentence. Longer alt text gets truncated or read as a block by some screen readers. If an image genuinely needs a paragraph to explain, that explanation belongs in the body copy, not in the alt field.
It can generate a first pass for all of them, but not a final one. AI describes what the pixels show. It does not know whether an image is decorative or what the surrounding article is arguing. Use it for volume, then review the images that carry real meaning.
Empty. Set alt=”” so screen readers skip the image entirely. A description of a decorative divider or background is noise, not accessibility, and it wastes the reader’s time.
Yes. Alt text is stored on each media item in the alt_text field and is writable over the WordPress REST API using an application password. A short script can page through your library, find the empty fields, and write them back, with no plugin required.
Final Thoughts
Alt text is the rare task where AI is genuinely better than manual work, because it never gets bored, and genuinely worse than you at one thing: knowing intent. Generate a first pass for hundreds of images in an afternoon, then apply your judgment to the handful that matter. An empty alt field quietly costs you accessibility, image search traffic, and a chunk of your weekend. AI just handed the weekend back.

