scana11y
v0.1.1
Published
A fast, zero-config CLI tool for detecting accessibility (a11y) violations in HTML, JSX, TSX, and Vue files
Maintainers
Readme
scana11y
Like git status for accessibility. Run scana11y . and see which files need fixing.
Install
npm install -g scana11ynpx scana11y .Usage
scana11y . # scan current directory
scana11y ./src # scan a specific folder
scana11y ./src/Button.jsx # scan a single fileOutput
Scanning 6 files...
src/components/Navbar.jsx
❌ line 14 img missing alt attribute [critical]
❌ line 27 button has no accessible name [critical]
src/pages/Home.jsx
⚠️ line 8 heading order skipped (h1 → h3) [moderate]
public/index.html
❌ line 3 <html> missing lang attribute [serious]
✅ src/components/Button.jsx
✅ src/pages/About.jsx
✅ public/404.html
─────────────────────────────────────────────────────────
3 critical · 1 serious · 1 moderate · 0 minor
5 issues across 3 filesWhen everything is clean:
Scanning 3 files...
✅ src/components/Button.jsx
✅ src/pages/About.jsx
✅ public/404.html
─────────────────────────────────────────────────────────
0 critical · 0 serious · 0 moderate · 0 minor
✅ All clear. No accessibility issues found.Flags
| Flag | Description |
|------|-------------|
| --format json | Output as JSON instead of terminal display |
| --ignore <rule> | Ignore a rule by name (repeatable) |
| --quiet | Show summary only, no per-file details |
| --version | Show version number |
Config
Create a .scana11yrc file in your project root:
{
"ignore": ["color-contrast", "label"],
"ignoreFiles": ["src/legacy/**", "**/*.stories.jsx"]
}CI
- name: Check accessibility
run: npx scana11y ./srcExits with code 1 if any violations are found, 0 if clean.
License
© 2026 Emmanuel Oyeyipo
