Skip to content
Phase 1 complete — CLI scanner ready

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.

Terminal
$ a11yscan example.com
Checking for sitemap at https://example.com/sitemap.xml... found
Fetching sitemap... 1,860 URLs found
Scanning 1,860 pages (concurrency: 5)...
Scan complete.
Pages scanned: 1,860
Total violations: 4,200
Patterns found: 12
Reports saved to ./reports/example.com/
View HTML report in browser? (y/N) y

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.

Traditional scanners
4,200
violations found

Not actionable. You can't tell if there are 4,200 unique problems or 5 repeated patterns. Developers give up before they start.

a11yscan
12
patterns identified

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.

1

Point

Give a11yscan a URL. It finds the sitemap, fetches every page, and runs axe-core in a headless browser.

2

Analyze

Violations are grouped by root cause. Duplicate findings across hundreds of pages collapse into a single pattern.

3

Fix

Get CSV, JSON, and HTML reports. Each pattern links to a fix guide. Feed the JSON to an LLM for automated code fixes.

LLM-ready reports

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
aria-report.json
{
  "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?

State agency webmaster

"SiteImprove told us we had 4,200 violations. a11yscan showed us it was actually 15 patterns. We fixed all 15 in two sprints."

University web team

"We run a11yscan --filter /admissions before every release. It catches ARIA issues before they multiply across 200 pages."

DevOps engineer

"We use --ci mode in GitHub Actions. If the scan finds violations, the build fails with a machine-readable JSON summary."

Freelance developer

"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
</> a11yscan

Pattern-aware accessibility auditor. Groups thousands of violations into actionable patterns for ARIA roles, accessible names, and color contrast.

MIT License. Built with Nuxt, Playwright, and axe-core.

v1.5.0|Changelog|Illinois Criminal Justice Information Authority