accessscore
v1.7.0
Published
ADA & WCAG website accessibility checker. Scan any URL for accessibility issues, get a compliance score, legal risk assessment, and actionable fixes.
Downloads
769
Maintainers
Readme
AccessScore
Free, open-source ADA & WCAG accessibility compliance checker for any website.
Scan any URL from the command line and get an accessibility score, legal risk assessment, and fix code for every issue found. 100% free — all issues, all fix code, no paywalls. No browser required.
Why AccessScore?
- 4,000+ ADA lawsuits were filed in 2024 alone targeting inaccessible websites
- Average settlement cost: $25,000 - $75,000 for small businesses
- 96.3% of home pages have detectable WCAG failures (WebAIM Million 2024)
- Fixing accessibility issues early is 10x cheaper than remediating after a lawsuit
AccessScore gives you a fast, completely free scan with fix code for every issue so you know where you stand before a plaintiff's attorney does.
Quick Start
# Run directly (no install needed)
npx accessscore https://your-site.com
# JSON output for CI/CD
npx accessscore https://your-site.com --jsonRequires Node.js 18+ (uses built-in fetch).
What You Get (100% Free)
- Full scan across 12 WCAG checks
- Score, grade, and legal risk assessment
- Fix code for every issue found (copy-paste ready)
- WCAG criterion mapping for each fix
- Priority-ordered remediation plan
Need a Professional Audit Report?
For teams that need a branded, client-ready PDF report with executive summary, detailed remediation roadmap, and compliance documentation, check out the $29.99 Professional Audit Report.
Output Example
AccessScore Report
==================
URL: https://craigslist.org
Score: 71/100 (C)
Risk: MODERATE — Estimated lawsuit exposure: $10,000 - $50,000
Issues Found: 5
────────────────────────────────────────────────────────
1. CRITICAL: 1 link without accessible text
WCAG 2.4.4 Link Purpose (Level A)
FIX: Add accessible text to all links (visible text, aria-label, or img alt).
| <!-- Before (icon-only link, no text) -->
| <a href="/cart"><svg>...</svg></a>
|
| <!-- After -->
| <a href="/cart" aria-label="Shopping cart"><svg>...</svg></a>
2. SERIOUS: Page missing lang attribute on <html> element
WCAG 3.1.1 Language of Page (Level A)
FIX: Add a lang attribute to the <html> element.
| <!-- Before -->
| <html>
|
| <!-- After -->
| <html lang="en">
3. SERIOUS: 1 form input missing associated labels
WCAG 1.3.1 Info and Relationships (Level A)
FIX: Associate labels with every form input using <label for="id">.
| <!-- Before -->
| <input type="email" name="email">
|
| <!-- After -->
| <label for="email">Email address</label>
| <input type="email" id="email" name="email">
4. SERIOUS: Page missing skip navigation link
WCAG 2.4.1 Bypass Blocks (Level A)
FIX: Add a skip navigation link as the first child of <body>.
| <body>
| <a href="#main" class="skip-link">Skip to main content</a>
| ...
| <main id="main">...</main>
| </body>
5. MODERATE: Heading hierarchy skips: h1 to h4, h3 to h5
WCAG 1.3.1 Info and Relationships (Level A)
FIX: Use sequential heading levels without skipping (h1 → h2 → h3).
────────────────────────────────────────────────────────
Total: 6 issues found (1 critical, 3 serious, 2 moderate, 0 minor)JSON Output
npx accessscore https://example.com --json{
"url": "https://example.com",
"score": 94,
"grade": "A",
"risk": { "tier": "LOW", "exposure": "Minimal" },
"issues": [
{
"severity": "SERIOUS",
"message": "Page missing skip navigation link",
"wcag": "2.4.1 Bypass Blocks (Level A)",
"fix": "Add a skip navigation link as the first child of <body>."
}
],
"totalIssues": 2
}Exit Codes
0— Score >= 70 (pass)1— Score < 70 (fail)
Perfect for CI/CD pipelines — fail builds when accessibility degrades.
What It Checks
12 automated checks covering WCAG 2.1 Level A and AA:
| Check | WCAG | Severity |
|-------|------|----------|
| Images without alt text | 1.1.1 | Critical |
| Missing lang on <html> | 3.1.1 | Serious |
| Missing page <title> | 2.4.2 | Serious |
| Heading hierarchy skips | 1.3.1 | Moderate |
| Form inputs without labels | 1.3.1 | Serious |
| Missing meta viewport | 1.4.4 | Moderate |
| Links without accessible text | 2.4.4 | Critical |
| Missing skip navigation | 2.4.1 | Serious |
| Low contrast (inline styles) | 1.4.3 | Moderate |
| Missing ARIA landmarks | 1.3.1 | Minor |
| Tables without headers | 1.3.1 | Serious |
| Empty buttons | 4.1.2 | Critical |
CI/CD Integration
GitHub Actions
name: Accessibility Check
on: [push, pull_request]
jobs:
accessibility:
runs-on: ubuntu-latest
steps:
- name: Check accessibility
run: npx accessscore https://your-staging-site.comOr use the dedicated action with PR comments:
- uses: ryuno2525/accessscore-action@v1
with:
url: https://your-site.com
threshold: 70npm Scripts
{
"scripts": {
"a11y": "accessscore https://your-site.com",
"a11y:staging": "accessscore https://staging.your-site.com"
}
}Accessibility Badge
Show your score in your README:
Limitations
AccessScore performs static HTML analysis. It does not execute JavaScript (SPAs), test keyboard navigation, verify computed contrast ratios, or replace manual testing. Combine with user testing for full compliance.
License
MIT
