How to test website accessibility: a 6-step method with free tools
Published: 8 min readThe AccessibleOrNot team
To test website accessibility, scan one page per template automatically, then check the same pages by hand: keyboard only, 200% zoom, deliberate form errors and a screen reader. The automated half finds about 57% of issues by volume, according to Deque's 2021 study of more than 2,000 audits. The manual half covers the rest, including the barriers that stop people outright. Every tool below is free; plan roughly two hours for a site with five templates (our estimate, not a standard).
In short
- A website accessibility test has two halves: an automated scan per template and a manual check of the same pages.
- Automated testing finds about 57% of accessibility issues by volume, according to Deque's March 2021 study of more than 2,000 audits.
- The EU's EAA (applied since 28 June 2025) and ADA Title II (from 26 April 2027 for large public entities) both point to WCAG 2.1 AA; Türkiye's Circular No. 2025/10 asks for WCAG 2.2 Level A.
- No axe-core rule tests keyboard traps (2.1.2), focus order (2.4.3), visible focus (2.4.7) or error identification (3.3.1); only a person finds these.
- A test result is a snapshot: re-test after every theme update or release.
What should a website accessibility test check against?
A website accessibility test checks pages against WCAG, the W3C's Web Content Accessibility Guidelines. The version and level depend on where your users are and which law applies to you.
| Law | Who | Standard | Date |
|---|---|---|---|
| EAA (EU) | Businesses offering e-commerce, banking and other listed services to EU consumers | EN 301 549, for the web WCAG 2.1 AA | Since 28 June 2025 |
| ADA Title II (US) | State and local governments | WCAG 2.1 AA | 26 April 2027 (50,000+ people); 26 April 2028 (smaller) |
| ADA Title III (US) | Businesses open to the public | None in regulation; the DOJ points to WCAG | Applies now |
| Circular No. 2025/10 (Türkiye) | Public bodies, banks, private hospitals and others; e-commerce | WCAG 2.2 Level A | 21 June 2026; e-commerce 21 June 2027 |
If you serve more than one market, test against WCAG 2.2 AA: it is the simplest single target that includes the levels above. Background on each law: our EAA guide, the ADA website checklist and the ADA Title II rule.
Source: EUR-Lex, Pacific ADA Center, US Department of Justice (DOJ), ADA.gov, Lexpera
Step 1: Which pages should you test?
Test one page per template, plus every step of your most important flow. Most sites are built from a handful of templates, and a fix in a template fixes every page made from it. WCAG-EM 2.0, the W3C's evaluation methodology (July 2026), works the same way: a structured sample of representative pages plus a few random ones.
| Template or flow | Example | Why it matters |
|---|---|---|
| Home page | / | Carries the header, menu and footer that every other page reuses |
| Listing | Category, blog index, search results | Filters, sorting and pagination |
| Detail page | Product, service, article | Images, option pickers, tabs |
| Form | Contact, sign-up, booking | Labels, error messages, CAPTCHA |
| Main flow | Cart to checkout, or application to confirmation | Where a barrier costs a sale or a service |
| One random page | An old campaign or news page | Content that lives outside the templates |
Source: W3C WAI
Step 2: How do you run an automated accessibility test?
Run a rules-based checker on every page in your sample. Free options are the axe DevTools browser extension, WAVE and the accessibility audits in Lighthouse. Lighthouse and our own scan both run axe-core, Deque's open-source engine. Each finding names a rule, the element and a WCAG success criterion.
Read the results in two groups. Failures are certain: an image with no alt attribute, a button with no name. Needs review items are cases the engine can't decide, such as text over a background image; axe-core reports them separately on purpose, to avoid false alarms. A clean report, like a Lighthouse score of 100, means no automatically detectable issues were found, not that the page is accessible.
A typical finding: the axe rule button-name (WCAG 4.1.2) flags an icon-only button with no accessible name. A screen reader announces it as just "button".
| Code | |
|---|---|
| Before | <button class="menu-toggle"><svg>...</svg></button> |
| After | <button class="menu-toggle" aria-label="Menu" aria-expanded="false"><svg aria-hidden="true">...</svg></button> |
For more fixes like this one, see how to fix the 10 most common accessibility issues.
Source: Deque Systems, Deque Systems, GitHub, Deque Systems, WebAIM, Chrome for Developers (Google)
Step 3: How do you test with a keyboard?
Put the mouse away and complete your main flow with the keyboard alone. This step covers criteria that no axe-core rule tests: 2.1.2 No Keyboard Trap, 2.4.3 Focus Order, 2.4.7 Focus Visible and, in WCAG 2.2, 2.4.11 Focus Not Obscured.
| Key | Expected behaviour | WCAG |
|---|---|---|
| Tab / Shift+Tab | Moves focus forward and back through links, buttons and fields in a logical order; you can always see where focus is | 2.4.3, 2.4.7 |
| Enter | Follows a link, activates a button, submits a form | 2.1.1 |
| Space | Activates a button, ticks a checkbox | 2.1.1 |
| Arrow keys | Move within radio groups, tabs and menus built as one widget | 2.1.1 |
| Esc | Closes a pop-up, menu or drawer; focus goes back to the control that opened it | 2.1.2, 2.4.3 |
Write down every place you get stuck, lose sight of focus or land on something you can't see. A common case is a closed cart drawer or menu whose links still take focus. When the closed panel is marked aria-hidden="true", axe-core does catch it (rule aria-hidden-focus); the fix is the inert attribute or display:none on the closed panel.
Source: W3C, Deque Systems, GitHub
Step 4: How do you test zoom and reflow?
Zoom the browser to 200% and check that no text is cut off or overlapping (1.4.4 Resize Text). Then make the window 1280 px wide and zoom to 400%. That equals a 320 CSS px viewport, the width WCAG 1.4.10 Reflow uses: content should fit in one column without scrolling sideways, except for things like data tables and maps.
On a phone, check that pinch zoom works. The axe rule meta-viewport flags a viewport tag that blocks it:
| Code | |
|---|---|
| Before | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> |
| After | <meta name="viewport" content="width=device-width, initial-scale=1"> |
Source: W3C, Deque Systems, GitHub
Step 5: How do you test forms and error messages?
Submit each form empty, then with deliberate mistakes: an email address without @, a date in the past. Each error should be described in text next to the field; a red border alone fails 3.3.1 Error Identification. Status messages such as "Added to cart" should be announced without moving focus (4.1.3 Status Messages, Level AA).
axe-core checks that a field has a label (rule label) and that aria-describedby points to an id that exists (rule aria-valid-attr-value). It can't judge whether the error message makes sense. The fix below gives the field a visible label and ties the error text to it, so a screen reader reads both together:
| Code | |
|---|---|
| Before | <input id="email" type="email" class="has-error"> |
| After | <label for="email">Email address</label> <input id="email" type="email" aria-invalid="true" aria-describedby="email-error"> <p id="email-error">Enter an email address with an @, for example name@example.com.</p> |
Source: W3C, Deque Systems, GitHub
Step 6: How do you test with a screen reader?
Use a screen reader your users are likely to have. NVDA is free on Windows; VoiceOver is built into Mac and iPhone; TalkBack is built into Android. Fifteen minutes on your main flow shows the most obvious problems.
| Task | NVDA (Windows) | VoiceOver (Mac) |
|---|---|---|
| Turn on / off | Ctrl+Alt+N to start, Insert+Q to quit | Cmd+F5 |
| Read from here | Insert+Down arrow | VO+A |
| Next heading | H | VO+Cmd+H |
| Next form field | F | VO+Cmd+J |
| List headings, links, landmarks | Insert+F7 | VO+U (rotor) |
Listen for four things: images described usefully, prices and options read in a sensible order, buttons whose names say what they do, and an announcement after "Add to cart" or a form error.
How do you record results and keep them current?
Record each finding with the page, the step, the WCAG criterion, what happened and a screenshot. That record becomes your fix list, the evidence behind an accessibility statement and the baseline for your next test.
Re-test after every release. A site that passed in spring can fail in autumn after a theme update or a new campaign page. UsableNet counted more than 5,000 ADA digital accessibility lawsuits in 2025, and 45% of federal cases named a company that had been sued before. An automated scan can repeat step 2 every week; put steps 3–6 in your release checklist.
Be careful with what you claim afterwards. No test, ours included, proves that a site conforms to WCAG. On 22 April 2025 the US FTC finalised an order requiring accessiBe to pay $1 million and barring it from claiming without evidence that its product makes websites WCAG-compliant. Say what you tested, when, and what's still open.
Frequently asked questions
How long does a website accessibility test take?
An automated scan takes minutes. In our estimate, the manual steps take one to two hours for a site with five templates; a full expert audit following WCAG-EM takes days.
Can I test website accessibility for free?
Yes, axe DevTools (free extension), WAVE and Lighthouse cover the automated step, and NVDA, VoiceOver and TalkBack are free screen readers. The limit is time and judgement, not tools.
Is an automated accessibility test enough?
No, automated testing finds about 57% of issues by volume (Deque, 2021). Keyboard traps, focus order and unclear error messages need a person to test them.
Sources
- Automated testing study identifies 57 percent of digital accessibility issues · Deque Systems · 10 March 2021
- Directive (EU) 2019/882 (European Accessibility Act) · EUR-Lex · 17 April 2019
- DOJ delays ADA Title II Web and Mobile App Accessibility Rule compliance deadlines · Pacific ADA Center · April 2026
- Guidance on Web Accessibility and the ADA · US Department of Justice (DOJ), ADA.gov · 18 March 2022
- Presidential Circular No. 2025/10, Official Gazette No. 32933 (in Turkish) · Lexpera · 21 June 2025
- WCAG Evaluation Methodology (WCAG-EM) 2.0 — Note Published · W3C WAI · 23 July 2026
- axe-core rule descriptions · Deque Systems, GitHub · current
- axe DevTools · Deque Systems · accessed October 2026
- WAVE Web Accessibility Evaluation Tools · WebAIM · accessed October 2026
- Lighthouse accessibility scoring · Chrome for Developers (Google) · accessed October 2026
- WCAG 2.2 · W3C · 5 October 2023 (current version)
- About NVDA · NV Access · accessed October 2026
- VoiceOver User Guide for Mac · Apple · accessed October 2026
- ADA Web Lawsuit Trends for 2026: What 2025 Filings Reveal · UsableNet · 8 January 2026
- FTC Approves Final Order Requiring accessiBe to Pay $1 Million · US Federal Trade Commission (FTC) · 22 April 2025
Related articles
Start with step 2.
Enter your URL. We scan your templates with axe-core, group the findings by template and severity, and add a manual checklist for steps 3–6 to your report.