Repository navigation
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.