ScanA11y

Accessibility,audited. Proofattached.

Site, Figma file, screenshot, PDF, Android or iOS build: you get the element that failed, the criterion it breaks, and the fix.

evidence / page 1 of 5serious
1.4.3Contrast (Minimum)AA
2.94:1measured4.5:1 required

Foreground #9aa0a6 on #ffffff. Darkening to #6b7075 reaches 4.83:1.

One finding, as the workbench renders it.

Start an audit

Five a day without an account. Everything deletes itself in 24 hours.

Recent audits

Loading...
01

What comes back

Evidence, not a rule name
The crop from the scan, the criterion (1.4.3 Contrast (Minimum), AA), the measured ratio against the one required, and the fix. No crop beats a wrong crop.
A matrix across all 87 criteria
Passed, failed, needs review, not tested. Nothing untested is ever reported as passed.
A 16:9 PDF, a VPAT 2.5, a maturity score
One finding per printed page with its screenshot, scored across governance, design, dev, QA and ops.

compliance matrix / 87 criteria

  • passed automated checks
  • failed, evidence attached
  • needs a human
  • not tested, and says so
02

Six ways in

URL

A live site

Crawls up to 5 pages: axe-core 4.13, keyboard order, reflow at 375 and 768, evidence crops.

FIG

A Figma file

Frames over the REST API: contrast pairs, touch targets, images with no description. Connect an account or paste a link.

IMG

A UI screenshot

Element detection first, then vision-model suggestions that stay advisory.

PDF

A PDF document

PDF/UA structure up to 25MB: tags, reading order, language, alt text, and scans posing as documents.

APK

An Android package

aapt2 manifest analysis, plus live checks for labels, target size and contrast when an emulator is running.

IPA

An iOS bundle

Info.plist and asset inspection, plus a guided VoiceOver checklist for the dynamic half.

03

One place to work through it

Three modes over one audit: the page on one side, the WCAG 2.2 checklist on the other.

Checklist
Every criterion by principle, with findings, evidence and verdict, filterable to what each module covered.
Inspect
Click any element for its contrast, target size and accessible name; simulate colour vision deficiency, larger text, reduced motion.
Screen reader
A transcript built from the accessibility tree, read aloud in the browser, nothing to install.
04

How it compares

Same axe-core engine as axe DevTools, Lighthouse and Accessibility Insights. What changes is how many tools you need around it.

ScanA11y compared with common accessibility testing tools, by type, cost and coverage.
ToolTypeCostCoverage
ScanA11yAutomated plus guided manualFree, open source (MIT)URL, Figma, screenshot, PDF, APK, IPA
axe DevTools (Deque)Browser extension, paid platformFree extension, Pro from ~$1,140/seat/yrURL only, same axe-core engine
WAVE (WebAIM)Browser extension, APIFree extension, paid APIURL only, visual overlay
Google LighthouseBuilt into Chrome DevToolsFreeURL only, automated checks
JAWSScreen reader, manual testing~$95/yr to $1,000 one-timeManual only, Windows
NVDAScreen reader, manual testingFreeManual only, Windows
Level Access, Deque platformEnterprise SaaS suite$500 to $8,000/seat/yrAutomated plus manual, usually one input type

Published list prices, which move; the column that matters is coverage.

05

What it will not do

Automated testing cannot certify conformance.
It catches a subset. The rest becomes a guided checklist for a human, never a silent pass.
Vision models never create a finding.
They suggest, into needs review, labelled advisory. Contrast is deterministic colour maths.
iOS dynamic testing needs macOS.
Nothing on Windows or Linux can drive the iOS Simulator. You get static bundle analysis and a Mac checklist.
Sites behind a bot wall will not scan.
The challenge page is reported as blocked, with the reason, not as a clean pass.
06

Read the code

MIT licensed, with every engine in the audit path open source. Disagree with a finding and you can read the check that produced it.

A personal portfolio project, not affiliated with any employer. Built on Next.js, Supabase, Inngest, Playwright and axe-core.