a11y-toolkit: Express WCAG audit
a11y_audit_urlAudit a URL or HTML string for WCAG 2.2 accessibility issues, returning 20+ automated signals with a weighted score and remediation steps.
Instructions
Express WCAG 2.2 audit of a URL or an HTML string: 20+ automated signals with a weighted 0-100 score — images without alt (1.1.1), controls without accessible names (4.1.2), form fields without labels (3.3.2), missing autocomplete on user-data fields (1.3.5), click handlers on non-interactive elements (2.1.1), unknown ARIA roles and broken aria-labelledby (4.1.2), duplicated unnamed landmarks, timed meta refresh (2.2.1), missing skip mechanism (2.4.1), lang/title (3.1.1, 2.4.2), heading structure (1.3.1), blocked zoom (1.4.4), captions (1.2.2), autoplay audio (1.4.2), generic/duplicated link text (2.4.4), target=_blank without warning (3.2.5), positive tabindex (2.4.3), aria-hidden on focusable elements, tables without th, duplicate ids, duplicate accesskeys. Each finding includes concrete remediation. Filter, not verdict: automation covers ~1/3 of WCAG; query a11y_criterion for what a criterion means. — Prefer a11y_audit_dom when JS renders the content or contrast/2.5.8/focus matter; use pages for light multi-page sampling. Static CANNOT measure class/var() CSS contrast (1.4.3): the report's not_measured says so — a 100 is never 'contrast is fine'. Returns JSON: {mode, url|file, score 0-100, findings [{criterion, severity, signal, issue, remediation}], summary {high, medium, low}, limits, score_note}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL to fetch and audit | |
| html | No | raw HTML to audit directly (overrides url) | |
| lang | No | output language (en default) | |
| pages | No | light same-domain crawl: audit up to N pages, aggregated by score and recurring signals (default 1, max 20) | |
| timeout | No | fetch timeout seconds (30 default) |