Repository navigation
Releases: howarddc/everyalt-wordpress-plugin
Release list
EveryAlt 1.1.1 — GPT-6 Luna, half the price 🌙
A small update to keep your alt text running smoothly. OpenAI is retiring GPT-5.4 nano (shutdown April 1, 2027), so EveryAlt now uses GPT-6 Luna, OpenAI's recommended replacement. It's also half the price.
🔄 What changed
New default OpenAI model: GPT-6 Luna.
| Input / 1M tokens | Output / 1M tokens | |
|---|---|---|
| GPT-5.4 nano (retiring) | $0.20 | $1.25 |
| GPT-6 Luna | $0.10 | $0.50 |
EveryAlt keeps GPT-6 Luna's reasoning turned off, because alt text doesn't need it and reasoning is billed as output. In practice, OpenAI cost per image should drop by roughly half.
New home. EveryAlt now lives at howarddc/everyalt-wordpress-plugin, and updates come from there. The old address redirects, so sites on earlier versions still get this update, and 1.1.1 switches them to the new address.
Credits. EveryAlt is now credited to Rob Howard.
Prices date, everywhere. The "prices as of" date in Settings is now shown in your site's language, and future price updates won't need new translations.
Safer updates. EveryAlt now installs only the zip attached to each release, which carries the update checker with it. If a release is ever missing that file, sites skip it instead of installing a copy that can't update itself.
⬆️ Upgrading
Update from the dashboard as usual. No action is needed:
- Sites using GPT-5.4 nano switch to GPT-6 Luna automatically. Your OpenAI key keeps working.
- Sites using Gemini or DeepInfra keep their choice.
- Older entries on the Logs tab still show "GPT-5.4 nano", so your spending history stays accurate.
Still on 1.0.2? That version can't see updates in the dashboard. Download everyalt-1.1.1.zip below and upload it under Plugins → Add New → Upload Plugin, choosing Replace current with uploaded. Automatic updates work from then on.
Full changelog: v1.1.0...v1.1.1
💜 Built by Rob Howard. Free, open, unlimited, your key.
EveryAlt 1.1.0 — Choose your AI, in your language, in the background 🚀
EveryAlt 1.1.0 is our biggest update yet. Pick your AI model (OpenAI, Google Gemini, or privacy-first DeepInfra), let EveryAlt work through your whole library in the background, get alt text in your site's language, and keep costs in check with spending limits. It's also been through a full WCAG 2.1 AA accessibility review, because an accessibility plugin should be accessible itself.
Same deal as always: 100% free, no limits from us, your key, your usage.
✨ What's new
Choose your AI model. Pick a model in Settings and add the key for that provider. You can save keys for several providers and switch any time.
| Model | Provider | Input / 1M tokens | Output / 1M tokens |
|---|---|---|---|
| GPT-5.4 nano (default) | OpenAI | $0.20 | $1.25 |
| Gemini 3.1 Flash-Lite | Google Gemini | $0.25 | $1.50 |
| DeepSeek V4.1 Flash | DeepInfra | $0.20 | $0.60 |
| GLM-5.3-Flash | DeepInfra | $0.15 | $0.50 |
Settings walks you through getting a key for each provider. 🔒 DeepInfra runs its models in its own data centers in the US and Canada with zero data retention: your images aren't stored, request content isn't logged, and nothing is used for training.
Background processing. Bulk jobs and new uploads now run in a background queue. Close the tab and EveryAlt keeps going, retries failures automatically, and uploads finish instantly. It works even where WP-Cron is blocked (localhost, sites behind a password). The bulk tabs gain a Generate for all button that covers your whole library, not just one page.
Alt text in your language. Alt text and titles are written in your site's language, or in each image's own language on multilingual sites running Polylang or WPML. You can also choose a language in Settings.
Decorative images. Purely decorative images (dividers, spacers, background patterns) get empty alt text on purpose, so screen readers skip them as WCAG recommends. They're flagged on the Review tab with a Describe anyway button. When in doubt, EveryAlt describes the image.
Spending controls. The Logs tab shows estimated spend per month and per model. Set a monthly spending limit and generation pauses when you reach it; queued images simply wait.
Fix older posts (optional). WordPress copies an image's alt text into a post when you insert it, so alt text generated later never reached older posts. Turn on Settings → Existing posts and EveryAlt fills in empty alt text on those pages as they're displayed. Your posts aren't modified, and alt text written by an author is never replaced.
Redesigned bulk tabs. Clear, selectable image cards show progress and results right on each image.
♿ Accessibility
A full WCAG 2.1 AA review of every EveryAlt screen, with all issues fixed: labelled fields, screen-reader announcements for results, keyboard focus that stays where you are, 4.5:1 text contrast, and a distinct page title for each tab. Verified with axe-core (zero violations), plus keyboard, contrast, and reflow testing. The default prompt now also asks the model to include important visible text, such as logos and headings.
🔧 Improvements & fixes
- Fixed automatic updates. The 1.0.2 ZIP was missing the update checker. Release ZIPs now always include it, and the build fails if it's missing.
- Fixed deactivating the plugin no longer deletes your API key and settings. Uninstalling now removes everything cleanly.
- Fixed Editors and Authors can use the block editor and Media screen buttons on images they can edit, and errors are shown instead of silently doing nothing.
- Fixed auto-generation runs exactly once per upload, after all image sizes exist.
- Fixed the 4MB limit now applies to the resized image EveryAlt actually sends, so large phone photos are no longer skipped.
- Fixed cost estimates now include "thinking" tokens that some providers report separately.
- Improved Gemini sends images at low resolution, cutting its cost per image roughly in half.
- Improved bulk and review tabs are paginated and much faster on large libraries.
- Improved full translations for all 7 languages (Spanish, Italian, Japanese, French, Brazilian Portuguese, German, Dutch), plus a Spanish plural-forms fix.
- Security CSV log exports are protected against spreadsheet formula injection, and unused legacy settings (including a plain-text HTTP password) are removed.
- Added a warning if your saved API key can no longer be decrypted (for example, after
wp-config.phpsecurity keys change).
⬆️ Upgrading
Your API key and settings carry over.
⚠️ On 1.0.2? Update manually this once. The 1.0.2 ZIP shipped without the update checker, so those sites won't see 1.1.0 in the dashboard. Download everyalt-1.1.0.zip below and upload it under Plugins → Add New → Upload Plugin, choosing Replace current with uploaded. Automatic updates work again from 1.1.0 on. Sites on 1.0.1 get the update notice as usual.
A few things work differently:
- Model: OpenAI is retiring
gpt-5-nano, so existing installs switch to GPT-5.4 nano automatically. Its per-token price is higher, but with reasoning turned off it uses far fewer tokens per image, so cost per image is typically lower than before. - Uploads now generate in the background and finish instantly. Prefer the old behavior? Choose Settings → New uploads → Generate during the upload.
- Decorative image detection is on by default (Settings → Decorative images).
- Existing posts alt text fill is off by default, so turn it on if you want it.
- Developers: the
everyalt_openai_modelfilter is replaced byeveryalt_model, and the price filters now also receive the model slug. There's a neweveryalt_output_localefilter. See the README for details.
Full changelog: v1.0.2...v1.1.0
💜 Built by HDC. Free, open, unlimited, your key.
EveryAlt 1.0.2 — Now it titles your images too 🖼️
EveryAlt has always written alt text for every image, free and unlimited with your own OpenAI key. With 1.0.2, it now writes your image titles as well — so the filename gibberish (IMG_1234, christina-…-unsplash, ChatGPT Image May 29…) finally turns into something readable.
Same deal as always: 100% free, no limits from us, your key, your usage.
✨ What's new
AI image titles. EveryAlt can now generate descriptive WordPress image titles, three ways:
- Automatically on upload — flip the new "Automatically generate image titles when images are uploaded" switch in Settings.
- Bulk Image Title Generator — a new tab that finds every image still named like its raw upload file (camera names, stock-photo IDs, screenshots, AI exports,
(1)duplicates…) and titles them in one pass. - Review Image Titles — a new tab to edit, save, or regenerate titles for images that already have a custom one.
Titles get their own editable prompt, tuned to produce short, clean titles instead of full alt-text sentences.
🔧 Improvements & fixes
- Smarter "needs a title" detection — recognizes underscores, hyphen slugs, duplicate
(1)suffixes, camera/screenshot/stock/AI naming patterns, and random ID strings, so the right images surface for retitling (WordPress fills the title with the filename on upload, so almost nothing is ever truly "empty"). - Fixed a PHP 8.2+ deprecation notice from a dynamic property (
$plugin_screen_hook_suffix). - Fixed admin asset caching — CSS/JS are now versioned by file-modification time, so updates load reliably without a manual hard refresh.
- Cleaned up the admin intro notice and linked the EveryAlt name to [everyalt.com](https://everyalt.com).
⬆️ Upgrading
Update the plugin as usual (or via the in-dashboard update notice). No settings changes are required — image-title generation is off by default; turn it on under Media → EveryAlt → Settings whenever you're ready. Your existing alt-text behavior is unchanged.
Heads-up: when both auto-generate toggles are on, each upload makes two OpenAI calls (one for alt text, one for the title), so per-image cost is roughly double. Still pennies — and still billed by OpenAI directly, never by us.
Full changelog: v1.0.1...v1.0.2
💜 Built by [HDC](https://hdc.net) — free, open, unlimited, your key.``
EveryAlt Plugin for WordPress 1.0.1
This release adds the Plugin Update Checker to allow for easy updates via the WordPress dashboard for all future releases.
EveryAlt WordPress Plugin 1.0 🚀
EveryAlt 1.0 — Release Notes
Alt text for every image. Zero limits. Totally free.
We're excited to introduce EveryAlt 1.0, a WordPress plugin that brings AI-powered alt text generation to your entire media library — with no caps, no tiers, and no cost from us.
How it works
EveryAlt connects to OpenAI using your own API key. When you upload an image (or run a bulk action on existing ones), the plugin sends the image to OpenAI's vision model and writes clear, descriptive alt text automatically. You pay OpenAI directly for what you use — we don't sit in the middle, and we don't charge a thing.
Your API key is stored encrypted in your WordPress database, and images are sent as base64, so the plugin works on localhost and behind HTTP auth without any extra configuration.
What's included in 1.0
Auto-generate on upload — Flip a single toggle in settings, and every new image gets alt text the moment it lands in your Media Library. No extra clicks required.
Bulk generate — Have a backlog of images missing alt text? The bulk tool lets you process hundreds of them in one pass.
Review and edit — Browse everything that already has alt text, make edits, or regenerate any image's description whenever you want.
Block editor integration — A generate button appears right inside the Image block, so you can create or refresh alt text without leaving the editor.
Media screen support — A button next to the alt text field on individual media items gives you one-click generation from the classic media view.
Logs and CSV export — Every generation is logged with its associated cost, and you can export the full history as a CSV for your records.
Requirements
- WordPress 5.5 or later
- PHP 7.0 or later
- An OpenAI API key with API access
Languages
EveryAlt ships translation-ready with support for Spanish, Italian, Japanese, French, Brazilian Portuguese, German, and Dutch. A .pot file is included in the languages/ directory for adding or updating translations.
Get started
- Download the latest
.zipfrom the [Releases page](https://github.com/EveryAlt/everyalt-wordpress-plugin/releases/). - Upload and activate the plugin in your WordPress admin.
- Head to Media → EveryAlt → Settings and enter your OpenAI API key.
- Start generating — automatically on upload, in bulk, or one image at a time.
No account to create. No upgrade prompts. Just better alt text across your entire site.
EveryAlt is free, open-source (GPLv2), and built by [HDC](https://hdc.net).
EveryAlt WordPress Plugin 0.0.2
Thanks for using EveryAlt! In this release, we've made a handful of improvements as we prep the EveryAlt plugin for submission to the WordPress directory. We're still in Beta, so please anticipate frequent new releases in the coming weeks.
Changelog
- Adds the ability to generate alt text for images if your site is behind basic authentication (e.g. a dev site)
- Moves the EveryAlt menu item to the "Media" section rather than the "Settings" section of the sidebar
- Adds functionality to the Gutenberg Block Editor to generate or re-generate alt text for an image block
- Moves the "Generate Alt Text" button on individual Media Item editing pages closer to the actual alt text field
- Adds an option to allow you to choose whether or not to append the full text of an image to the alt text. If you choose this and upload a screenshot or image with lots of text, EveryAlt will return both a brief description and the full transcript of the text within the image.
Coming Soon
- Multilingual Output