Pa11y
Command-line accessibility testing tool — runs axe and HTML CodeSniffer rules against URLs.
Pricing
Free / Open source
Type
Automation
Languages
JavaScript
// VERDICT
Reach for Pa11y when you want to scan whole pages or a sitemap for accessibility issues from the command line and gate CI with pa11y-ci, no test code required. Skip it when you want an embeddable engine in your tests (axe-core), a visual checker (WAVE), or manual testing.
Best for
A CLI-first accessibility scanner built for CI - point it at URLs or a sitemap and it reports WCAG issues, with pa11y-ci to fail the build, all without writing test code.
Avoid when
You want to embed checks in your own test code (axe-core), a visual in-browser checker (WAVE), or manual assistive-tech testing.
CI/CD fit
pa11y CLI · pa11y-ci (URLs/sitemap) · GitHub Actions · GitLab CI · Jenkins
Languages
JavaScript
Team fit
Teams wanting no-code a11y scans · QA adding a11y to CI · Site-wide accessibility checks
Setup
Maintenance
Learning
Licence
// BEST FOR
- Scanning pages for accessibility issues from the command line
- Testing a whole site via a URL list or sitemap (pa11y-ci)
- Failing CI builds on accessibility issues without writing tests
- A quick way to add a11y coverage to a pipeline
- Running engines like axe / HTML_CodeSniffer under one CLI
- Dashboards and a webservice via the wider Pa11y ecosystem
// AVOID WHEN
- You want checks embedded in your own test code (axe-core)
- You want a visual in-browser checker for manual review (WAVE)
- You need manual screen-reader / assistive-tech testing
- You want a broader audit beyond accessibility (Lighthouse)
- You expect automation to cover all of WCAG (it covers a subset)
- You need a hosted enterprise monitoring platform
// QUICK START
npm install -g pa11y
pa11y https://example.com
# or pa11y-ci with a .pa11yci config listing URLs / a sitemap, in CI// ALTERNATIVES TO CONSIDER
| Tool | Choose it when |
|---|---|
| axe-core | You want to embed accessibility checks inside your own test code. |
| Lighthouse | You want a combined a11y + performance + SEO audit. |
| WAVE | You want a visual in-browser checker for manual evaluation. |
// FEATURES
- CLI for one-off URL audits
- Pa11y CI for budgeted regression runs
- Pa11y Dashboard for tracking issues over time
- Pluggable runners (axe, HTML CodeSniffer)
- Headless Chrome via Puppeteer
- JSON, CSV, and HTML reporters
// PROS
- Simple CLI — `pa11y https://example.com` and you're done
- Pa11y CI integrates with budgets per page
- Combines multiple a11y engines in one tool
// CONS
- Smaller community than axe-core directly
- Dashboard project less actively maintained
- Dynamic SPA flows require custom actions config
// EXAMPLE QA WORKFLOW
Install Pa11y (npm)
Run pa11y against a URL, or configure pa11y-ci with URLs/a sitemap
Choose the standard (e.g. WCAG2AA)
Review reported issues and tune ignore rules
Run pa11y-ci in the pipeline and fail on threshold
Pair with embedded axe checks and manual testing
// RELATED QA.CODES RESOURCES
Cheat sheets
Practice