{"id":232288,"date":"2025-08-07T12:36:56","date_gmt":"2025-08-07T12:36:56","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ai-auto-alt-text-generator\/"},"modified":"2026-03-25T13:36:11","modified_gmt":"2026-03-25T13:36:11","slug":"ai-auto-alt-text-generator","status":"publish","type":"plugin","link":"https:\/\/hat.wordpress.org\/plugins\/ai-auto-alt-text-generator\/","author":23286450,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.20","stable_tag":"1.20","tested":"6.9.4","requires":"5.5","requires_php":"7.4","requires_plugins":null,"header_name":"AI Auto Alt Text Generator","header_author":"Connor Bulmer","header_description":"Automatically generates alt text and image titles for uploaded images using OpenAI\u2019s GPT\u20114o mini vision model, improving accessibility and SEO.","assets_banners_color":"6e869c","last_updated":"2026-03-25 13:36:11","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/ConnorBulmer\/ai-auto-alt-text\/","header_author_uri":"https:\/\/connorbulmer.co.uk","rating":5,"author_block_rating":0,"active_installs":40,"downloads":1495,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.15":{"tag":"1.15","author":"connorbulmer","date":"2025-08-07 12:42:54"},"1.16":{"tag":"1.16","author":"connorbulmer","date":"2025-09-09 11:01:03"},"1.17":{"tag":"1.17","author":"connorbulmer","date":"2026-01-09 11:00:38"},"1.18":{"tag":"1.18","author":"connorbulmer","date":"2026-01-29 11:17:21"},"1.19":{"tag":"1.19","author":"connorbulmer","date":"2026-03-03 09:05:26"},"1.20":{"tag":"1.20","author":"connorbulmer","date":"2026-03-25 13:36:11"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3341015,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3341015,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3341015,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3341015,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.15","1.16","1.17","1.18","1.19","1.20"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3449523,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3449523,"resolution":"2","location":"assets","locale":""}},"screenshots":{"1":"Plugin settings page for configuring automatic image alt text generation, OpenAI model selection, and accessibility-focused image options.","2":"Bulk Alt Text Updater processing existing Media Library images in batches with live progress and rate-limit controls."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1953,2353,17214,163,186],"plugin_category":[34,50,55],"plugin_contributors":[246032],"plugin_business_model":[],"class_list":["post-232288","plugin","type-plugin","status-publish","hentry","plugin_tags-accessibility","plugin_tags-ai","plugin_tags-alt-text","plugin_tags-images","plugin_tags-seo","plugin_category-accessibility","plugin_category-media","plugin_category-seo-and-marketing","plugin_contributors-connorbulmer","plugin_committers-connorbulmer"],"banners":{"banner":"https:\/\/ps.w.org\/ai-auto-alt-text-generator\/assets\/banner-772x250.png?rev=3341015","banner_2x":"https:\/\/ps.w.org\/ai-auto-alt-text-generator\/assets\/banner-1544x500.png?rev=3341015","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ai-auto-alt-text-generator\/assets\/icon-128x128.png?rev=3341015","icon_2x":"https:\/\/ps.w.org\/ai-auto-alt-text-generator\/assets\/icon-256x256.png?rev=3341015","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ai-auto-alt-text-generator\/assets\/screenshot-1.png?rev=3449523","caption":"Plugin settings page for configuring automatic image alt text generation, OpenAI model selection, and accessibility-focused image options."},{"src":"https:\/\/ps.w.org\/ai-auto-alt-text-generator\/assets\/screenshot-2.png?rev=3449523","caption":"Bulk Alt Text Updater processing existing Media Library images in batches with live progress and rate-limit controls."}],"raw_content":"<!--section=description-->\n<p><strong>AI Auto Alt Text Generator<\/strong> is a lightweight, privacy-conscious plugin that uses OpenAI vision-capable models (defaulting to GPT-4o mini, with GPT 5 Mini\/Nano options) to create meaningful, screen-reader-friendly alt text and SEO-friendly titles for your images. Whether you add a single image, bulk-process your library, or just want a one-click fix in the Media Library, the plugin handles it all \u2013 no manual effort required.<\/p>\n\n<p>This solution is far cheaper than many alternatives because it cuts out the middle-person. You\u2019ll just need to bring your own OpenAI API key.<\/p>\n\n<h3>\u2728 Key features<\/h3>\n\n<ul>\n<li><strong>Automatic alt text on upload<\/strong> \u2013 set-and-forget accessibility.<\/li>\n<li><strong>Optional automatic image titles<\/strong> \u2013 improve SEO with descriptive titles.<\/li>\n<li><strong>One-click manual generation<\/strong> \u2013 \u201cGenerate Alt Text &amp; Title\u201d button in the Media Library.<\/li>\n<li><strong>Bulk update tool<\/strong> \u2013 batch-process existing images (five at a time) with a configurable pause between batches.<\/li>\n<li><strong>Prompt fine-tuning<\/strong> \u2013 supply site-wide context and optionally include the image file name.<\/li>\n<li><strong>Model selection<\/strong> \u2013 choose GPT-4o mini (default) or GPT 5 Mini\/Nano (BETA).<\/li>\n<li><strong>Image size &amp; detail control<\/strong> \u2013 choose the resolution and level of visual detail sent.<\/li>\n<li><strong>No extra servers<\/strong> \u2013 data flows only between your site and OpenAI; nothing is stored off-site.<\/li>\n<li><strong>Multilingual output<\/strong> \u2013 choose English (UK), English (US) or other popular languages. (English US is the default.)<\/li>\n<\/ul>\n\n<h3>\ud83e\udded Where to find the bulk tool<\/h3>\n\n<ul>\n<li><strong>Tools \u2192 Bulk Alt Text Update<\/strong><\/li>\n<li><strong>Media \u2192 Bulk Alt Text Update<\/strong> (shortcut that redirects to the Tools page)<\/li>\n<li><strong>Settings \u2192 Alt Text Generator<\/strong> includes a button linking straight to the bulk page<\/li>\n<\/ul>\n\n<h3>\ud83e\udde0 How it works<\/h3>\n\n<ol>\n<li>When an image is uploaded (or manually chosen), the plugin creates a temporary public URL for that image.<\/li>\n<li>It sends the image \u2013 plus optional context such as the parent post title, your custom site context and the file name \u2013 to your selected OpenAI vision model.<\/li>\n<li>OpenAI returns a concise description.<br \/>\n\n<ul>\n<li>Alt text is stored in WordPress\u2019 native <code>_wp_attachment_image_alt<\/code> field.  <\/li>\n<li>(Optional) The returned title is stored as the attachment post title.<\/li>\n<\/ul><\/li>\n<li>Nothing is cached or stored on OpenAI\u2019s side; only the final strings live in your database.<\/li>\n<\/ol>\n\n<h3>Settings overview<\/h3>\n\n<ul>\n<li><strong>OpenAI API Key<\/strong> \u2013 Required to connect to GPT-4o.  <\/li>\n<li><strong>OpenAI Model<\/strong> \u2013 GPT-4o mini (default), GPT 5 Mini (BETA), or GPT 5 Nano (BETA).  <\/li>\n<li><strong>Image Size to Send<\/strong> \u2013 Thumbnail, Medium, Large, or Full.  <\/li>\n<li><strong>Image Detail Quality<\/strong> \u2013 \u2018Low\u2019 or \u2018High\u2019 (Low uses fewer tokens).  <\/li>\n<li><strong>Bulk batch size<\/strong> \u2013 Number of images per batch (lower values reduce rate-limit risk).  <\/li>\n<li><strong>Site Context<\/strong> \u2013 Optional free-form prompt guidance (brand voice, niche, etc.).  <\/li>\n<li><strong>Send Image File Name<\/strong> \u2013 Include file name in the prompt for extra context.  <\/li>\n<li><strong>Automatically Generate Title<\/strong> \u2013 Add descriptive titles alongside alt text.  <\/li>\n<li><strong>Use full context for image titles<\/strong> \u2013 When enabled, title generation includes site context and file name (uses more tokens).  <\/li>\n<li><strong>Bulk optimiser delay (seconds)<\/strong> \u2013 Pause between batches during bulk runs.  <\/li>\n<li><strong>OpenAI request timeout (seconds)<\/strong> \u2013 Max wait time for OpenAI responses (10\u2013120s) to reduce timeout failures on slower hosts.  <\/li>\n<li><strong>Output Language<\/strong> \u2013 Default English (US). Choose English (UK) for British spellings or another popular language; outputs (alt text and titles) will be generated in the selected language.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the <strong>OpenAI API<\/strong> to generate alt text and (optionally) image titles.<\/p>\n\n<ul>\n<li><strong>Endpoint:<\/strong> <code>https:\/\/api.openai.com\/v1\/chat\/completions<\/code>  <\/li>\n<li><strong>When called:<\/strong><br \/>\n\n<ul>\n<li>On image upload (automatic)  <\/li>\n<li>Via \u201cGenerate Alt Text &amp; Title\u201d button in Media Library (manual)  <\/li>\n<li>Via <strong>Tools \u2192 Bulk Alt Text Update<\/strong> (bulk)  <\/li>\n<\/ul><\/li>\n<li><strong>Data sent:<\/strong> image URL, optional file name, optional site context, optional parent post title  <\/li>\n<li><strong>Terms:<\/strong> <a href=\"https:\/\/openai.com\/policies\/terms-of-use\">https:\/\/openai.com\/policies\/terms-of-use<\/a>  <\/li>\n<li><strong>Privacy:<\/strong> <a href=\"https:\/\/openai.com\/policies\/privacy-policy\">https:\/\/openai.com\/policies\/privacy-policy<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/ai-auto-alt-text-generator<\/code> <strong>or<\/strong> install via <strong>Plugins \u2192 Add New<\/strong>.  <\/li>\n<li>Activate the plugin.  <\/li>\n<li>Go to <strong>Settings \u2192 Alt Text Generator<\/strong>.  <\/li>\n<li>Enter your OpenAI API key, configure your preferences, and save.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20data%20is%20sent%20to%20openai%3F\"><h3>What data is sent to OpenAI?<\/h3><\/dt>\n<dd><p>The publicly accessible image URL, plus any optional context you enable: image file name, site-wide context, and the parent post\/page title.<\/p><\/dd>\n<dt id=\"what%20if%20i%20see%20a%20429%20rate%20limit%20error%3F\"><h3>What if I see a 429 rate limit error?<\/h3><\/dt>\n<dd><p>Try lowering the bulk batch size, increasing the bulk delay, switching Image Detail Quality to <strong>Low<\/strong>, and shortening site context if it\u2019s very long.<\/p><\/dd>\n<dt id=\"does%20openai%20store%20my%20images%20or%20text%3F\"><h3>Does OpenAI store my images or text?<\/h3><\/dt>\n<dd><p>No. The OpenAI API returns a response and does not retain your data. The plugin itself stores only the generated alt text and title in your WordPress database.<\/p><\/dd>\n<dt id=\"can%20i%20customise%20the%20prompt%3F\"><h3>Can I customise the prompt?<\/h3><\/dt>\n<dd><p>Yes \u2013 via <strong>Settings \u2192 Alt Text Generator<\/strong> you can add site context and choose whether to include the image\u2019s file name or parent post title. You can also select an output language; English (US) remains the default.<\/p><\/dd>\n<dt id=\"which%20model%20do%20you%20use%3F\"><h3>Which model do you use?<\/h3><\/dt>\n<dd><p>GPT-4o mini by default, with GPT 5 Mini and GPT 5 Nano (BETA) available in settings.<\/p><\/dd>\n<dt id=\"who%20can%20access%20the%20bulk%20tool%3F\"><h3>Who can access the bulk tool?<\/h3><\/dt>\n<dd><p>By default, the bulk page requires the <code>manage_options<\/code> capability (typically Administrators). You can change this in code to <code>upload_files<\/code> if you want Editors with media permissions to run it.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.20<\/h4>\n\n<p>2026-03-25\n* <strong>Fixed:<\/strong> Resolved an uncommon issue where generated alt text could include the parent page\/post title; prompt now explicitly instructs the model to omit it.<\/p>\n\n<h4>1.19<\/h4>\n\n<p>2026-02-02\n* <strong>New:<\/strong> Added configurable OpenAI request timeout setting (10\u2013120 seconds, default 30).\n* <strong>Improved:<\/strong> OpenAI calls now retry once after timeout with a longer wait window.\n* <strong>Improved:<\/strong> Better resilience to transient <code>cURL error 28<\/code> timeout failures during alt text\/title generation.<\/p>\n\n<h4>1.18<\/h4>\n\n<p>2026-01-28\n* <strong>New:<\/strong> Branded tabbed dashboard with Settings, Bulk Updater, and Integrations.\n* <strong>New:<\/strong> Bulk updater log for per-image warnings\/errors in the UI.\n* <strong>Improved:<\/strong> Clearer OpenAI error handling surfaced to users.\n* <strong>Improved:<\/strong> Rate-limit controls (batch size + delay) and low detail default.\n* <strong>Fixed:<\/strong> Bulk counter no longer double-counts missing\/blank alt text.\n* <strong>Fixed:<\/strong> Trim stray leading quotes from generated alt text and titles.<\/p>\n\n<h4>1.17<\/h4>\n\n<ul>\n<li><strong>New:<\/strong> OpenAI model selector with GPT-4o mini default and GPT 5 Mini\/Nano (BETA) options.<\/li>\n<\/ul>\n\n<h4>1.16<\/h4>\n\n<ul>\n<li><strong>New:<\/strong> Output Language selector \u2013 generate alt text and titles in English (UK) or other popular languages; defaults to English (US).<\/li>\n<li><strong>Improved discoverability:<\/strong> Added <strong>Media \u2192 Bulk Alt Text Update<\/strong> submenu (redirects to Tools page).<\/li>\n<li><strong>Improved workflow:<\/strong> Added a <strong>\u201cGo to Bulk Alt Text Update\u201d<\/strong> button on the settings page.<\/li>\n<li><strong>Quality of life:<\/strong> Added <strong>Settings<\/strong> and <strong>Bulk Update<\/strong> quick links on the Plugins screen.<\/li>\n<li><strong>Reliability:<\/strong> Bulk submenu now redirects via the page load-hook for consistent behaviour across environments.<\/li>\n<li>No breaking changes.<\/li>\n<\/ul>\n\n<h4>1.15<\/h4>\n\n<ul>\n<li><strong>New options:<\/strong> Send image file name in the prompt; optional \u201cfull context\u201d for titles (includes site context and file name).  <\/li>\n<li><strong>Bulk runs:<\/strong> Added delay control between five-image batches.  <\/li>\n<li><strong>Diagnostics:<\/strong> Lightweight file logger for bulk runs.  <\/li>\n<li>General polish and copy tweaks.<\/li>\n<\/ul>","raw_excerpt":"Automatically generates alt text and image titles for your WordPress media uploads with selectable OpenAI models (defaulting to GPT-4o mini), improvin &hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/232288","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=232288"}],"author":[{"embeddable":true,"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/connorbulmer"}],"wp:attachment":[{"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=232288"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=232288"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=232288"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=232288"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=232288"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=232288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}