Alt Text for WordPress: Plugin vs. Bulk Generator (2026 Comparison)
WordPress runs roughly 43% of the web. Most of those sites have a Media Library full of images with empty alt fields, and the standard answer — "install a plugin" — usually solves half the problem at twice the cost. This guide compares the two real options for fixing alt text in WordPress at scale: a dedicated plugin or a bulk generator with a CSV/import workflow. Honest tradeoffs, real numbers.
Where WordPress stores alt text
Every image uploaded to the WordPress Media Library is stored as an attachment post (post
type attachment). The alt text lives in the _wp_attachment_image_alt meta field — accessible from:
- Media Library UI. Click any attachment → "Alternative Text" field. Fine for one image at a time.
- Block editor / Gutenberg. When you insert an image into a post, the sidebar exposes the alt field. Edits here update both the block and the attachment.
- WP-CLI. Scriptable — read/write the meta field across thousands of attachments via the command line.
- REST API. The
/wp/v2/mediaendpoint returns and accepts analt_textfield.
Anywhere a theme renders an image with wp_get_attachment_image(), WordPress
pulls the alt text from this meta field automatically. So fixing alt text once, at the
attachment level, propagates everywhere the image is used.
Option A: WordPress alt text plugins
Search the plugin directory for "alt text" and you'll find dozens of plugins. They split into three rough categories:
1. Bulk-fill plugins
Auto-populate empty alt fields with the image's filename, post title, or page title. Free, fast, and almost always the wrong answer.
- ✅ Free, one-click.
- ❌ Output is poor quality. A filename like
IMG_4519tells Google nothing. - ❌ SEO risk. Stuffing every image with the page title is a duplicate-content signal and can trigger Google's image-content mismatch demotion.
2. AI plugins
Use a vision model (often OpenAI or Google) to describe each image. Quality is much better.
- ✅ Per-image accuracy. Real descriptions of what's in the image.
- ✅ Inside the WP admin. No CSV juggling.
- ❌ Cost compounds. Most charge per-image API credits ($0.01–$0.03 each). For a 5,000-image library, that's $50–$150 just to backfill.
- ❌ You're trusting an external plugin with API keys and granting it write access to every attachment.
- ❌ Plugin abandonment is common — many "AI alt text" plugins were last updated 12+ months ago.
3. Manual-assist plugins
Show all images missing alt in a sortable table. You write the alt, the plugin saves it. Doesn't generate — just helps you see the gap.
- ✅ Best quality (you wrote it).
- ❌ Doesn't solve the problem at scale. Still 30–60 sec per image.
Option B: Bulk alt text generator (external) + WP-CLI / CSV import
The alternative: export image URLs from WordPress, run them through an external bulk alt text generator, and import the descriptions back via WP-CLI or a small import script.
- ✅ Lower per-image cost. Most generators include free tiers (10–100 images) and bulk pricing well below per-call API costs.
- ✅ You can review before importing. See all generated alt text in a spreadsheet, edit, then push to WP. No surprises in production.
- ✅ No plugin maintenance. Run once, done.
- ✅ Works on any host — including managed WP hosts that block AI plugins.
- ❌ One-time technical setup. Either WP-CLI or a small PHP/REST script.
- ❌ Not real-time for newly uploaded images — but you can re-run monthly.
Plugin vs. bulk generator: side-by-side
| Factor | WP plugin (AI) | Bulk generator + import |
|---|---|---|
| Cost for 5,000 images | $50–$150 | $0–$30 (depending on plan) |
| Quality control | Per-image only | Spreadsheet review of all |
| Setup time | 5 minutes | 30–60 minutes |
| Real-time on upload | Yes | No (batch only) |
| Maintenance burden | Plugin updates, API keys | None |
| Best for | Small sites, ongoing | Large libraries, one-time backfill |
The bulk WordPress workflow, step by step
Step 1: Export your media library
Use WP-CLI to export every attachment with its URL and current alt text:
wp post list --post_type=attachment --post_status=inherit \
--field=ID --posts_per_page=-1 \
| xargs -I {} wp post get {} --field=guid \
> image-urls.csv If you're on a managed host without WP-CLI, query the REST API: GET /wp-json/wp/v2/media?per_page=100&page=1 and paginate. The response includes id, source_url, and alt_text.
Step 2: Generate alt text
Drop the CSV into a bulk alt text generator. AltBulkText accepts image URLs
directly, so you don't need to download and re-upload — it pulls each image, generates a
description, and exports a CSV with id + alt_text columns ready to
import.
Need a refresher on what makes a good description? See our guide to writing alt text for SEO. The rules: lead with the noun, under 125 chars, skip "image of", match what's actually in the image.
Step 3: Import alt text back into WordPress
With WP-CLI:
while IFS=, read -r id alt; do
wp post meta update "$id" _wp_attachment_image_alt "$alt"
done < alt-text-output.csv Or with the REST API (PHP/Node/curl):
POST /wp-json/wp/v2/media/<id>
{ "alt_text": "Generated description here" } Both routes update _wp_attachment_image_alt on the attachment. WordPress then
uses it everywhere that image renders — past posts, current pages, theme templates,
everything.
Step 4: Verify
Open 5–10 random posts on the live site, view source, and confirm the <img alt="..."> attribute matches what you imported. Then run Google
Search Console's URL Inspection on a few URLs to push fresh crawls.
Common WordPress alt text mistakes
- Filling alt with the post title. A 30-image gallery ends up with all 30 images sharing the same alt — Google treats this as low-quality.
- Editing alt only on the block, not the attachment. The block-level alt only applies to that one usage; the same image elsewhere still has the empty attachment alt.
- Forgetting featured images. Featured images render through theme code that pulls from the attachment's alt — fix once, propagates everywhere.
- Not auditing image SEO plugins. Some "image SEO" plugins inject auto-alt on the front-end without saving to the attachment, which masks the real gap from your CMS.
Frequently asked questions
Does WordPress automatically generate alt text?
No. Core WordPress leaves the alt field empty on upload. Some themes and plugins fall back to the file name or post title at render time, but those are not real descriptions and can hurt SEO.
Will fixing alt text in bulk re-trigger search re-ranking?
Yes, gradually. Google re-crawls high-traffic pages within days and the long tail within weeks. Most sites see a measurable lift in image-search impressions within 4–8 weeks of a bulk alt fix.
Does the Yoast SEO plugin handle alt text?
Yoast warns when alt is missing but does not generate or fill it. It complements a bulk alt fix; it does not replace one.
What's the safest way to undo a bulk import?
Always export the current _wp_attachment_image_alt values to a CSV before
importing new ones. If something is wrong, re-import the original CSV via the same WP-CLI
loop to roll back.
Should I run alt text generation on autopilot?
For new uploads, yes — schedule a monthly batch on anything still missing alt. For the one-time backfill of existing images, do it as a controlled run with manual review of the output before import.
Get started
For most WordPress sites with more than ~500 images, the bulk-generator + import path is cheaper, higher quality, and more reviewable than any single plugin. Plugins still make sense for very small sites or for ongoing automation on new uploads.
Generate alt text for your WordPress library
Try AltBulkText free — 10 images per account, no credit card required. CSV output ready for WP-CLI or REST API import.
Start free