{"id":338811,"date":"2026-07-18T12:47:54","date_gmt":"2026-07-18T12:47:54","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/auto-title-alt-sync\/"},"modified":"2026-07-18T12:47:29","modified_gmt":"2026-07-18T12:47:29","slug":"auto-title-alt-sync","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/auto-title-alt-sync\/","author":23523858,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.0.2","requires":"5.0","requires_php":"7.0","requires_plugins":null,"header_name":"Auto Title & Alt Sync","header_author":"Anees Ahmad","header_description":"Automatically populates alt text from filename on image upload and provides bi-directional sync between Title and Alt fields in Media Library","assets_banners_color":"cbd0da","last_updated":"2026-07-18 12:47:29","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":52,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"aanees61","date":"2026-07-18 12:47:29"}},"upgrade_notice":{"1.0.0":"<p>Initial release. Auto alt generation and bi-directional sync for Title and Alt fields in Media Library.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3612585,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3612585,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3612585,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3612585,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3612585,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Auto-generated alt text on image upload","2":"Real-time Title to Alt sync in Media Editor","3":"Real-time Alt to Title sync in Media Editor","4":"Manual sync button in media meta box","5":"Media modal sync support"}},"plugin_section":[],"plugin_tags":[17214,163,84,186,1460],"plugin_category":[50,55],"plugin_contributors":[270845],"plugin_business_model":[],"class_list":["post-338811","plugin","type-plugin","status-publish","hentry","plugin_tags-alt-text","plugin_tags-images","plugin_tags-media","plugin_tags-seo","plugin_tags-title","plugin_category-media","plugin_category-seo-and-marketing","plugin_contributors-aanees61","plugin_committers-aanees61"],"banners":{"banner":"https:\/\/ps.w.org\/auto-title-alt-sync\/assets\/banner-772x250.png?rev=3612585","banner_2x":"https:\/\/ps.w.org\/auto-title-alt-sync\/assets\/banner-1544x500.png?rev=3612585","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/auto-title-alt-sync\/assets\/icon.svg?rev=3612585","icon":"https:\/\/ps.w.org\/auto-title-alt-sync\/assets\/icon.svg?rev=3612585","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Auto Alt &amp; Title Sync is a powerful WordPress plugin that streamlines your media workflow by automatically populating alt text from image filenames during upload. It also provides real-time bi-directional synchronization between the Title and Alt fields in the Media Library, saving you time and improving accessibility.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>Auto Alt Generation<\/strong>: Automatically generates alt text from image filenames on upload<\/li>\n<li><strong>Smart Formatting<\/strong>: Converts filenames to readable text (removes dashes, underscores, dots, etc.)<\/li>\n<li><strong>Title Case Conversion<\/strong>: Automatically converts alt text to proper Title Case<\/li>\n<li><strong>Bi-directional Sync<\/strong>: Changes to Title auto-update Alt, and changes to Alt auto-update Title<\/li>\n<li><strong>Real-time Updates<\/strong>: See changes instantly as you type in the Media Editor<\/li>\n<li><strong>Media Modal Support<\/strong>: Works in the media modal when adding images to posts\/pages<\/li>\n<li><strong>Manual Sync<\/strong>: One-click sync button in the media editor<\/li>\n<li><strong>AJAX Powered<\/strong>: Fast, seamless synchronization without page reloads<\/li>\n<li><strong>Lightweight<\/strong>: Minimal impact on performance<\/li>\n<li><strong>Translation Ready<\/strong>: Fully internationalized<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li><strong>Upload an image<\/strong> \u2192 Alt text is automatically generated from the filename<\/li>\n<li><strong>Edit the Title<\/strong> \u2192 Alt text updates in real-time<\/li>\n<li><strong>Edit the Alt text<\/strong> \u2192 Title updates in real-time<\/li>\n<\/ol>\n\n<h4>Example Transformations<\/h4>\n\n\n\n\n  Filename\n  Generated Alt Text\n\n\n\n\n  <code>beach-sunset.jpg<\/code>\n  Beach Sunset\n\n\n  <code>product_123_main.png<\/code>\n  Product 123 Main\n\n\n  <code>my--photo---best.jpeg<\/code>\n  My Photo Best\n\n\n  <code>screenshot-2024-01-15.png<\/code>\n  Screenshot 2024 01 15\n\n\n\n\n<h4>Benefits<\/h4>\n\n<ul>\n<li><strong>Save Time<\/strong>: No more manually typing alt text for every image<\/li>\n<li><strong>Improve Accessibility<\/strong>: Proper alt text makes your site more accessible<\/li>\n<li><strong>Boost SEO<\/strong>: Better alt text improves search engine rankings<\/li>\n<li><strong>Consistency<\/strong>: Uniform formatting across all your images<\/li>\n<li><strong>User Friendly<\/strong>: Intuitive sync between Title and Alt fields<\/li>\n<\/ul>\n\n<h4>Compatibility<\/h4>\n\n<ul>\n<li>Works with all WordPress themes<\/li>\n<li>Compatible with Classic Editor and Block Editor (Gutenberg)<\/li>\n<li>Works with major page builders (Elementor, WPBakery, etc.)<\/li>\n<li>Supports all image formats (JPG, PNG, GIF, WebP, SVG, etc.)<\/li>\n<\/ul>\n\n<h3>Customization<\/h3>\n\n<h4>Filters and Hooks<\/h4>\n\n<p>The plugin provides several filters for developers to customize functionality:<\/p>\n\n<p><strong>aats_generated_alt_text<\/strong>\nFilter the generated alt text before saving.<\/p>\n\n<pre><code>add_filter('aats_generated_alt_text', function($alt_text, $filename) {\n    \/\/ Custom processing\n    return $alt_text;\n}, 10, 2);\n<\/code><\/pre>\n\n<p><strong>aats_title_to_alt<\/strong>\nFilter the title to alt conversion.<\/p>\n\n<pre><code>add_filter('aats_title_to_alt', function($alt, $title) {\n    \/\/ Custom conversion\n    return $alt;\n}, 10, 2);\n<\/code><\/pre>\n\n<p><strong>aats_alt_to_title<\/strong>\nFilter the alt to title conversion.<\/p>\n\n<pre><code>add_filter('aats_alt_to_title', function($title, $alt) {\n    \/\/ Custom conversion\n    return $title;\n}, 10, 2);\n<\/code><\/pre>\n\n<h4>Action Hooks<\/h4>\n\n<p><strong>aats_before_sync<\/strong>\nFires before sync operations.<\/p>\n\n<pre><code>add_action('aats_before_sync', function($attachment_id, $field, $value) {\n    \/\/ Custom logic before sync\n}, 10, 3);\n<\/code><\/pre>\n\n<p><strong>aats_after_sync<\/strong>\nFires after sync operations.<\/p>\n\n<pre><code>add_action('aats_after_sync', function($attachment_id, $field, $value, $result) {\n    \/\/ Custom logic after sync\n}, 10, 4);&lt;h3&gt;Developer Notes&lt;\/h3&gt;\n<\/code><\/pre>\n\n<h4>Plugin Constants<\/h4>\n\n\n\n\n  Constant\n  Description\n\n\n\n\n  <code>AATS_VERSION<\/code>\n  Plugin version\n\n\n  <code>AATS_PLUGIN_DIR<\/code>\n  Plugin directory path\n\n\n  <code>AATS_PLUGIN_URL<\/code>\n  Plugin URL\n\n\n  <code>AATS_PLUGIN_BASENAME<\/code>\n  Plugin basename\n\n\n\n\n<h4>Classes<\/h4>\n\n\n\n\n  Class\n  Description\n\n\n\n\n  <code>AutoAltTitleSync<\/code>\n  Main plugin class\n\n\n  <code>AATS_Upload_Handler<\/code>\n  Upload and alt generation\n\n\n  <code>AATS_Sync_Handler<\/code>\n  Bi-directional sync logic\n\n\n\n\n<h4>JavaScript API<\/h4>\n\n<p>The plugin exposes <code>AATS_Sync<\/code> globally for developers:<\/p>\n\n<pre><code>\/\/ Check if syncing\nAATS_Sync.isSyncing\n\n\/\/ Manually trigger sync\nAATS_Sync.manualAjaxSync(attachmentId);\n\n\/\/ Convert Title to Alt\nAATS_Sync.titleToAlt(title);\n\n\/\/ Convert Alt to Title\nAATS_Sync.altToTitle(alt);&lt;h3&gt;Contributing&lt;\/h3&gt;\n<\/code><\/pre>\n\n<p>Contributions are welcome! Please submit pull requests or report issues on the plugin's GitHub repository.<\/p>\n\n<h3>Credits<\/h3>\n\n<p>Developed by Anees Ahmad<\/p>\n\n<h3>License<\/h3>\n\n<p>This plugin is licensed under the GPLv2 or later.<\/p>\n\n<h3>Support<\/h3>\n\n<p>For support, please visit the WordPress support forums or contact the developer.<\/p>\n\n<h3>Donations<\/h3>\n\n<p>If you find this plugin useful, please consider making a donation to support development.<\/p>\n\n<!--section=installation-->\n<h4>Automatic Installation (Recommended)<\/h4>\n\n<ol>\n<li>Go to <strong>Plugins \u2192 Add New<\/strong> in your WordPress admin<\/li>\n<li>Search for \"Auto Alt &amp; Title Sync\"<\/li>\n<li>Click <strong>Install Now<\/strong> and then <strong>Activate<\/strong><\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download the plugin ZIP file<\/li>\n<li>Go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong><\/li>\n<li>Upload the ZIP file and click <strong>Install Now<\/strong><\/li>\n<li>Click <strong>Activate Plugin<\/strong><\/li>\n<\/ol>\n\n<h4>FTP Installation<\/h4>\n\n<ol>\n<li>Unzip the plugin folder<\/li>\n<li>Upload the <code>auto-title-alt-sync<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Go to <strong>Plugins<\/strong> in WordPress admin and activate the plugin<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20this%20plugin%20overwrite%20existing%20alt%20text%3F\"><h3>Will this plugin overwrite existing alt text?<\/h3><\/dt>\n<dd><p>No. The plugin only generates alt text for new uploads that don't already have alt text. Existing alt text is preserved.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20non-image%20files%3F\"><h3>Does this work with non-image files?<\/h3><\/dt>\n<dd><p>No. The plugin only processes image files (JPG, PNG, GIF, WebP, SVG, etc.). PDFs, videos, and other file types are ignored.<\/p><\/dd>\n<dt id=\"can%20i%20disable%20the%20sync%20feature%3F\"><h3>Can I disable the sync feature?<\/h3><\/dt>\n<dd><p>The sync is always active, but you can modify the code or use hooks to customize behavior.<\/p><\/dd>\n<dt id=\"will%20this%20work%20with%20my%20theme%3F\"><h3>Will this work with my theme?<\/h3><\/dt>\n<dd><p>Yes! The plugin works entirely in the admin area and doesn't affect the frontend. It's compatible with all WordPress themes.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20page%20builders%3F\"><h3>Does this work with page builders?<\/h3><\/dt>\n<dd><p>Yes. Since the plugin works at the Media Library level, it's compatible with Elementor, WPBakery, Beaver Builder, and all other page builders.<\/p><\/dd>\n<dt id=\"how%20do%20i%20manually%20sync%20title%20and%20alt%3F\"><h3>How do I manually sync Title and Alt?<\/h3><\/dt>\n<dd><p>In the Media Library, edit an image and you'll see a \"Sync Now\" button in the meta box. Click it to manually sync both fields.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20for%20existing%20images%3F\"><h3>Can I use this for existing images?<\/h3><\/dt>\n<dd><p>The plugin automatically processes new uploads. For existing images, you can use the manual sync button or write a custom script.<\/p><\/dd>\n<dt id=\"is%20this%20plugin%20translation%20ready%3F\"><h3>Is this plugin translation ready?<\/h3><\/dt>\n<dd><p>Yes! The plugin is fully internationalized and includes translation files.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20down%20my%20site%3F\"><h3>Will this slow down my site?<\/h3><\/dt>\n<dd><p>No. The plugin is lightweight and only runs in the admin area. It has minimal impact on performance.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20change%20the%20title%3F\"><h3>What happens if I change the Title?<\/h3><\/dt>\n<dd><p>The Alt text automatically updates to match the new Title in a properly formatted way.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20change%20the%20alt%20text%3F\"><h3>What happens if I change the Alt text?<\/h3><\/dt>\n<dd><p>The Title automatically updates to match the new Alt text in a properly formatted way.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0 - 2024-01-15<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Auto alt generation on image upload<\/li>\n<li>Bi-directional Title \u2194 Alt sync<\/li>\n<li>Real-time updates in Media Editor<\/li>\n<li>Media modal support<\/li>\n<li>Manual sync button<\/li>\n<li>AJAX-powered synchronization<\/li>\n<li>WordPress 5.0+ compatibility<\/li>\n<li>PHP 7.0+ compatibility<\/li>\n<li>Translation ready<\/li>\n<\/ul>","raw_excerpt":"Automatically generates alt text from image filenames on upload and provides bi-directional sync between Title and Alt fields in the Media Library.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/338811","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=338811"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/aanees61"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=338811"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=338811"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=338811"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=338811"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=338811"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=338811"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}