{"id":329997,"date":"2026-08-05T18:07:49","date_gmt":"2026-08-05T18:07:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/a11yscanfix-accessibility-scanner-auto-fixer-ai-alt-text\/"},"modified":"2026-08-05T18:07:14","modified_gmt":"2026-08-05T18:07:14","slug":"acceguru","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/acceguru\/","author":13235227,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.0.2","requires":"6.4","requires_php":"8.0","requires_plugins":null,"header_name":"AcceGuru - Accessibility Scanner, Auto-Fixer & AI Alt Text","header_author":"Igrika","header_description":"Accessibility scanner, automated fixers and AI alt text to help improve WCAG 2.2, Section 508 and EN 301 549 conformance.","assets_banners_color":"f6e2d6","last_updated":"2026-08-05 18:07:14","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/acce.guru\/","header_author_uri":"https:\/\/igrika.dev\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":31,"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":"Merkucio","date":"2026-08-05 18:07:14"}},"upgrade_notice":{"1.0.1":"<p>Adds OpenAI and Anthropic alt-text providers, &quot;Retry failed pages&quot; on the dashboard, and tab-loss \/ navigation guards during site scans. Recommended for all users.<\/p>","1.0.0":"<p>Full visual redesign, scan pause\/resume, adaptive time-estimate, and four new fixers. Recommended for all users.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3635691,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3635691,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3635691,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3635691,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3635691,"resolution":"1","location":"assets","locale":"","width":1600,"height":996},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3635691,"resolution":"2","location":"assets","locale":"","width":1600,"height":983},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3635691,"resolution":"3","location":"assets","locale":"","width":1600,"height":996},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3635691,"resolution":"4","location":"assets","locale":"","width":1600,"height":992},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3635691,"resolution":"5","location":"assets","locale":"","width":1600,"height":998},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3635691,"resolution":"6","location":"assets","locale":"","width":1600,"height":2040}},"screenshots":{"1":"Per-page issue list in the Block Editor sidebar.","2":"Site-wide scan dashboard with top offending pages and most common issues.","3":"Front-end overlay highlighting accessibility issues on the live page.","4":"Bulk AI alt-text generation across the Media Library.","5":"Settings screen with toggleable fixers and AI provider selection.","6":"Accessibility statement generator with live preview."}},"plugin_section":[262246],"plugin_tags":[1447,1953,2682,130919,1956],"plugin_category":[34],"plugin_contributors":[261297],"plugin_business_model":[],"class_list":["post-329997","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-a11y","plugin_tags-accessibility","plugin_tags-ada","plugin_tags-section-508","plugin_tags-wcag","plugin_category-accessibility","plugin_contributors-merkucio","plugin_committers-merkucio"],"banners":{"banner":"https:\/\/ps.w.org\/acceguru\/assets\/banner-772x250.png?rev=3635691","banner_2x":"https:\/\/ps.w.org\/acceguru\/assets\/banner-1544x500.png?rev=3635691","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/acceguru\/assets\/icon-128x128.png?rev=3635691","icon_2x":"https:\/\/ps.w.org\/acceguru\/assets\/icon-256x256.png?rev=3635691","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/acceguru\/assets\/screenshot-1.png?rev=3635691","caption":"Per-page issue list in the Block Editor sidebar."},{"src":"https:\/\/ps.w.org\/acceguru\/assets\/screenshot-2.png?rev=3635691","caption":"Site-wide scan dashboard with top offending pages and most common issues."},{"src":"https:\/\/ps.w.org\/acceguru\/assets\/screenshot-3.png?rev=3635691","caption":"Front-end overlay highlighting accessibility issues on the live page."},{"src":"https:\/\/ps.w.org\/acceguru\/assets\/screenshot-4.png?rev=3635691","caption":"Bulk AI alt-text generation across the Media Library."},{"src":"https:\/\/ps.w.org\/acceguru\/assets\/screenshot-5.png?rev=3635691","caption":"Settings screen with toggleable fixers and AI provider selection."},{"src":"https:\/\/ps.w.org\/acceguru\/assets\/screenshot-6.png?rev=3635691","caption":"Accessibility statement generator with live preview."}],"raw_content":"<!--section=description-->\n<p>AcceGuru helps identify and address accessibility issues related to WCAG 2.0 \/ 2.1 \/ 2.2, Section 508 and EN 301 549. Automated testing cannot establish legal compliance or complete WCAG conformance; manual review is still required.<\/p>\n\n<p>The axe-core scanner checks selected posts, pages and public custom post types from one dashboard. Saved results appear in the Block Editor sidebar and A11y post-list column, while the front-end overlay highlights affected elements on the live page.<\/p>\n\n<p>AcceGuru also provides toggleable accessibility fixers, site-wide ignored rules, optional AI-generated alt text using your own provider key, and an accessibility statement generator.<\/p>\n\n<h4>Key features<\/h4>\n\n<ul>\n<li>axe-core plus AcceGuru checks, filtered by the selected WCAG level and recommended-checks setting<\/li>\n<li>Dashboard scan with progress, pause\/resume, failed-page retry, log export and content-type coverage<\/li>\n<li>Block Editor sidebar, A11y post-list column and front-end issue highlighter<\/li>\n<li>13 independently toggleable fixers and site-wide ignored rules<\/li>\n<li>Optional single, bulk and on-upload AI alt-text generation<\/li>\n<li>Accessibility statement page, shortcode and optional footer link<\/li>\n<li>Translation-ready (text domain <code>acceguru<\/code>)<\/li>\n<\/ul>\n\n<h4>Auto-fixers<\/h4>\n\n<p>Low-impact fixes are enabled on install. Appearance-changing fixes are off by default. Settings -&gt; Fixers provides separate controls for skip links, focus outlines, language attributes, search and comment-form labels, empty searches, new-window and document-link labels, link underlines, video controls, positive tabindex, redundant titles and viewport scaling.<\/p>\n\n<h4>Standards coverage<\/h4>\n\n<ul>\n<li><strong>WCAG 2.0 \/ 2.1 \/ 2.2<\/strong> - selectable levels A, AA and AAA<\/li>\n<li><strong>Recommended checks<\/strong> - optional axe-core and AcceGuru checks that are not formal WCAG failures<\/li>\n<li><strong>Section 508<\/strong> and <strong>EN 301 549<\/strong> - optional axe-core tagged rules<\/li>\n<\/ul>\n\n<p>Accessibility requirements vary by jurisdiction. AcceGuru does not determine or guarantee legal compliance or complete WCAG conformance.<\/p>\n\n<h4>AI providers<\/h4>\n\n<p>AI alt text is optional and uses an API key supplied by the site owner. Supported providers are OpenAI, Anthropic, Google Gemini and Mistral. Keys are encrypted at rest using the WordPress authentication salt. See Privacy below for exactly when data is sent and for provider terms and privacy policies.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>AcceGuru does not phone home and has no analytics, telemetry, third-party trackers or remote license validation. The scanner runs in the browser and scan results stay on your site.<\/p>\n\n<p>AI features are optional. When you request alt text for one image, run Bulk Alt Text, or enable automatic generation on upload, AcceGuru sends the image content and a text prompt from your server to the selected provider. Testing an API key sends only a short text prompt; Bulk Alt Text performs this test before processing images. When media is stored remotely or served through an offloaded-media\/CDN URL, AcceGuru may first fetch that attachment URL. No provider request is made unless an administrator configures an AI provider and API key. Requests occur when an authorized user generates alt text, an administrator tests a key or starts bulk generation, or automatic generation on upload has been enabled.<\/p>\n\n<p>Provider information:<\/p>\n\n<ul>\n<li>OpenAI - https:\/\/openai.com\/ \u00b7 https:\/\/openai.com\/policies\/services-agreement\/ \u00b7 https:\/\/openai.com\/policies\/privacy-policy\/<\/li>\n<li>Anthropic - https:\/\/www.anthropic.com\/ \u00b7 https:\/\/www.anthropic.com\/legal\/commercial-terms \u00b7 https:\/\/www.anthropic.com\/legal\/privacy<\/li>\n<li>Google Gemini - https:\/\/ai.google.dev\/ \u00b7 https:\/\/ai.google.dev\/gemini-api\/terms \u00b7 https:\/\/policies.google.com\/privacy<\/li>\n<li>Mistral - https:\/\/mistral.ai\/ \u00b7 https:\/\/mistral.ai\/terms\/ \u00b7 https:\/\/legal.mistral.ai\/terms\/privacy-policy<\/li>\n<\/ul>\n\n<h4>Data stored in your database<\/h4>\n\n<ul>\n<li><code>wp_options<\/code> - settings, ignored-rules list, encrypted AI API keys (under <code>acceguru_*<\/code>)<\/li>\n<li><code>wp_postmeta<\/code> - per-post scan results and scan summary (under <code>_acceguru_*<\/code>)<\/li>\n<li><code>wp_options<\/code> transients - dashboard aggregate cache (1 hour TTL)<\/li>\n<\/ul>\n\n<p>On uninstall, data is preserved by default. The plugin replaces its shortcode on the tracked accessibility-statement page with a final static statement, so the published page remains readable without AcceGuru. Enable \"Delete all data on uninstall\" under Settings -&gt; Rules, in the Advanced section, to remove plugin options, transients and post metadata and move the tracked statement page to the Trash. A page that no longer contains the AcceGuru shortcode is left untouched.<\/p>\n\n<h3>Credits<\/h3>\n\n<p>This plugin bundles axe-core (<code>assets\/js\/axe.min.js<\/code>, version 4.12.1), the accessibility testing engine by Deque Systems, licensed under the Mozilla Public License 2.0. Unminified source: https:\/\/github.com\/dequelabs\/axe-core\/tree\/v4.12.1<\/p>\n\n<p>The bundled DM Sans and JetBrains Mono fonts are licensed under the SIL Open Font License 1.1. The full license is in assets\/fonts\/OFL.txt.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>acceguru<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install via Plugins -&gt; Add New.<\/li>\n<li>Activate the plugin through the Plugins screen.<\/li>\n<li>Go to <strong>AcceGuru -&gt; Settings<\/strong> to enable the fixers you want.<\/li>\n<li>(Optional) Add an API key under <strong>AI Alt Text<\/strong> if you want AI-generated alt text.<\/li>\n<li>Run a site scan from AcceGuru -&gt; Dashboard. <\/li>\n<li>Open any scanned post or page in the Block Editor to review its saved results.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20make%20my%20site%20wcag%20compliant%20automatically%3F\"><h3>Does this make my site WCAG compliant automatically?<\/h3><\/dt>\n<dd><p>No. Automated testing covers only part of accessibility. Manual review is still required for matters such as meaningful headings, link purpose, keyboard interaction and reading order. AcceGuru does not determine or guarantee legal compliance or complete WCAG conformance.<\/p><\/dd>\n<dt id=\"where%20are%20ai%20api%20keys%20stored%3F\"><h3>Where are AI API keys stored?<\/h3><\/dt>\n<dd><p>In <code>wp_options<\/code>, encrypted with AES-256-GCM using a key derived from <code>wp_salt('auth')<\/code>. If the server lacks the required OpenSSL support, the key is not saved unencrypted. It is sent only to the configured provider.<\/p><\/dd>\n<dt id=\"does%20the%20scanner%20slow%20down%20my%20site%3F\"><h3>Does the scanner slow down my site?<\/h3><\/dt>\n<dd><p>The scanner is not loaded for normal visitors. axe-core is lazy-loaded for an authorized user only when a dashboard scan or front-end overlay scan is requested.<\/p><\/dd>\n<dt id=\"which%20post%20types%20does%20the%20a11y%20column%20appear%20on%3F\"><h3>Which post types does the A11y column appear on?<\/h3><\/dt>\n<dd><p>Posts, pages, and public custom post types that use the standard WordPress posts list table. Media Library attachments are not included.<\/p><\/dd>\n<dt id=\"can%20i%20exclude%20specific%20issues%20or%20rules%3F\"><h3>Can I exclude specific issues or rules?<\/h3><\/dt>\n<dd><p>Yes. Use the \"Ignore\" button on the dashboard's Most Common Issues panel to hide a rule site-wide; ignored rules are excluded from dashboard counts and per-page panels.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20block%20themes%3F\"><h3>Does it work with block themes?<\/h3><\/dt>\n<dd><p>Yes. The fixers support block themes, including <code>theme.json<\/code> styles.<\/p><\/dd>\n<dt id=\"why%20does%20the%20dashboard%20count%20differ%20from%20what%20i%20see%20in%20the%20front-end%20overlay%3F\"><h3>Why does the dashboard count differ from what I see in the front-end overlay?<\/h3><\/dt>\n<dd><p>The site scan uses a desktop-sized viewport based on the administrator's browser, with a minimum of 1024x768. The overlay uses the current live viewport, so layout-dependent results can differ.<\/p><\/dd>\n<dt id=\"how%20is%20passed%20checks%20calculated%3F\"><h3>How is Passed Checks calculated?<\/h3><\/dt>\n<dd><p>Passed Checks is the percentage of completed axe-core checks that passed. AcceGuru findings appear in issue totals and lists but are not mixed into that percentage. Results are marked for a new scan after relevant settings or rules change.<\/p><\/dd>\n<dt id=\"why%20do%20some%20pages%20show%20%22timed%20out%20after%2030s%22%20in%20the%20scan%20log%3F\"><h3>Why do some pages show \"Timed out after 30s\" in the scan log?<\/h3><\/dt>\n<dd><p>Each page has a 30-second limit. Slow hosting, heavy themes\/plugins or third-party scripts can cause a timeout; use \"Retry failed pages\" after the server recovers.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Update the bundled axe-core accessibility engine from 4.10.2 to 4.12.1.<\/li>\n<li>Apply WCAG level and recommended-check settings consistently to axe-core and AcceGuru checks.<\/li>\n<li>Correct rule classifications, remove duplicate findings and calculate Passed Checks from axe-core results only.<\/li>\n<li>Mark incompatible saved results for a new scan and prevent pause\/resume or retry from mixing scan profiles.<\/li>\n<li>Preserve a readable static accessibility statement, or trash the tracked statement page when uninstall data removal is enabled.<\/li>\n<li>Add OpenAI and Anthropic alt-text providers alongside Gemini and Mistral.<\/li>\n<li>Add failed-page retry, bounded scan logs, iframe message validation, navigation warnings and content-type coverage information.<\/li>\n<li>Make the live overlay keyboard accessible and clean up highlights and event listeners after every scan.<\/li>\n<li>Improve the dashboard, settings, Block Editor links and alt-text handling.<\/li>\n<\/ul>\n\n<p>Earlier release history is available in <code>changelog.txt<\/code>.<\/p>","raw_excerpt":"Accessibility scanner, auto-fixer and AI alt text to help identify and address issues related to WCAG 2.2, Section 508 and EN 301 549.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/329997","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=329997"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/merkucio"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=329997"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=329997"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=329997"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=329997"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=329997"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=329997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}