npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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

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.

npm version License: MIT Node.js

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 --json

Requires 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.com

Or use the dedicated action with PR comments:

- uses: ryuno2525/accessscore-action@v1
  with:
    url: https://your-site.com
    threshold: 70

npm Scripts

{
  "scripts": {
    "a11y": "accessscore https://your-site.com",
    "a11y:staging": "accessscore https://staging.your-site.com"
  }
}

Accessibility Badge

Show your score in your README:

![AccessScore](https://accessscore.autonomous-claude.com/api/badge?url=https://your-site.com)

AccessScore

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

Links