accessalyze
v1.2.1
Published
AI-powered WCAG 2.1 AA accessibility scanner — free CLI + $19 full report
Downloads
466
Maintainers
Readme
accessalyze
AI-powered WCAG 2.1 AA accessibility scanner — scan any public URL from the command line or your Node.js application.
Quick start (CLI)
No install needed — use npx:
npx accessalyze scan https://example.comSample output:
Scanning https://example.com …
URL: https://example.com/
Score: 74 (Needs Work) (WCAG AA)
Scanned: 2026-04-24T14:00:00.000Z
Violations:
Critical 2
Serious 4
Moderate 7
Minor 3
Total 16
Top Issues:
1. [critical] color-contrast — Elements must have sufficient color contrast
8 element(s) WCAG: wcag1.4.3
2. [serious] image-alt — Images must have alternate text
3 element(s) WCAG: wcag1.1.1
...
Powered by Accessalyze · https://accessalyze.comCI/CD integration (--json flag)
Use --json to get machine-readable output and a non-zero exit code when the score is below 90:
npx accessalyze scan https://example.com --json{
"url": "https://example.com/",
"score": 74,
"violationCount": 16,
"summary": {
"critical": 2,
"serious": 4,
"moderate": 7,
"minor": 3,
"total": 16
},
"violations": [...],
"wcagLevel": "AA",
"scannedAt": "2026-04-24T14:00:00.000Z",
"poweredBy": "Accessalyze"
}GitHub Actions example:
- name: Accessibility scan
run: npx accessalyze scan https://staging.example.com --jsonThe step fails automatically if the accessibility score is below 90.
Node.js SDK
npm install accessalyzeconst { scan } = require('accessalyze');
async function main() {
const result = await scan('https://example.com');
console.log(`Score: ${result.score}/100`);
console.log(`Total violations: ${result.summary.total}`);
result.violations.forEach((v) => {
console.log(`[${v.impact}] ${v.id}: ${v.description} (${v.count} elements)`);
});
}
main().catch(console.error);TypeScript types (inline JSDoc)
interface ScanResult {
url: string;
score: number; // 0–100
violationCount: number;
summary: {
critical: number;
serious: number;
moderate: number;
minor: number;
total: number;
};
violations: Array<{
id: string;
impact: 'critical' | 'serious' | 'moderate' | 'minor';
description: string;
count: number;
wcagTags: string[];
}>;
wcagLevel: string; // "AA"
scannedAt: string; // ISO 8601
poweredBy: string;
}API
scan(url: string): Promise<ScanResult>
Calls the Accessalyze public API and resolves with a structured result.
| Parameter | Type | Description |
|-----------|--------|------------------------------------------|
| url | string | Full URL or bare domain to scan |
Rejects with an Error if:
- The URL is invalid or unreachable
- The request times out (30 s)
- The API returns an error
Pricing & limits
The public API is free with a rate limit of 100 scans / day per IP. For higher volume, team dashboards, and AI remediation guidance visit accessalyze.com.
License
MIT © Accessalyze
