How the WCAG checker works
The checker parses your HTML with the browser's own parser, without running its scripts or loading anything it links to, and applies 40 rules. Each rule tests part of one or more WCAG 2.2 success criteria.
The rules
| Rule | Success criteria | Result |
|---|---|---|
| Page has no language | 3.1.1 Language of Page (A) | Failure |
| Page language is not a valid language tag | 3.1.1 Language of Page (A) | Failure |
| Language of a part is not a valid language tag | 3.1.2 Language of Parts (AA) | Failure |
| Page has no title | 2.4.2 Page Titled (A) | Failure |
| Image has no alt attribute | 1.1.1 Non-text Content (A) | Failure |
| Image alt text looks like a file name or placeholder | 1.1.1 Non-text Content (A) | Review |
| Image button has no text alternative | 1.1.1 Non-text Content (A); 4.1.2 Name, Role, Value (A) | Failure |
| Image map area has no text alternative | 1.1.1 Non-text Content (A); 2.4.4 Link Purpose (In Context) (A) | Failure |
| SVG marked as an image has no name | 1.1.1 Non-text Content (A) | Failure |
| Form field has no label | 4.1.2 Name, Role, Value (A); 3.3.2 Labels or Instructions (A) | Failure |
| Form field is labelled only by its placeholder | 3.3.2 Labels or Instructions (A) | Review |
| Select or text area has no label | 4.1.2 Name, Role, Value (A); 3.3.2 Labels or Instructions (A) | Failure |
| Button has no accessible name | 4.1.2 Name, Role, Value (A) | Failure |
| Link has no accessible name | 2.4.4 Link Purpose (In Context) (A); 4.1.2 Name, Role, Value (A) | Failure |
| Link text is generic | 2.4.4 Link Purpose (In Context) (A) | Review |
| Accessible name doesn't contain the visible label | 2.5.3 Label in Name (A) | Failure |
| Frame has no accessible name | 4.1.2 Name, Role, Value (A) | Failure |
| Unknown ARIA role | 4.1.2 Name, Role, Value (A) | Failure |
| Focusable element hidden from assistive technology | 4.1.2 Name, Role, Value (A) | Failure |
| Whole page hidden from assistive technology | 4.1.2 Name, Role, Value (A) | Failure |
| Label or ARIA reference points to a duplicated id | 4.1.2 Name, Role, Value (A); 1.3.1 Info and Relationships (A) | Failure |
| Label or ARIA reference points to an id that doesn't exist | 1.3.1 Info and Relationships (A); 4.1.2 Name, Role, Value (A) | Failure |
| Duplicate id | 4.1.2 Name, Role, Value (A) | Review |
| Zoom is disabled | 1.4.4 Resize Text (AA) | Failure |
| Page refreshes or redirects on a timer | 2.2.1 Timing Adjustable (A) | Failure |
| Blinking or scrolling element | 2.2.2 Pause, Stop, Hide (A) | Failure |
| Media plays automatically with sound | 1.4.2 Audio Control (A) | Review |
| Video has no captions track | 1.2.2 Captions (Prerecorded) (A) | Review |
| Heading has no text | 1.3.1 Info and Relationships (A); 2.4.6 Headings and Labels (AA) | Review |
| Heading level skipped | 1.3.1 Info and Relationships (A) | Review |
| List item outside a list | 1.3.1 Info and Relationships (A) | Failure |
| Data table has no header cells | 1.3.1 Info and Relationships (A) | Review |
| No way to skip repeated content | 2.4.1 Bypass Blocks (A) | Failure |
| Positive tabindex changes the focus order | 2.4.3 Focus Order (A) | Review |
| Focus outline removed | 2.4.7 Focus Visible (AA) | Review |
| Invalid autocomplete value | 1.3.5 Identify Input Purpose (AA) | Failure |
| Password field may block paste or password managers | 3.3.8 Accessible Authentication (Minimum) (AA) | Review |
| Click target smaller than 24 by 24 pixels | 2.5.8 Target Size (Minimum) (AA) | Review |
| Drag-only interaction | 2.5.7 Dragging Movements (AA) | Review |
| Text contrast below the minimum | 1.4.3 Contrast (Minimum) (AA) | Failure |
"Failure" means the markup fails the criterion as written. "Review" means a likely problem that a person has to confirm: a skipped heading level, generic link text or a video without a captions track can all be fine in context.
Colour contrast
Without the page's stylesheets, the only colours known for certain are those set on the elements themselves (style attributes, or legacy color and bgcolor attributes). Where both the text and background colour are known, the checker computes the WCAG contrast ratio exactly and applies 4.5:1, or 3:1 for large text (at least 24 px, or 18.66 px bold).
What automated checks can't find
Whether alt text is accurate, whether the keyboard order makes sense, whether captions match the audio, whether error messages help, whether focus is hidden behind a sticky header: these need a person. W3C's evaluation resources explain how to combine tools with manual review (W3C WAI, Evaluating Web Accessibility). That is why the result page has the guided checklist.
Privacy
Everything runs on the page. The site's content security policy allows no outgoing connections at all (connect-src 'none'), so the HTML you paste can't be uploaded, and the checker never fetches URLs.