Fix 12 patterns,
not 4,200 violations
a11yscan groups accessibility violations by root cause — the combination of axe-core rule and CSS selector. One Vuetify component broken on 340 pages is one pattern, not 340 line items.
The problem with accessibility scanners
Enterprise tools like SiteImprove, WAVE, and Lighthouse report violations per page. A 500-page site with one broken component produces thousands of duplicate findings.
Not actionable. You can't tell if there are 4,200 unique problems or 5 repeated patterns. Developers give up before they start.
Each pattern shows what's broken, which component causes it, how many pages are affected, and a link to the fix guide. Fix 12 things, ship it.
Built for real audits
Everything you need to audit a multi-page site and turn the results into a remediation plan.
Pattern Grouping
Violations grouped by axe-core rule + CSS selector. One broken component = one pattern, regardless of how many pages it appears on.
Concurrent Scanning
Scans up to 5 pages in parallel with Playwright. A 500-page site takes minutes, not hours.
CSV + JSON + HTML Reports
Three output formats by default. The HTML report is self-contained and opens directly in your browser.
LLM-Ready JSON
Each pattern includes the HTML snippet, failure summary, and raw selector. Feed it to an LLM for automated fix suggestions.
Zero Config
Just give it a URL. a11yscan auto-discovers the sitemap, auto-prepends https://, and uses sensible defaults.
CI/CD Mode
Machine-readable JSON output, exit code 0 for clean or 1 for violations. Drop it into GitHub Actions in two lines.
Flexible Filtering
Scan specific sections with --filter, glob patterns with --filter-glob, or exclude paths. Combine them with AND logic.
SSRF Protection
Blocks scanning of localhost, private IPs, and non-HTTP protocols. Safe to run against untrusted sitemaps.
Root Cause Hints
Identifies which framework likely causes the violation — Vuetify, Nuxt, WordPress, Material UI, Shopify, and more.
How it works
Three steps from sitemap to remediation plan.
Point
Give a11yscan a URL. It finds the sitemap, fetches every page, and runs axe-core in a headless browser.
Analyze
Violations are grouped by root cause. Duplicate findings across hundreds of pages collapse into a single pattern.
Fix
Get CSV, JSON, and HTML reports. Each pattern links to a fix guide. Feed the JSON to an LLM for automated code fixes.
Feed the JSON to an LLM,
get fixes back
Every pattern includes the HTML snippet, failure summary, raw CSS selector, and fix guide URL. Give it to Claude, GPT, or any code-generation LLM and get actionable diffs.
- htmlSnippet— the exact DOM element that failed
- failureSummary— plain-English fix instructions from axe-core
- rawSelector— full CSS path to the element
- suggestedFix— link to Deque University fix guide
- rootCauseHint— which framework component is responsible
{ "patternId": "P001", "violationId": "aria-roles", "impact": "critical", "affectedPageCount": 340, "htmlSnippet": "<div class=\"v-autocomplete\" role=\"listbox\">", "failureSummary": "Role 'listbox' is not allowed", "rootCauseHint": "Likely Vuetify component", "suggestedFix": "https://dequeuniversity.com/..." }
Who is this for?
"SiteImprove told us we had 4,200 violations. a11yscan showed us it was actually 15 patterns. We fixed all 15 in two sprints."
"We run a11yscan --filter /admissions before every release. It catches ARIA issues before they multiply across 200 pages."
"We use --ci mode in GitHub Actions. If the scan finds violations, the build fails with a machine-readable JSON summary."
"The root cause hints told me which violations came from the theme vs. plugins. I gave the client a clear, prioritized fix list."
Ready to audit your site?
Install a11yscan, point it at your sitemap, and get a pattern-grouped report in minutes.
$ pnpm add -g a11yscan && a11yscan your-site.com