WCAG · ADA · accessibility scanner
Accessibility Checker
A URL in, the objective WCAG 2.2 issues out — a free, honest accessibility scanner for site owners, agencies, developers and AI agents. Each finding is mapped to its Success Criterion with a fix. No account, no API key.
Swap the url= for your own page. Prefer the command line or an
agent? See calling it over HTTP and the
MCP server below.
What it does
- 01
The objective WCAG issues, mapped and explained
Give it a URL; it returns the accessibility problems a static-HTML scan can find — missing alt text, unlabeled form fields, missing page language or title, broken heading order, empty links and buttons, zoom-blocking viewports, untitled iframes, and more — each mapped to its WCAG 2.2 Success Criterion with a plain how-to-fix. No account, no API key.
- 02
Honest about what it cannot catch
Automated testing finds only the objective subset of WCAG — roughly 30–57%. Color contrast, keyboard operation, focus order, screen-reader behaviour, JavaScript-rendered content and whether content actually makes sense all need a real browser, assistive technology and a human. Every result says so, and a clean scan is explicitly NOT a determination of conformance or legal compliance. We never claim otherwise — the "instant compliance" overlay widgets that do have drawn lawsuits and an FTC fine.
- 03
Polite by design, and agent-native
It honors the origin's robots.txt for our user-agent, identifies honestly, and does a single read-only GET — it never spoofs a browser, rotates proxies, or bypasses anti-bot, CAPTCHA or paywalls. Beyond plain HTTP it speaks the Model Context Protocol, so an MCP-capable agent can install scan_url_accessibility as a native tool.
Why "honest" matters here
Accessibility overlay widgets promise one-line "compliance." Courts have rejected that promise — sites running overlays are still sued — and in 2025 the FTC fined a major overlay vendor for claiming its tool could make any site WCAG-compliant. Automated testing is genuinely useful, but only for the part it can measure. This checker draws that line out loud:
- It reports the objective issues it finds, each tied to a WCAG Success Criterion.
- It states, on every scan, what automated testing cannot evaluate — colour contrast, keyboard and focus, dynamic content, meaning.
- It never returns a "compliant" verdict or a pass/fail score. A clean scan is a starting point, not a certificate.
- It is not legal advice; a full WCAG 2.2 AA audit needs manual and assistive-technology review by a person.
What it checks
The static-HTML subset — the objective, render-independent issues:
- Image alt text 1.1.1 Images with no alt attribute.
- Form labels 1.3.1 / 4.1.2 Inputs, selects and textareas with no associated label or aria-label.
- Page language 3.1.1 A missing or empty <html lang> attribute.
- Document title 2.4.2 A missing or empty <title>.
- Heading order 1.3.1 / 2.4.6 No <h1>, or heading levels that skip (e.g. h1 → h3).
- Link text 2.4.4 / 4.1.2 Links with no discernible text.
- Button name 4.1.2 Buttons with no accessible name.
- Tab order 2.4.3 Positive tabindex values that force an unnatural focus order.
- Zoom 1.4.4 / 1.4.10 A viewport meta tag that blocks or limits pinch-zoom.
- Iframe titles 4.1.2 Embedded frames with no title.
- Auto-refresh 2.2.1 / 2.2.4 A timed <meta http-equiv="refresh"> that can disorient users.
- Duplicate ids — Repeated id values that break label and ARIA references.
It does not evaluate colour contrast, keyboard or focus behaviour, or JavaScript-rendered content — those need a real browser and a human. A deeper, browser-based scan is on the roadmap.
Call it over HTTP
A plain GET from anything that speaks HTTP.
1 · Scan a page
curl 'https://a11y-scan.foomworks.workers.dev/scan?url=https://example.com/'
You get JSON: the resolved url, a summary (counts by
impact), the findings (each with its ruleId, WCAG
criterion, impact, count and howToFix), the
coverageNote and the disclaimer.
2 · Just the summary
curl 'https://a11y-scan.foomworks.workers.dev/scan/preview?url=https://example.com/' The summary plus the top issues — a quick gauge before the full report.
Install it as an MCP server
The checker speaks the Model Context Protocol over Streamable
HTTP at POST /mcp, exposing two free tools —
scan_url_accessibility and scan_url_accessibility_preview.
Point an MCP-capable client at the endpoint and the tools appear automatically:
# List the tools the server offers
curl -s -X POST https://a11y-scan.foomworks.workers.dev/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
The descriptor is at
/.well-known/mcp.json
and an OpenAPI description at
/openapi.json.
Endpoints
All free — no account, no API key:
-
GET /scan?url=free Scan a URL and return the WCAG findings, an honest summary, the coverage note and the disclaimer. -
GET /scan/preview?url=free The summary and top issues only — a quick look. -
POST /mcpfree MCP server (Streamable HTTP, JSON-RPC 2.0): the scan_url_accessibility / scan_url_accessibility_preview tools. -
GET /.well-known/mcp.jsonfree MCP server descriptor for automatic discovery. -
GET /openapi.jsonfree OpenAPI 3.1 description of the public surface. -
GET /policyfree The acceptable-use policy and the honesty/coverage statement, in full. -
GET /healthfree Service status and the number of rules checked. -
GET /statsfree Daily usage counters.
Live
Try it now
Everything above is free and needs no setup — run a scan on your own page, or install the MCP server and let an agent check pages for you.
New to WCAG? Start with the WCAG 2.2 AA checklist, or read how to fix missing alt text.
Accessibility Checker is built and maintained by an autonomously operated software workshop under human oversight. It performs automated static-HTML testing, which covers only part of WCAG; results are not a determination of conformance or legal compliance and are not legal advice. It reads only public pages you are entitled to read, honoring each site's robots.txt. Provided as-is. No affiliation with, or endorsement by, the W3C or any site you scan is implied.