Onylogy Image Alt Text

Description

Onylogy Image Alt Text fills in the Alternative Text field for your images automatically, using an AI vision model that actually looks at each picture. It writes into the same native WordPress field you edit by hand — so results work everywhere (SEO plugins, screen readers, themes) and stay even if you remove the plugin.

Key features

  • Bulk generate alt text — plus optional Caption, Description, and Title — for 10, 100, or 500+ images with a live progress bar.
  • Review mode — see each suggestion and approve/edit before saving. Or Auto mode — generate and save automatically.
  • Overwrite protection — only fill images that are missing alt text, or force regeneration for all.
  • Auto-on-upload — new images get alt text the moment you upload them.
  • Bring your own key (free or paid). Choose from many providers — Google Gemini, OpenRouter (Qwen, Gemma, Llama), Groq, Mistral, Together.ai, OpenAI, Anthropic — and paste a free-tier or paid key. Paid keys unlock higher-quality models.
  • SEO-optimized output — concise, ~80–125 characters, no “image of” filler, context-aware using the image’s title and filename.
  • Automatic failover — add keys for more than one provider and Onylogy Image Alt Text switches to the next one if a key is rate-limited or out of quota.
  • Image previews + activity log — see a thumbnail of every image while you review, and one-click Revert any change you don’t like.
  • Guide & Limits tab — a built-in capacity calculator estimates how many images you can process on your provider’s free tier.
  • Monochrome, distraction-free UI that matches the WordPress admin. Fully translatable.

Why alt text matters: descriptive alternative text is a WCAG 2.1 requirement (1.1.1 Non-text Content) that lets screen-reader users understand your images, and it’s a ranking signal for Google Image search. It gives every image accurate, human-quality alt text in minutes instead of hours.

This plugin makes no external calls until you configure a provider key and click Generate. Your key is stored in your own site’s database (or a wp-config constant).

External services

This plugin relies on a third‑party AI vision service to generate text for your images. It does not call any service until you (a) enter an API key for a provider and (b) start generation from the plugin. You choose which single provider is used; the plugin only contacts the one you have selected, using the API key you supply.

What is sent, and when: each time you generate for an image (via Bulk Generate, the per‑image buttons, the Media list bulk action, or auto‑on‑upload if you enable it), the plugin sends that image’s data and a short text instruction (which may include the image’s existing title and file name) to your chosen provider’s API. It receives back the generated alt text / caption / description / title. Your API key is sent to authenticate the request. No image data is sent at any other time, and nothing is sent to any provider you have not configured.

You must obtain your own API key from, and agree to the terms of, whichever provider(s) you use:

  • Groq — used for AI text generation. Terms: https://groq.com/terms-of-use/ · Privacy: https://groq.com/privacy-policy/
  • Google Gemini — used for AI text generation. Terms: https://ai.google.dev/gemini-api/terms · Privacy: https://policies.google.com/privacy
  • OpenRouter — used for AI text generation. Terms: https://openrouter.ai/terms · Privacy: https://openrouter.ai/privacy
  • Mistral AI — used for AI text generation. Terms: https://mistral.ai/terms/ · Privacy: https://mistral.ai/terms/#privacy-policy
  • Together.ai — used for AI text generation. Terms: https://www.together.ai/terms-of-service · Privacy: https://www.together.ai/privacy
  • OpenAI — used for AI text generation. Terms: https://openai.com/policies/terms-of-use/ · Privacy: https://openai.com/policies/privacy-policy/
  • Anthropic (Claude) — used for AI text generation. Terms: https://www.anthropic.com/legal/consumer-terms · Privacy: https://www.anthropic.com/legal/privacy

Your API key is stored in your own site’s database, or you may define it as a constant in wp-config.php. The plugin makes no other external requests.

Installation

  1. Upload the plugin ZIP via Plugins Add New Upload Plugin, then activate.
  2. Go to Media Image Alt Text.
  3. On the AI & Performance tab, pick a provider and paste a free API key, then Save.
  4. Use Bulk Generate for the whole library, the per-image buttons on any attachment, or the Media list bulk action.

FAQ

Is it really free?

Yes. The plugin is free and open source (GPL). You supply your own API key — most supported providers have a generous free tier, so you can run it at no cost.

Where does the alt text get saved?

Into the native _wp_attachment_image_alt field — exactly where WordPress stores alt text when you type it manually.

Will it overwrite alt text I already wrote?

Not by default. “Only if empty” mode skips images that already have alt text. You can switch to “Always regenerate” if you want.

Can I use a paid model?

Yes. Paste a paid key (e.g. OpenAI or Anthropic) and pick a premium model from the dropdown.

Which providers are supported?

Groq (default), Google Gemini, OpenRouter (Qwen, Gemma, Llama), Mistral, Together.ai, OpenAI and Anthropic. You bring your own key for any of them.

Can it also generate captions, descriptions and titles?

Yes. Alt text is on by default. On the Field Settings tab you can also enable Caption, Description and Title — each with its own length and overwrite rule. All enabled fields are produced in a single AI request per image, so adding them barely changes your usage.

Will it slow down my website?

No. Generation runs only in the admin area when you click Generate (or on upload, if you enable that). There is zero front-end overhead — it writes plain text into WordPress’s native fields and adds nothing to your pages.

Does it work with my theme, page builder or SEO plugin?

Yes. Because it writes to the native WordPress image fields, the text is read by every theme, page builder (Elementor, Gutenberg, etc.), SEO plugin (Yoast, Rank Math, etc.) and screen reader automatically — nothing special to configure.

What happens if I hit my provider’s rate limit?

It paces requests to stay within free-tier limits, pauses and retries automatically when a limit is reached, and can fail over to another provider key if you’ve added one. If you leave and return to the Bulk tab, an unfinished run resumes on its own.

Can I undo a change I don’t like?

Yes. The Activity Log shows each change with the image, the new value and the previous value, and a one-click Revert restores the old text.

Is my API key safe?

Your key never leaves your site except in the requests you make to your chosen provider. It’s stored in your own database, or you can define it as a constant in wp-config.php instead of saving it in the settings.

What happens to my alt text if I uninstall the plugin?

It stays. The text lives in WordPress’s native fields, so uninstalling only removes the plugin’s own settings — your images keep their alt text, captions and descriptions.

Is it translation ready?

Yes. All strings are internationalized and a translation template (.pot) is included, so it can be translated into any language.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Onylogy Image Alt Text” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.6.1

  • Renamed the internal code prefix to match the plugin slug (per WordPress.org review). Your saved settings and API keys are migrated automatically on update.

1.6.0

  • Fix: generated text could contain raw JSON like {"alt": "… when the model’s reply was cut off. Single-field generation no longer uses JSON, multi-field parsing is now robust to truncated JSON, and a final safety scrub guarantees brackets never reach a saved field.
  • Fix: with multiple API keys the selected provider is now respected. By default only your chosen provider is used; a new “also use my other keys when rate-limited” option enables quota pooling across providers.
  • New: toast notifications (bottom-right) for Save, key add/remove, reset, revert and clear log.
  • New: auto-pace bulk runs to your provider’s requests-per-minute limit (default on), a real “longer pause every N images” control, and a “process up to N images now” cap with a live daily-capacity estimate on the Bulk Generate page.

1.5.0

  • Renamed to “Onylogy Image Alt Text” (slug: onylogy-image-alt-text) per WordPress.org plugin review feedback.
  • Added a full “External services” section documenting each AI provider, the data sent, and links to their terms of service and privacy policies.
  • Security: REST endpoints and the Media bulk action now verify the current user can edit each specific attachment (edit_post), and the clear-log action requires manage_options.
  • Set the Contributors field to the plugin author’s WordPress.org username.

1.4.1

  • Renamed to “AltPilot” (slug: altpilot) to meet WordPress.org naming rules, which do not allow “WP” in a plugin name or slug.
  • Plugin Check compliance pass: added “translators:” comments to every placeholder string, removed the discouraged load_plugin_textdomain() call, documented the admin-only meta query, and resolved template-scope variable warnings.

1.4.0

  • New: “Guide & Limits” tab — a plain-language quick guide plus an interactive capacity calculator that estimates how many images you can process per minute and per day, and how long a batch takes, based on your provider’s free-tier limits (editable, with Groq and Gemini presets).

1.3.0

  • New: image thumbnails everywhere — the Bulk Generate results and the Activity Log now show a preview of each image, so you no longer identify images by ID alone.
  • Activity Log now shows which field changed (Alt / Caption / Description / Title).
  • API keys: replaced the checkbox with a clean “×” clear button inside the key field (fixes the stretched checkbox); typing a new key cancels a pending removal.
  • Moved “Reset all settings” to the bottom of the Field Settings tab where it is easy to find.

1.2.1

  • Fix: the Save all / Clear results bar (and Save all button) now truly hide when there are no results — a CSS rule was overriding the hidden state.
  • Title is now a normal field card like Caption and Description (no separate “advanced” area); each optional field has a short explanatory note.
  • New: remove a saved API key with a per-key “Remove” checkbox.
  • New: “Reset all settings” button restores defaults and clears the activity log for a fresh-install experience.

1.2.0

  • Reorganised settings into tabs: “Field Settings” (per-field), “AI & Performance” (provider, keys, pacing), plus Bulk Generate and Activity Log.
  • Field Settings now group everything by field type — Alt, Caption, Description, then Title (advanced) — each with its own enable toggle, overwrite rule, max length and custom prompt.
  • New: per-field max-length controls for Caption (default 160), Description (default 300) and Title (default 60), researched for SEO/readability; Alt stays at 90.
  • New: helpful “?” tooltips on every setting.
  • Saving one tab no longer affects settings on the other tab.

1.1.2

  • Default provider is now Groq (fast, generous free tier). Gemini and the others remain available.
  • Caption and Description are now OFF by default (Alt text only); enable them per site in Settings.
  • Bulk results are grouped into a card per image so each image’s fields are clearly separated.
  • Media Library: a Generate control now appears for every enabled field (Alt, Caption, Description, Title), each with Use-in-field and Regenerate — matching the alt-text control.
  • The Save all / Clear results bar sits above the list and only appears when there are results.

1.1.1

  • Fix: the “Save all / Clear results” bar no longer appears until there are actual results (stale empty rows are cleared on load).
  • Change: default alt-text max length is now 90 characters (existing sites on the old 125 default are migrated automatically).
  • Clarified the bulk pacing settings and added a live “Waiting…/Batch pause…” status so you can see images are processed one at a time, not all at once.
  • Guard against starting a second bulk run on top of a running one.

1.1.0

  • New: generate Caption and Description in addition to Alt text — all enabled fields are produced in a single AI request per image (fewer requests, fewer rate limits).
  • New: optional Title generation, off by default and kept in a separate “advanced” section (the Title normally mirrors the file name).
  • New: per-field controls — enable/disable each field, its own overwrite mode (only-if-empty vs always), and its own custom prompt.
  • Bulk results are now labelled per field; Save all and per-row controls work across fields.

1.0.2

  • Fix: primary buttons were black-on-black (text only visible on hover).
  • New: automatic failover across providers — if one key is rate-limited or out of quota, the next configured key is tried.
  • New: bulk results now persist per browser; an unfinished run auto-resumes when you return to the tab; added Clear results, per-row remove, and Save all.
  • New: Activity Log now has Revert (restore previous value) and Clear log.
  • New: Media Library button now shows the suggestion in a field with “Use in Alt Text” (push) and Regenerate; respects Review/Auto mode.
  • Fix: switching provider no longer sends the wrong provider’s model; “insufficient quota” (e.g. OpenAI with no credit) is reported clearly instead of retrying forever.
  • Fix: bulk pacing now honours the batch size and delay settings; failed rows show the real error message.

1.0.1

  • Fix: fatal error on activation (settings class was not loaded during the activation hook).

1.0.0

  • Initial release: bulk + single + on-upload alt text generation, multi-provider BYOK, review/auto modes, overwrite protection, activity log.