Accessibility Audit

A full WCAG 2.2 accessibility audit, built right into the Craft control panel. It scans every element with a public URL, entries, categories, Commerce products and any custom element type, keeps a record of the issues over time, and flags up the ones that need a human eye. All without leaving Craft.
Automated checks catch about a third of WCAG failures. That is true of every tool, including this one, and most vendors would rather not mention it. So the scanner does its part properly, 28 rules in PHP plus axe-core on the rendered page at both desktop and phone widths, and then hands you the rest as plain questions. Text sitting over a background image, where contrast genuinely cannot be measured, becomes a question rather than a quiet pass. Answer it once and the answer sticks through re-scans.
Every issue is tagged with difficulty and responsibility, so you can tell a template fix from a content fix before you scope the work.
Not sure where your site stands? Run any public page through the free checker. It uses the same PHP engine as the plugin, so what you see there is what the plugin will find, one page at a time instead of every page.
Standard finds the issues. Pro keeps the record that shows you fixed them.
Standard
One site, up to 100 pages. For when you need to know what is broken.
| Feature | |
|---|---|
| WCAG 2.2 scanning | 28 rules checked in PHP: images, links, forms, headings, colour, tables, structure, and cells or links whose whole announced name is a symbol, a tick or a cross or an arrow standing in for a word. Comparison tables are full of that one. |
| Any element type | Entries, categories, Craft Commerce products, and any custom element with a public URL. |
| Pages with no element behind them | Search results, filtered listings, paginated archives. Craft routes plenty of pages it does not back with an entry, and a scanner that works off elements never sees them. List them in settings and they are scanned like everything else, with their own report. |
| Checks that read the source | Every other checker works from the parsed page, where the browser has already tidied the evidence away. Two of these read the HTML you actually sent. Wrapping a rich-text field in a styled paragraph closes that paragraph the moment it meets the first block inside, and your classes go with it. An unescaped tag in a code sample renders instead of showing, and one that is not void takes the rest of the page with it, while the page still returns 200 and looks fine until somebody scrolls. No validator says a word about either, because the page that comes out is perfectly valid. |
| axe-core browser checks | Contrast, focus visibility and target size, tested on the rendered page rather than guessed from source. Each finding says why that element failed. A touch target can be too small, or big enough but sitting too close to its neighbours, or covered by something else. Those are three different jobs and the report tells them apart. |
| Hover, focus and selection contrast | Every checker reads the rendered page, and a rendered page is always at rest, so a hover colour that fails, a focus colour that fails, or a selection nobody can read has never once shown up in an audit. These are read out of the stylesheet instead and measured against the background the element actually sits on. Each state is its own rule, so you can ignore them separately. |
| Two viewports | Every page measured at desktop and phone width. A decoration that clears the text on a wide screen but sits behind it on a narrow one gets caught, and the row says which width it came from. |
| Conformance scoring | Scores against WCAG A, AA or AAA, with EN 301 549 support. That is the standard the EAA references. |
| Dashboard and history | A site-wide score with a 30-day history chart, so a regression shows up the week it lands. While a sweep is still running the Overview says so, rather than reporting on the pages done so far with the confidence of a finished scan. |
| Issue reports | Issues grouped by rule and by page, ordered by impact on the score, tagged with difficulty and responsibility. |
| Page inspector | Every occurrence highlighted in a live preview and in the page source, with colour-blindness and low-vision filters so you can see what a user actually gets. |
| Element sidebar | Latest score, issues by rule and a re-scan button on every element, right where the editing happens. |
| Human-review checks | Nine manual WCAG checks, asked as questions rather than guessed at. Answer them one at a time or tick a page's worth and rule on the lot in one go. Answers persist through re-scans, so nothing you have settled comes back to be settled again. |
| AI alt text | Claude drafts alt text for images, using your own Anthropic API key. No key, no calls, nothing leaves the install. |
| Asset audit | Flags missing alt text, filename-as-alt and text too short to be useful, across the image library. Decorative images can be marked and skipped. |
| Colour tools | Contrast analyser, colour-blindness simulator and a palette contrast grid. |
| Accessibility statement | Generates the public statement required in the EU and UK, built to your jurisdiction's model, with the compliance claim held to what your evidence actually supports. |
| Scan control | Queue-based background scanning, scan on save, scheduled sweeps, and exclusions by URI pattern, CSS selector, asset volume or element type. Consent banners are excluded out of the box. An address that redirects is filed under the page it lands on rather than counted twice, so a section landing page does not double your findings or your page count. |
Standard limits: up to 100 pages, primary site only, 30 days of history.
Pro (adds)
For when somebody else is going to ask. A client, a procurement team, a regulator.
| Feature | |
|---|---|
| Unlimited pages | Removes the 100-page cap, so the audit covers the whole site rather than a sample. The deep pages nobody checks are usually the worst. |
| Multi-site | Scans and reports on every site in the install. |
| Unlimited history | Retains scan history for as long as you choose. Compliance is a record, and records need to go back further than 30 days. |
| Resolved-issue record | A permanent, dated log of fixed issues. This is the document you produce when somebody asks what you have done since June 2025. |
| Server-side browser scanning | Point it at a Chrome binary and every queued scan runs the full axe checks at desktop and mobile widths, so nobody has to visit a page for it to be tested properly. |
| Readability analysis | Flesch-Kincaid reading ease and grade level, measured against WCAG 3.1.5, with plain-language rewrite suggestions. |
| VPAT / ACR report | The conformance report procurement teams ask for. Every criterion shows what the scans covered, over how many pages, and plainly what no scanner can establish, so you can sign off a manual row in seconds instead of going and working out what has already been tested. AI drafts the remarks from real findings. Exported print-ready or through your own template. |
| Notifications | Email and Slack alerts for new errors and score drops, so you hear about it before the client does. |
| CI/CD endpoint | A token-authenticated score endpoint, so a build pipeline can gate a deploy on your accessibility score. |
| Decoupled frontend overlay | Runs the admin overlay on headless and heavily cached frontends, Next, Nuxt, Astro or static, from a single script tag. |
No criterion in the VPAT is ever marked "Supports" by the scanner. Not one of them is settled end to end by automated testing, and a conformance report is a public claim about your site. Five of them used to fill themselves in, and every one turned out to have a gap. A page can carry a title without the title describing the page. lang="en" passes on a page written in Irish. Contrast is measured on computed colour, and text drawn inside an image has none. So the scan is shown to you as evidence and the answer stays yours.
To install this plugin, copy the command above to your terminal.
This plugin doesn't have any reviews.










