{"id":10914,"date":"2026-05-22T18:30:59","date_gmt":"2026-05-22T10:30:59","guid":{"rendered":"https:\/\/aeosub.com\/tdf-image-alt-scanner\/"},"modified":"2026-05-22T18:30:59","modified_gmt":"2026-05-22T10:30:59","slug":"tdf-image-alt-scanner","status":"publish","type":"post","link":"https:\/\/aeosub.com\/zh\/tdf-image-alt-scanner\/","title":{"rendered":"TDF Image Alt Scanner"},"content":{"rendered":"<div class=\"plugin-info-card\" style=\"border: 1px solid #e2e8f0;border-radius: 10px;overflow: hidden;margin-bottom: 30px;font-family: -apple-system, system-ui, sans-serif;background: #fff\">\n<table style=\"width: 100%;border-collapse: collapse;font-size: 14px\">\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 15px 20px;text-align: left;width: 35%;color: #4a5568;background: #fcfcfc\"><img decoding=\"async\" src=\"https:\/\/s.w.org\/plugins\/geopattern-icon\/tdf-image-alt-scanner.svg\" style=\"width: 40px;height: 40px;border-radius: 6px;margin-right: 12px;vertical-align: middle\"> Developer<\/th>\n<td style=\"padding: 15px 20px;font-weight: 500\"><a href=\"https:\/\/profiles.wordpress.org\/willtdf\/\" target=\"_blank\" rel=\"noopener\">willtdf<\/a><\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Version<\/th>\n<td style=\"padding: 12px 20px\">v0.1.3<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Active Installs<\/th>\n<td style=\"padding: 12px 20px\">0 +<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Requires \/ Tested<\/th>\n<td style=\"padding: 12px 20px\">6.2 \/ 6.9.4<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Last Updated<\/th>\n<td style=\"padding: 12px 20px\">2026-05-22 9:35am GMT<\/td>\n<\/tr>\n<tr>\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Official Link<\/th>\n<td style=\"padding: 12px 20px\"><a href=\"https:\/\/wordpress.org\/plugins\/tdf-image-alt-scanner\/\" target=\"_blank\" style=\"text-decoration: none;color: #4a3bca;font-weight: bold\" rel=\"noopener\">View Details \u2192<\/a><\/td>\n<\/tr>\n<\/table><\/div>\n<div class=\"plugin-short-desc\" style=\"margin: 20px 0;padding: 12px 15px;background: #f9fafb;border-left: 4px solid #4a3bca;border-radius: 6px;font-style: italic;color: #4a5568\">Find and fix every missing image alt text on your WordPress site \u2014 for SEO, accessibility, and compliance.<\/div>\n<p><strong>TDF Image Alt Scanner<\/strong> scans your entire WordPress site for images with missing or low-quality alt text and gives you a single place to fix them \u2014 across posts, pages, custom post types, the Media Library, and WooCommerce products.<\/p>\n<p>Missing alt text is one of the most common and most expensive mistakes on the web:<\/p>\n<ul>\n<li><strong>SEO<\/strong> \u2014 Google uses alt text to understand image content. Missing alts hurt image search rankings and reduce the contextual relevance of your pages.<\/li>\n<li><strong>Accessibility<\/strong> \u2014 Screen readers depend on alt text. Missing alts exclude users with visual impairments from understanding your content.<\/li>\n<li><strong>Compliance<\/strong> \u2014 WCAG 2.1 \/ 2.2 and the European Accessibility Act both require alt text on meaningful images. UK and EU sites that ignore this face increasing legal exposure.<\/li>\n<\/ul>\n<p>TDF Image Alt Scanner finds the gaps in minutes and gives you the tools to fix them.<\/p>\n<h4>How it works<\/h4>\n<ol>\n<li>Click <strong>Run scan<\/strong>. The plugin walks your posts, pages, custom post types, Media Library, and WooCommerce galleries.<\/li>\n<li>Each image is classified as <strong>Missing<\/strong>, <strong>Decorative<\/strong>, <strong>Filename<\/strong> (alt text equals the file name \u2014 useless to screen readers), or <strong>Valid<\/strong>.<\/li>\n<li>The Results table shows everything in one place. Edit alt text inline; mark genuinely decorative images so they&#8217;re skipped by screen readers; export everything to CSV for review.<\/li>\n<li>Re-run the scan whenever you want to see your compliance score improve.<\/li>\n<\/ol>\n<h4>Free version features<\/h4>\n<ul>\n<li>Full site scan \u2014 every image on your site.<\/li>\n<li>Compliance score dashboard with scan history.<\/li>\n<li>Sortable, filterable bulk-edit table \u2014 filter by status, post type, or sort by date.<\/li>\n<li>Inline edit and save per image, with &#8220;mark as decorative&#8221; toggle.<\/li>\n<li>Detection of missing alt, decorative alt, and &#8220;alt equals filename&#8221; cases.<\/li>\n<li>CSV export of every audit row.<\/li>\n<li>Scans posts, pages, custom post types, Media Library, and WooCommerce products (including variations and gallery images).<\/li>\n<li>Gutenberg-aware: handles core\/image, core\/cover, core\/gallery, and nested blocks.<\/li>\n<\/ul>\n<h4>Pro features (sold separately)<\/h4>\n<ul>\n<li>AI-generated alt text \u2014 bring your own API key (Anthropic Claude, OpenAI, or Gemini).<\/li>\n<li>Per-image and bulk &#8220;Suggest with AI&#8221; actions, with review-before-save.<\/li>\n<li>Configurable prompt templates: SEO-focused, accessibility-focused, e-commerce.<\/li>\n<li>Multi-language alt text (30+ languages).<\/li>\n<li>WooCommerce context-aware prompts (uses product name and category).<\/li>\n<li>Scheduled re-scans (weekly \/ monthly).<\/li>\n<li>Email and Slack reports of new missing alt text.<\/li>\n<li>Branded PDF compliance reports referencing WCAG 2.1 \/ 2.2.<\/li>\n<li>Compliance score trend chart over time.<\/li>\n<li>Page builder integrations: Elementor, Beaver Builder, Bricks, Divi.<\/li>\n<li>Cost estimator for AI bulk jobs.<\/li>\n<\/ul>\n<h4>Privacy<\/h4>\n<p>TDF Image Alt Scanner does not send any data off your site. The plugin only uses the WordPress REST API to communicate between the dashboard and your site&#8217;s database.<\/p>\n<p>If you upgrade to Pro and enable AI alt text generation, you will be entering your own API key for one of the supported AI providers. In that case, image URLs and prompts are sent directly from your site to the AI provider you&#8217;ve chosen \u2014 TDF Image Alt Scanner never sees or stores them.<\/p>\n<h4>Source code &amp; building from source<\/h4>\n<p>The admin dashboard is a React app compiled with Vite. The unminified source is shipped inside the plugin zip at <code>admin\/react\/src\/<\/code> and can be rebuilt with:<\/p>\n<pre><code>cd admin\/react &amp;&amp; npm install &amp;&amp; npm run build\n<\/code><\/pre>\n<p>That regenerates the bundle at <code>admin\/dist\/<\/code>. Source files: <code>admin\/react\/src\/*.jsx<\/code>, <code>admin\/react\/src\/*.js<\/code>, <code>admin\/react\/src\/styles.css<\/code>. Build config: <code>admin\/react\/package.json<\/code>, <code>admin\/react\/vite.config.js<\/code>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Find and fix every missing image alt text on your WordPress site \u2014 for SEO, accessibility, and compliance.<\/p>","protected":false},"author":1,"featured_media":9317,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[252],"tags":[829,1371,982,554,1723,555],"class_list":["post-10914","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-trends","tag-accessibility","tag-alt-text","tag-images","tag-seo","tag-wcag","tag-wordpress-plugin"],"_links":{"self":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/10914","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/comments?post=10914"}],"version-history":[{"count":0,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/10914\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media\/9317"}],"wp:attachment":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media?parent=10914"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/categories?post=10914"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/tags?post=10914"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}