johnhenry / craft-accessibility-audit
WCAG 2.2 accessibility audits for Craft CMS 5: scan every page, fix what fails, and keep the record, statement and VPAT to show for it.
Package info
github.com/john-henry/craft-accessibility-audit
Type:craft-plugin
pkg:composer/johnhenry/craft-accessibility-audit
Requires
- php: ^8.2 || ^8.3 || ^8.4
- chrome-php/chrome: ^1.16
- craftcms/cms: ^5.0
- johnhenry/craft-ip-guard: ^1.3
Requires (Dev)
- craftcms/commerce: ^5.0
- craftcms/ecs: dev-main
- craftcms/phpstan: dev-main
- phpstan/phpstan: ^2.2
Suggests
- putyourlightson/craft-blitz: Keeps the admin-only accessibility overlay out of Blitz's page cache.
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-05 18:04:11 UTC
README
Accessibility Audit for Craft CMS
When a client, a procurement team or a regulator asks whether the site meets WCAG, this is how you find out from inside Craft. It scans every page for WCAG 2.2 failures, tells you which fixes lift the score most, asks you the questions no scanner can answer, and keeps a dated record, statement and VPAT to show for it.
Features
- Contrast in hover, focus and selection states: every other 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 colour nobody can read has never turned up in an automated audit. This one reads them out of your stylesheet and measures them against the background the element actually sits on
- 25+ WCAG 2.2 rules: the PHP scanner checks images, links, forms, headings, colour usage, tables, and more
- axe-core overlay: runs on the live site for admins, catching contrast, focus visibility, and target size issues that only show up once the page is actually rendered
- 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
- Potential issues: 9 checks that need a human review, phrased as questions (e.g. "Is this image alt text descriptive enough?"), including contrast that axe-core couldn't measure because the text sits over an image. Answer once and the answer sticks through re-scans
- Any element type: entries, categories, Craft Commerce products, and any custom element with a public URL
- Queue-based background scanning and scan on save, so reports keep themselves up to date
- Score and history: a site-wide score tracked over time, issues grouped by rule with difficulty and responsibility metadata, and a list of every affected page
- Page report: every occurrence highlighted in a live preview of the page and in its source, with colour-blindness and low-vision filters to see what a user actually gets
- Sidebar panel on every element: latest score, issues grouped by rule, and a re-scan button, right where the editing happens
- AI alt text: Claude Haiku writes alt text for your images, with a full-library audit of what is missing, filename-as-alt, or too short
- Readability: Flesch-Kincaid reading ease and grade level against WCAG 3.1.5, with plain-language rewrite suggestions
- Colour tools: contrast analyser, colour blindness simulator, and a contrast grid for checking a whole palette at once
- Accessibility statement: the public statement the EU and UK legally require, built to your jurisdiction's model, with the compliance claim held to what your evidence actually supports
- VPAT / ACR: the conformance report procurement teams ask for, pre-filled from your scan data, exported as a print-ready document or through your own template
- EN 301 549: report against the European standard alongside WCAG
- Email and Slack alerts when a new error lands or a score drops
- CI/CD endpoint so a build pipeline can gate a deploy on your accessibility score
Some of the above is Pro only. See Editions for the split.
Documentation
Full documentation is at johnhenry.ie/plugins/accessibility-audit/docs.
Requirements
- Craft CMS 5.0 or later
- PHP 8.2 or later
Accessibility
How accessible the plugin is, what's been checked, and how to report a problem are all in the accessibility statement.
Support
Need a hand? Open an issue on the GitHub Issues page.
License
Proprietary. Copyright (c) 2026 John Henry Donovan.