{"id":358580,"date":"2026-08-26T10:27:49","date_gmt":"2026-08-26T10:27:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/replai-images-bulk-alt-text-title-seo\/"},"modified":"2026-08-26T10:27:18","modified_gmt":"2026-08-26T10:27:18","slug":"replai-image-alt","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/replai-image-alt\/","author":23235863,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.1","requires":"6.2","requires_php":"7.2","requires_plugins":null,"header_name":"Replai Images \u2013 Bulk Alt Text & Title (SEO)","header_author":"REPLAI","header_description":"Bulk-fill the Alt text and Title of your images in the Media Library from smart rules (post title, focus keyword, cleaned filename or site title). Improves image SEO and accessibility. Persistent, safe and reversible.","assets_banners_color":"1599df","last_updated":"2026-08-26 10:27:18","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/replai.net\/wordpress\/","header_author_uri":"https:\/\/replai.net\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":28,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"replai","date":"2026-08-26 10:27:18"}},"upgrade_notice":{"1.0.2":"<p>Compatible with WordPress 7.1.<\/p>","1.0.1":"<p>Alt text column in the Media Library list view.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3666741,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3666741,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3666741,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500-ca.png":{"filename":"banner-1544x500-ca.png","revision":3666741,"resolution":"1544x500","location":"assets","locale":"ca","width":1544,"height":500},"banner-1544x500-de_DE.png":{"filename":"banner-1544x500-de_DE.png","revision":3666741,"resolution":"1544x500","location":"assets","locale":"de_DE","width":1544,"height":500},"banner-1544x500-es_ES.png":{"filename":"banner-1544x500-es_ES.png","revision":3666741,"resolution":"1544x500","location":"assets","locale":"es_ES","width":1544,"height":500},"banner-1544x500-fr_FR.png":{"filename":"banner-1544x500-fr_FR.png","revision":3666741,"resolution":"1544x500","location":"assets","locale":"fr_FR","width":1544,"height":500},"banner-1544x500-it_IT.png":{"filename":"banner-1544x500-it_IT.png","revision":3666741,"resolution":"1544x500","location":"assets","locale":"it_IT","width":1544,"height":500},"banner-1544x500-pt_PT.png":{"filename":"banner-1544x500-pt_PT.png","revision":3666741,"resolution":"1544x500","location":"assets","locale":"pt_PT","width":1544,"height":500},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3666741,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250-ca.png":{"filename":"banner-772x250-ca.png","revision":3666741,"resolution":"772x250","location":"assets","locale":"ca","width":772,"height":250},"banner-772x250-de_DE.png":{"filename":"banner-772x250-de_DE.png","revision":3666741,"resolution":"772x250","location":"assets","locale":"de_DE","width":772,"height":250},"banner-772x250-es_ES.png":{"filename":"banner-772x250-es_ES.png","revision":3666741,"resolution":"772x250","location":"assets","locale":"es_ES","width":772,"height":250},"banner-772x250-fr_FR.png":{"filename":"banner-772x250-fr_FR.png","revision":3666741,"resolution":"772x250","location":"assets","locale":"fr_FR","width":772,"height":250},"banner-772x250-it_IT.png":{"filename":"banner-772x250-it_IT.png","revision":3666741,"resolution":"772x250","location":"assets","locale":"it_IT","width":772,"height":250},"banner-772x250-pt_PT.png":{"filename":"banner-772x250-pt_PT.png","revision":3666741,"resolution":"772x250","location":"assets","locale":"pt_PT","width":772,"height":250},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3666741,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3666741,"resolution":"1","location":"assets","locale":"","width":2147,"height":1623},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3666741,"resolution":"2","location":"assets","locale":"","width":2147,"height":1623}},"screenshots":{"1":"The settings screen: a coverage ring, the alt text and image title rules (source and when to apply), options, and the run action with a dynamic \"Fill N pending\" button.","2":"Right in the Media Library list: an \"Alt text\" column flags images with missing alt, with a per-image \"Generate\" button and a badge marking the ones filled by the plugin."}},"plugin_section":[],"plugin_tags":[1953,14887,17214,6357,233],"plugin_category":[34],"plugin_contributors":[272765],"plugin_business_model":[],"class_list":["post-358580","plugin","type-plugin","status-publish","hentry","plugin_tags-accessibility","plugin_tags-alt-attribute","plugin_tags-alt-text","plugin_tags-image-seo","plugin_tags-media-library","plugin_category-accessibility","plugin_contributors-replai","plugin_committers-replai"],"banners":{"banner":"https:\/\/ps.w.org\/replai-image-alt\/assets\/banner-772x250.png?rev=3666741","banner_2x":"https:\/\/ps.w.org\/replai-image-alt\/assets\/banner-1544x500.png?rev=3666741","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/replai-image-alt\/assets\/icon.svg?rev=3666741","icon":"https:\/\/ps.w.org\/replai-image-alt\/assets\/icon.svg?rev=3666741","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/replai-image-alt\/assets\/screenshot-1.png?rev=3666741","caption":"The settings screen: a coverage ring, the alt text and image title rules (source and when to apply), options, and the run action with a dynamic \"Fill N pending\" button."},{"src":"https:\/\/ps.w.org\/replai-image-alt\/assets\/screenshot-2.png?rev=3666741","caption":"Right in the Media Library list: an \"Alt text\" column flags images with missing alt, with a per-image \"Generate\" button and a badge marking the ones filled by the plugin."}],"raw_content":"<!--section=description-->\n<p><strong>Replai Images<\/strong> bulk-fills the <strong>alt text <em>and<\/em> the image title<\/strong> of your whole Media Library from rules based on data your site already has \u2014 no AI, no per-image cost, and every run is <strong>reversible<\/strong>.<\/p>\n\n<p>Most alt-text plugins either inject values only at render time or depend on paid AI. Replai Images takes a different approach:<\/p>\n\n<ul>\n<li>It writes <strong>real values into the Media Library<\/strong> (both <code>alt<\/code> and <code>title<\/code>), so they apply on every theme, builder, block and page \u2014 not only on rendered content.<\/li>\n<li>It can pull the text from your <strong>SEO focus keyword<\/strong> (Yoast SEO, Rank Math or SEOPress), aligning image metadata with the keyword you already optimise for.<\/li>\n<li>It keeps a <strong>backup<\/strong> and lets you <strong>undo the last run<\/strong> with one click, so bulk edits are never a one-way street.<\/li>\n<\/ul>\n\n<p>You choose the source for each run, based on data WordPress already has:<\/p>\n\n<ul>\n<li><strong>Title of the post\/page<\/strong> the image belongs to.<\/li>\n<li><strong>SEO focus keyword<\/strong> from Yoast SEO, Rank Math or SEOPress.<\/li>\n<li><strong>Cleaned file name<\/strong> (removes dashes, size suffixes and extensions).<\/li>\n<li><strong>Site title<\/strong>.<\/li>\n<\/ul>\n\n<p>If the chosen source is empty for a given image, the cleaned file name is used as a fallback, so no image is left without alt text.<\/p>\n\n<p><strong>Why it's different<\/strong><\/p>\n\n<ul>\n<li><strong>Persistent<\/strong> \u2014 it writes real values into the Media Library (<code>alt<\/code> and <code>title<\/code>), so they apply on every theme, builder and page, not only on rendered content.<\/li>\n<li><strong>Safe and reversible<\/strong> \u2014 it keeps a backup of the previous values and lets you revert the last run with one click.<\/li>\n<li><strong>No cost, no external AI<\/strong> \u2014 pure rules, no per-image API calls.<\/li>\n<li><strong>Bulk with progress<\/strong> \u2014 processes the whole library in batches with a live coverage meter (a ring showing how many images already have alt text).<\/li>\n<li><strong>Right from the Media Library<\/strong> \u2014 an \"Alt text\" column shows which images are missing it, with a per-image <strong>Generate<\/strong> button (also available in each image's detail view), plus a <strong>\"Fill alt text &amp; title (Replai)\"<\/strong> bulk action to do many at once.<\/li>\n<li><strong>Missing-only or overwrite<\/strong> \u2014 decide whether to touch only empty values or replace existing ones.<\/li>\n<li><strong>Multilingual admin<\/strong> \u2014 English, Spanish, Catalan, French, Italian, Portuguese and German, based on your site language.<\/li>\n<\/ul>\n\n<p>Complete alt text improves accessibility for screen readers and helps your images rank in image search.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <strong>replai-image-alt<\/strong> folder to <code>\/wp-content\/plugins\/<\/code>, or install it from the WordPress plugin directory.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open the <strong>Replai Images<\/strong> menu, pick your rule, and press <strong>Run now<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20change%20the%20media%20library%20or%20only%20the%20frontend%3F\"><h3>Does it change the Media Library or only the frontend?<\/h3><\/dt>\n<dd><p>It writes the alt text (and optionally the title) directly into the Media Library, permanently. This is more robust than render-time injection because the values apply everywhere WordPress outputs the image.<\/p><\/dd>\n<dt id=\"can%20i%20undo%20the%20changes%3F\"><h3>Can I undo the changes?<\/h3><\/dt>\n<dd><p>Yes. If \"keep a backup\" is enabled (default), the plugin stores the previous values and you can revert the last run with the <strong>Revert<\/strong> button.<\/p><\/dd>\n<dt id=\"will%20it%20overwrite%20alt%20text%20i%20wrote%20by%20hand%3F\"><h3>Will it overwrite alt text I wrote by hand?<\/h3><\/dt>\n<dd><p>Only if you choose \"Overwrite\". By default it fills <strong>only images without alt text<\/strong>, leaving your manual work untouched.<\/p><\/dd>\n<dt id=\"can%20i%20generate%20alt%20text%20for%20a%20single%20image%2C%20or%20just%20a%20few%3F\"><h3>Can I generate alt text for a single image, or just a few?<\/h3><\/dt>\n<dd><p>Yes. In the Media Library list view, images missing alt text show a <strong>Generate<\/strong> button (also in each image's detail view), and you can select several images and use the <strong>Fill alt text &amp; title (Replai)<\/strong> bulk action. All use your saved rules and can be reverted.<\/p><\/dd>\n<dt id=\"where%20does%20the%20alt%20text%20come%20from%3F\"><h3>Where does the alt text come from?<\/h3><\/dt>\n<dd><p>From rules you choose: the post title, the SEO focus keyword (Yoast, Rank Math or SEOPress), a cleaned file name or the site title. There is no AI and no external service.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20large%20libraries%3F\"><h3>Does it work with large libraries?<\/h3><\/dt>\n<dd><p>Yes. The bulk process runs in batches with a progress bar, so it does not time out on big Media Libraries.<\/p><\/dd>\n<dt id=\"does%20it%20call%20any%20external%20service%3F\"><h3>Does it call any external service?<\/h3><\/dt>\n<dd><p>No. Everything runs on your own site with local WordPress data.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>New: per-image \"Generate\" button in the Media Library list and in each image's detail view, and a \"Fill alt text &amp; title (Replai)\" bulk action.<\/li>\n<li>Redesigned settings screen: full-width coverage with a ring meter, clearer rules, and the run action placed after the configuration with a dynamic \"Fill N pending\" button.<\/li>\n<li>The plugin description in the Plugins list now follows your site language.<\/li>\n<li>Tested and compatible with WordPress 7.1.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>New \"Alt text\" column in the Media Library list view, with a badge marking images filled by the plugin, plus a shortcut button.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: bulk alt text and title for the Media Library from rules (post title, SEO focus keyword, cleaned file name, site title), missing-only or overwrite, persistent write with backup and revert, coverage meter, and a multilingual admin.<\/li>\n<\/ul>","raw_excerpt":"Rule-based bulk alt text AND image title for your Media Library \u2014 from your SEO focus keyword or post title. Reversible, no AI, no cost.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/358580","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=358580"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/replai"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=358580"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=358580"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=358580"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=358580"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=358580"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=358580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}