
WOWStudio Accessibility Remediation – WCAG Checker, Scanner and Alt Text Fixes
by WOWStudio
WOWStudio Accessibility Remediation helps you find, fix and document accessibility issues in your WordPress site. It scans your pages against WCAG 2.2 A and AA success criteria, explains what it found in plain language, and proposes real changes to your markup that you review before anything is applied.
It is not an accessibility overlay. Nothing is injected into your front end, and no widget or toolbar is added for your visitors. Fixes are changes to the code itself.
How it works
- Scan, twice. A server-side scan reads the rendered HTML and checks it against a registry of WCAG rules. A second pass then runs in your browser, on the page as it was actually painted, to check the things no parser can know: real contrast, real target sizes, real layout. No external service is contacted for either.
- See it. The inspector puts the findings beside a live preview of the page. Choosing a finding highlights the element it is about, so you are never left guessing which paragraph or which button.
- Understand. Every issue is tagged with its WCAG success criterion and severity, and labelled either auto-detected or needs manual review.
- Fix. Suggested markup fixes are shown as a preview and a diff, and applied fixes are stored in a reversible override layer that never overwrites your content. Findings caused by styling instead get a style rule, written into your own Additional CSS — where you can read, edit or delete it without this plugin.
- Check the fix worked. After a style rule is applied, the page is loaded again and measured again. If something in your theme overrode the rule, you are told that, rather than being told it is fixed.
- Check how hard it is to read. Pages are measured against the Flesch–Kincaid grade level, and you can add a plain-language summary where the text is heavy going.
- Describe your images. One screen lists every image in your media library that has never been described, with a field beside each. Type, save, move on — instead of opening forty media screens.
- Do it site-wide. Check every page and post in one run, in the background. There is no page limit and no paid tier.
- Document. Generate an accessibility statement you edit and publish, including the feedback contact mechanism European rules expect.
Honesty about what automated testing can do
Automated testing can only detect part of WCAG. Many criteria — meaningful sequence, focus order, whether your alt text is actually accurate — require a human being. This plugin tells you which is which, in a coverage panel you can read at any time, and it will never report your site as finished.
This plugin does not determine or certify whether your site complies with the ADA, the European Accessibility Act, Section 508, AODA, the UK Equality Act, or any other law. It is a tool that helps you do accessibility work and keep a record of it. It is not legal advice, and it is not a substitute for testing with disabled users.
What it will not do
- No front-end accessibility widget, toolbar, or overlay.
- No silent changes to your content. Every fix is reviewed by a person first.
- No claim, anywhere, that your site is compliant, certified, or protected from legal action.
- No conformance document published without your explicit review and attestation.
Bundled libraries
This plugin bundles Action Scheduler by Automattic, which runs the
background work — checking many pages at once — so that long jobs never block
an admin page or time out half-finished. It is licensed GPLv3 or later; this
plugin’s own code is GPLv2 or later.
Action Scheduler makes no outbound requests of its own. Source and documentation:
https://actionscheduler.org
Source code and how to build it
Every line of this plugin is public, including the JavaScript and CSS that ship
compiled:
https://github.com/wowstudio-dev/WOWStudio-Accessibility-Remediation
The admin interface is React, built with @wordpress/scripts (webpack and
Babel), and the styles are Sass. What ships in build/ is generated from
assets/src/ in that repository:
build/index.jsfromassets/src/index.js— the admin screensbuild/style-index.cssfromassets/src/style.scssbuild/editor.jsfromassets/src/editor/index.js— the block editor panelbuild/editor.cssfromassets/src/editor/editor.scssbuild/blocks/statement/index.jsfromassets/src/blocks/statement/index.js
— the accessibility statement blockbuild/blocks/statement/style-index.cssfrom
assets/src/blocks/statement/style.scss
Each stylesheet also has an -rtl counterpart, generated for right-to-left
locales from the same source.
To build it yourself, from a clone of that repository:
npm install then `npm run build` produces `build/`.
composer install --no-dev --optimize-autoloader produces `vendor/`.
bin/build.sh --zip does both and assembles the distributable zip.
npm run start rebuilds on change while developing, and `bash bin/gate.sh`
runs the ten checks — tests, linters, static analysis and the guards — that
every commit has to pass.
Not everything is compiled. assets/front/site-fixes.js is the only JavaScript
this plugin puts on the front end, and it ships exactly as it was written:
readable, commented, and loaded only when a site-wide fix that needs it is
switched on.
External services
This plugin contacts no external service, ever. There is no API, no account, no
telemetry, and no phone-home. The scanner, the fixes, the alt-text screen, the
statement generator and the reports all run entirely on your own site, and the
plugin works the same whether or not the server can reach the internet.
That is also why there are no scanning limits. Nothing is metered because
nothing is being paid for per page.
Screenshots

The report. What was found across everything checked, what needs a person rather than a machine, and what each figure is made of. Every bar opens the findings behind it.

A page being inspected. The findings sit beside a live preview of the page, and choosing one highlights the element it is about, so you are never guessing which paragraph or which button.

Choosing what to check. Posts and pages, with what is already known about each, checked in the background so nothing blocks the admin.

Images that have never been described, with a field beside each. What you write goes into WordPress's own alt text, so it applies everywhere the image is used and stays behind if this plugin is removed.

Site-wide fixes. Switches that supply what a theme leaves out — a skip link, a visible focus outline, a page title. Each one says what it might disturb before you turn it on.

The accessibility statement. A draft you review, edit and attest to, including the feedback contact mechanism European rules expect. The plugin never asserts conformance on your behalf.

The setup, on first activation. Three steps, none of them mandatory, and nothing switched on for you.