{"id":370474,"date":"2026-10-19T19:53:22","date_gmt":"2026-10-19T19:53:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/onsite-accessibility\/"},"modified":"2026-10-19T19:52:47","modified_gmt":"2026-10-19T19:52:47","slug":"finalwork-accessibility","status":"publish","type":"plugin","link":"https:\/\/snd.wordpress.org\/plugins\/finalwork-accessibility\/","author":23567312,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.3","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Finalwork Accessibility","header_author":"Ilya Vorobyov","header_description":"Checks your site for accessibility problems and helps you fix them. Runs on your own server: no account, no cloud, no data sent anywhere.","assets_banners_color":"05061a","last_updated":"2026-10-19 19:52:47","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":58,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"finalwork","date":"2026-10-19 19:52:47","revision":3755455}},"upgrade_notice":{"1.0.0":"<p>First public release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3755455,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3755455,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3755455,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3755455,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3755455,"resolution":"1","location":"assets","locale":"","width":1440,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3755455,"resolution":"2","location":"assets","locale":"","width":1440,"height":632},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3755455,"resolution":"3","location":"assets","locale":"","width":1440,"height":1100},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3755455,"resolution":"4","location":"assets","locale":"","width":1440,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3755455,"resolution":"5","location":"assets","locale":"","width":1440,"height":640},"screenshot-6.gif":{"filename":"screenshot-6.gif","revision":3755455,"resolution":"6","location":"assets","locale":"","width":960,"height":600}},"screenshots":{"1":"The visitor widget on a live site: bigger text, high contrast, highlighted links and stopped animations in one panel.","2":"The same page with Bigger text and High contrast turned on. The choice is remembered in the visitor's browser only.","3":"Scan results: each problem says what is wrong and what to do, with the element and the pages where it appears.","4":"The scan walks through your pages in small batches. You can stop it and continue later.","5":"The widget on a page built with Elementor.","6":"A visitor opens the widget and turns on Bigger text, then High contrast."}},"plugin_section":[],"plugin_tags":[1953,209467,240895,241427,1956],"plugin_category":[34],"plugin_contributors":[287584],"plugin_business_model":[],"class_list":["post-370474","plugin","type-plugin","status-publish","hentry","plugin_tags-accessibility","plugin_tags-accessibility-checker","plugin_tags-accessibility-widget","plugin_tags-eaa","plugin_tags-wcag","plugin_category-accessibility","plugin_contributors-finalwork","plugin_committers-finalwork"],"banners":{"banner":"https:\/\/ps.w.org\/finalwork-accessibility\/assets\/banner-772x250.png?rev=3755455","banner_2x":"https:\/\/ps.w.org\/finalwork-accessibility\/assets\/banner-1544x500.png?rev=3755455","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/finalwork-accessibility\/assets\/icon-128x128.png?rev=3755455","icon_2x":"https:\/\/ps.w.org\/finalwork-accessibility\/assets\/icon-256x256.png?rev=3755455","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/finalwork-accessibility\/assets\/screenshot-1.png?rev=3755455","caption":"The visitor widget on a live site: bigger text, high contrast, highlighted links and stopped animations in one panel."},{"src":"https:\/\/ps.w.org\/finalwork-accessibility\/assets\/screenshot-2.png?rev=3755455","caption":"The same page with Bigger text and High contrast turned on. The choice is remembered in the visitor's browser only."},{"src":"https:\/\/ps.w.org\/finalwork-accessibility\/assets\/screenshot-3.png?rev=3755455","caption":"Scan results: each problem says what is wrong and what to do, with the element and the pages where it appears."},{"src":"https:\/\/ps.w.org\/finalwork-accessibility\/assets\/screenshot-4.png?rev=3755455","caption":"The scan walks through your pages in small batches. You can stop it and continue later."},{"src":"https:\/\/ps.w.org\/finalwork-accessibility\/assets\/screenshot-5.png?rev=3755455","caption":"The widget on a page built with Elementor."},{"src":"https:\/\/ps.w.org\/finalwork-accessibility\/assets\/screenshot-6.gif?rev=3755455","caption":"A visitor opens the widget and turns on Bigger text, then High contrast."}],"raw_content":"<!--section=description-->\n<p>Finalwork Accessibility checks your whole WordPress site for accessibility problems, and adds a simple accessibility button for visitors:<\/p>\n\n<ol>\n<li><strong>Accessibility checker.<\/strong> Scans your pages against WCAG 2.0 and 2.1 level A and AA rules and tells you, in plain words, what is wrong and what to put instead.<\/li>\n<li><strong>Accessibility widget.<\/strong> Adds a small button that lets visitors enlarge text, switch to high contrast, highlight links and stop animations.<\/li>\n<\/ol>\n\n<p>Everything runs inside your WordPress site. There is no account to create, no API key, no connection to our servers and no limit on visitors or page views.<\/p>\n\n<p>Switching from One Click Accessibility? There is nothing to import or connect: deactivate the old plugin, install this one and run a scan.<\/p>\n\n<h4>The accessibility checker<\/h4>\n\n<ul>\n<li>Unlimited manual scans: run a scan whenever you like. Each scan checks the front page and all of your published posts and pages, however many there are.<\/li>\n<li>Uses <a href=\"https:\/\/github.com\/dequelabs\/axe-core\">axe-core<\/a>, the open-source accessibility engine by Deque, with WCAG 2.0 \/ 2.1 A and AA rules plus best practices.<\/li>\n<li>Checks colour contrast: text is measured against its background with the colours the page really shows.<\/li>\n<li>Runs in your own browser while you are on the plugin screen: each page of your own site is opened in a hidden frame and checked there, so the checker sees the page after themes and page builders (including Elementor) have rendered it, with real computed colours. Your hosting does not do the heavy work.<\/li>\n<li>Checks each page the way a logged-out visitor sees it, so the admin bar and editor links do not show up as false problems.<\/li>\n<li>Works in small batches of 5 pages. You can stop and continue later; progress is saved.<\/li>\n<li>The same problem on many pages becomes one row with a page count, instead of hundreds of repeated lines.<\/li>\n<li>Every finding shows the severity, what is wrong and what to do, the CSS selector of the element, the pages where it appears and a link that explains the rule.<\/li>\n<li>Filter by severity or by page. Problems the checker cannot explain automatically are listed as \"Needs a human look\" instead of being hidden.<\/li>\n<li>Only the site administrator (users who can manage options) can run a scan.<\/li>\n<\/ul>\n\n<h4>The accessibility widget<\/h4>\n\n<ul>\n<li>A floating button on the front end of your site with four modes: <strong>Bigger text<\/strong>, <strong>High contrast<\/strong>, <strong>Highlight links<\/strong> and <strong>Stop animations<\/strong>.<\/li>\n<li>Bigger text also enlarges font sizes that Elementor sets in pixels.<\/li>\n<li>The visitor's choice is stored only in their own browser (localStorage) and applied before the page is drawn, so there is no flash of the normal layout.<\/li>\n<li>The widget itself is accessible: it works with the keyboard (Tab stays inside the open panel, Esc closes it), has proper labels for screen readers, and follows dark mode, Windows high contrast mode and reduced motion settings.<\/li>\n<li>No \"powered by\" link and no credits on your site.<\/li>\n<\/ul>\n\n<h4>What this plugin is not<\/h4>\n\n<p>We want to be honest about this, because a lot of accessibility plugins are not.<\/p>\n\n<ul>\n<li><strong>The widget does not make your site compliant with any law.<\/strong> It is a reading aid for visitors. Accessibility overlays are not accepted as a replacement for fixing the site itself.<\/li>\n<li><strong>A scan is not an audit.<\/strong> Automated tools find only part of the problems described in WCAG. Many checks (for example, whether an image description makes sense) need a person.<\/li>\n<li>The plugin does not change your content or theme code. It shows you what to fix; fixing is up to you or your developer.<\/li>\n<li>It does not create an accessibility statement and does not schedule scans. The current version has no settings page options.<\/li>\n<\/ul>\n\n<h4>European Accessibility Act (EAA)<\/h4>\n\n<p>Laws such as the European Accessibility Act and Germany's BFSG point to the EN 301 549 standard, which builds on WCAG 2.1 level AA. The checker uses WCAG 2.0 and 2.1 A and AA rules, so its findings are a practical starting list for that work. It does not give you a certificate or a legal opinion.<\/p>\n\n<h4>Privacy<\/h4>\n\n<ul>\n<li>The plugin makes no requests to external servers. No telemetry, no usage tracking, no remote fonts or scripts.<\/li>\n<li>Scan results are stored in your own WordPress database. They are deleted when you delete the plugin.<\/li>\n<li>The widget sets no cookies and sends nothing anywhere.<\/li>\n<li>The plugin adds no admin notices, banners or ads to your dashboard. It lives on its own \"Accessibility\" menu page.<\/li>\n<\/ul>\n\n<h3>Third-party libraries<\/h3>\n\n<p>This plugin includes <strong>axe-core 4.13.0<\/strong> by Deque Systems, Inc. in <code>vendor\/axe.min.js<\/code>.<\/p>\n\n<ul>\n<li>Source code: https:\/\/github.com\/dequelabs\/axe-core (release 4.13.0: https:\/\/github.com\/dequelabs\/axe-core\/tree\/v4.13.0)<\/li>\n<li>License: Mozilla Public License 2.0, https:\/\/www.mozilla.org\/en-US\/MPL\/2.0\/ (full text included as <code>vendor\/axe-LICENSE.txt<\/code>). MPL 2.0 is compatible with the GNU GPL, see https:\/\/www.gnu.org\/licenses\/license-list.html#MPL-2.0<\/li>\n<li>The file is the unmodified minified build published by Deque. It includes core-js (MIT license), https:\/\/github.com\/zloirock\/core-js<\/li>\n<\/ul>\n\n<p>The rest of the plugin code is not minified.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20account%20or%20an%20api%20key%3F\"><h3>Do I need an account or an API key?<\/h3><\/dt>\n<dd><p>No. Install, activate, open the \"Accessibility\" menu and press \"Scan the site\". Nothing to sign up for.<\/p><\/dd>\n<dt id=\"is%20it%20gdpr%20friendly%3F%20where%20does%20my%20data%20go%3F\"><h3>Is it GDPR friendly? Where does my data go?<\/h3><\/dt>\n<dd><p>Nowhere. The plugin does not contact any external server. Scan results stay in your WordPress database, and the widget keeps a visitor's choice only in that visitor's browser. Please still check your own privacy policy with your legal advisor; we cannot give legal advice.<\/p><\/dd>\n<dt id=\"are%20there%20limits%20on%20visitors%2C%20page%20views%20or%20scans%3F\"><h3>Are there limits on visitors, page views or scans?<\/h3><\/dt>\n<dd><p>There are no limits on visitors or page views, and manual scans are unlimited: scan as often as you like. One scan covers the front page plus all published posts and pages, in small batches, however large the site is.<\/p><\/dd>\n<dt id=\"will%20it%20show%20ads%20or%20add%20menus%20from%20another%20company%20to%20my%20dashboard%3F\"><h3>Will it show ads or add menus from another company to my dashboard?<\/h3><\/dt>\n<dd><p>No. The plugin adds one menu item, \"Accessibility\", and nothing else. No notices, no banners, no upsell screens.<\/p><\/dd>\n<dt id=\"will%20the%20scan%20slow%20down%20my%20site%3F\"><h3>Will the scan slow down my site?<\/h3><\/dt>\n<dd><p>The checks run in the browser of the administrator who starts the scan, not on your server. The server only serves your pages one at a time, with short pauses in between, the same way it serves a visitor. You can stop the scan at any moment.<\/p><\/dd>\n<dt id=\"does%20the%20widget%20make%20my%20site%20legally%20compliant%3F\"><h3>Does the widget make my site legally compliant?<\/h3><\/dt>\n<dd><p>No. The widget helps visitors read your site more comfortably. Compliance comes from fixing the problems in the site itself, and the checker helps you find them.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20elementor%3F\"><h3>Does it work with Elementor?<\/h3><\/dt>\n<dd><p>Yes. The checker tests the page after Elementor has rendered it, and the \"Bigger text\" mode also enlarges Elementor font sizes set in pixels.<\/p><\/dd>\n<dt id=\"i%20used%20another%20accessibility%20plugin%20that%20now%20requires%20an%20account.%20can%20i%20switch%3F\"><h3>I used another accessibility plugin that now requires an account. Can I switch?<\/h3><\/dt>\n<dd><p>Yes. Deactivate the old plugin, install this one and run a scan. There is nothing to import and nothing to connect.<\/p><\/dd>\n<dt id=\"can%20i%20turn%20the%20widget%20off%20and%20use%20only%20the%20checker%3F\"><h3>Can I turn the widget off and use only the checker?<\/h3><\/dt>\n<dd><p>Not in this version. The widget appears on the front end while the plugin is active, and never in the admin area.<\/p><\/dd>\n<dt id=\"why%20does%20the%20checker%20say%20%22needs%20a%20human%20look%22%3F\"><h3>Why does the checker say \"Needs a human look\"?<\/h3><\/dt>\n<dd><p>For some rules the engine can report a problem but cannot say exactly what should change. Instead of hiding those, the plugin lists them separately with the rule name, the element and a link to the rule's explanation, so a person can decide.<\/p><\/dd>\n<dt id=\"where%20can%20i%20get%20help%3F\"><h3>Where can I get help?<\/h3><\/dt>\n<dd><p>Please use the support forum: https:\/\/wordpress.org\/support\/plugin\/finalwork-accessibility\/<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<li>Accessibility checker: WCAG 2.0 \/ 2.1 A and AA scan of the front page, posts and pages with axe-core 4.13.0, in batches with stop and resume.<\/li>\n<li>Findings grouped across pages, with severity, what to fix, element selector, pages and rule link; filters by severity and page.<\/li>\n<li>Accessibility widget: bigger text (including Elementor pixel sizes), high contrast, highlight links, stop animations; choice remembered in the visitor's browser.<\/li>\n<li>Widget works with keyboard and screen readers, dark mode, forced colors and reduced motion.<\/li>\n<li>Clean uninstall: all plugin data is removed when the plugin is deleted.<\/li>\n<\/ul>","raw_excerpt":"Find accessibility problems on your whole WordPress site. Free, unlimited scans, no account. Plus a simple accessibility button for visitors.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/370474","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=370474"}],"author":[{"embeddable":true,"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/finalwork"}],"wp:attachment":[{"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=370474"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=370474"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=370474"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=370474"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=370474"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=370474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}