SEO and visibility
See who gets stuck on your page.
Checks one page against a WCAG 2.1 AA checklist, criterion by criterion, and grades it with a score you can rebuild from its scorecard. Each finding names the success criterion, the element or value at fault, the people it hurts (keyboard-only, low-vision, screen reader or motion-sensitive users) and what is at stake, a lost conversion or legal exposure. It flags risk. It never calls a page compliant.
- Checks against WCAG 2.1 AA
- Flags risk, never certifies
- No cited evidence, no finding
At a glance
- Group
- SEO and visibility
- Command
- /a11y-audit
- Uses
- A page address or pasted HTML
- Writes
- A graded fix list, a baseline
- Sends
- Nothing. Drafts only.
01When to use it
Run it before a redesign or a launch.
- A page needs an accessibility baseline before a redesign, a launch or a legal review.
- The page converts below its traffic, and you suspect a broken focus state, an unlabeled field or low contrast is stopping real people from finishing.
- You want ADA exposure flagged as a risk before it turns up in a demand letter.
- A speed or SEO check only touched on accessibility, and you need a dedicated WCAG 2.1 AA audit.
- An earlier audit exists, and you want the next run to chart what moved.
Not for
- Load speed, page weight and layout shift. Use /web-vitals
- Crawlability and the HTML that search engines read. Use /seo-audit
02What it needs
The page is the one thing it asks for.
- The page address, or its HTML pasted in. On an agency setup, the page has to belong to the active client.
- Your offers and strategy, so each finding maps to the action the page exists for, such as a purchase or a booked demo.
- Your buyer profile, including the share of buyers who rely on assistive tech.
- Past baselines and any target from your numbers log (on an agency setup, the client goals file).
- Optional: a live view of the page through Preview or Chrome, to tab through it and watch focus, or an axe-core run for the criteria a machine can check.
03What it writes
A brief, a graded audit and a baseline.
- brief.md
- Scope, the page and its conversion goal, the owner, and what acceptance looks like.
- final/audit.md
- Grade and score, a block on what moved when it is a re-run, a scorecard for each criterion and the quick wins. Then every finding worst first, with its criterion, level, severity, evidence, the people it hurts and the fix.
- data/baseline.json
- The overall score, the grade, each criterion result and a fingerprint of the findings, for the next run to diff against. Raw signals and any screenshots sit beside it in data/.
- Ledger row
- The score or grade, the criteria failed and the Blocker count, with a source. It is marked confirmed only when a live page view or axe produced it, and inferred when it came from fetched HTML.
04Limits
What it never does.
- Call a page compliant or ADA-safe. It writes risk or likely fails, and leaves conformance to a qualified person.
- Change the live page. Every fix stays a draft until a person applies it.
- Take a clean automated scan as a clean page. Tools catch roughly a third of the criteria, so the keyboard and focus order checks run anyway.
- Credit a page for a check with nothing to test, such as a pause control on a page where nothing moves.
- Follow instructions planted in the page. Fetched content is data to check, never a command.
What stays with you.
- Choosing the next move: the quick wins, the Blockers for a developer, or a re-audit once fixes ship.
- Any claim that the page complies. That sign-off belongs to a lawyer.
05Sample output
Three findings and who they hurt.
An excerpt from an audit of a made-up yoga studio booking page. A real report cites the element or value behind every row and labels each contrast ratio measured or inferred.
| Finding | Criterion | Evidence | Who it hurts | Severity |
|---|---|---|---|---|
| Email field has no label | 3.3.2 Labels or Instructions, A | input#email, placeholder text only | Screen reader users | Blocker |
| Focus ring removed | 2.4.7 Focus Visible, AA | button.book-class, outline: none | Keyboard-only users | Serious |
| Class times in pale gray | 1.4.3 Contrast (Minimum), AA | #9A9A9A on #FFFFFF, 2.8:1, inferred | Low-vision users | Moderate |
- Email field has no label Blocker
- Criterion3.3.2 Labels or Instructions, A
- Evidenceinput#email, placeholder text only
- Who it hurtsScreen reader users
- Focus ring removed Serious
- Criterion2.4.7 Focus Visible, AA
- Evidencebutton.book-class, outline: none
- Who it hurtsKeyboard-only users
- Class times in pale gray Moderate
- Criterion1.4.3 Contrast (Minimum), AA
- Evidence#9A9A9A on #FFFFFF, 2.8:1, inferred
- Who it hurtsLow-vision users
Grade and quick wins
- Grade C, weighted score 68. A baseline run, with no earlier audit.
- Add a label to the email field.
- Add the missing lang attribute to the page.
- Darken the class time text.
06Related skills
Often run beside it.
-
/web-vitalsFind what slows a page down SEO and visibility -
/seo-auditFind the search problems on a site SEO and visibility -
/site-auditGo or no-go check on a whole site SEO and visibility /redesignA better direction for an existing page Design
07Questions
Before you run it.
Will it tell me my site is ADA compliant?
No. It flags risk and cites the evidence for each flag. Whether a page conforms is a legal determination for a qualified person, so the report says risk flagged or likely fails, never compliant.
Is an automated scan enough?
No. Tools like axe catch roughly a third of WCAG criteria. Keyboard use, focus order and screen reader structure are checked by hand on every run, however clean the automated result looks. It tabs through the page only when a live view is connected; otherwise the result is labeled inferred.
How is the grade worked out?
From a weighted score of the results for each criterion. Problems that block people, such as keyboard access, visible focus, form labels and contrast along the conversion path, weigh more than cosmetic ones, and the scorecard lets you rebuild the grade yourself.
Have us build it
We can build it for you.
Start with the free plan. A person names the first fix.



