Title: Onylogy Image Alt Text
Author: Ehasanul Haque
Published: <strong>July 10, 2026</strong>
Last modified: July 10, 2026

---

Search plugins

![](https://ps.w.org/onylogy-image-alt-text/assets/banner-772x250.png?rev=3602821)

![](https://ps.w.org/onylogy-image-alt-text/assets/icon-256x256.png?rev=3602821)

# Onylogy Image Alt Text

 By [Ehasanul Haque](https://profiles.wordpress.org/ehasan28/)

[Download](https://downloads.wordpress.org/plugin/onylogy-image-alt-text.1.6.1.zip)

 * [Details](https://wordpress.org/plugins/onylogy-image-alt-text/#description)
 * [Reviews](https://wordpress.org/plugins/onylogy-image-alt-text/#reviews)
 *  [Installation](https://wordpress.org/plugins/onylogy-image-alt-text/#installation)
 * [Development](https://wordpress.org/plugins/onylogy-image-alt-text/#developers)

 [Support](https://wordpress.org/support/plugin/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

 *   [ Ehasanul Haque ](https://profiles.wordpress.org/ehasan28/)

[Translate “Onylogy Image Alt Text” into your language.](https://translate.wordpress.org/projects/wp-plugins/onylogy-image-alt-text)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/onylogy-image-alt-text/),
check out the [SVN repository](https://plugins.svn.wordpress.org/onylogy-image-alt-text/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/onylogy-image-alt-text/)
by [RSS](https://plugins.trac.wordpress.org/log/onylogy-image-alt-text/?limit=100&mode=stop_on_copy&format=rss).

## 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.

## Meta

 *  Version **1.6.1**
 *  Last updated **4 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.8 or higher **
 *  Tested up to **7.0.1**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [accessibility](https://wordpress.org/plugins/tags/accessibility/)[AI](https://wordpress.org/plugins/tags/ai/)
   [Alt Text](https://wordpress.org/plugins/tags/alt-text/)[images](https://wordpress.org/plugins/tags/images/)
   [seo](https://wordpress.org/plugins/tags/seo/)
 *  [Advanced View](https://wordpress.org/plugins/onylogy-image-alt-text/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/onylogy-image-alt-text/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/onylogy-image-alt-text/reviews/)

## Contributors

 *   [ Ehasanul Haque ](https://profiles.wordpress.org/ehasan28/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/onylogy-image-alt-text/)