Free tool · No sign-up
Tab through any page and see where focus goes
Keyboard users, switch users and many screen reader users move through a page with the Tab key. This checker loads your page in Chrome, presses Tab the way they do, and numbers every stop on a screenshot. It flags stops with no visible focus, focus hidden behind sticky headers and cookie banners, and keyboard traps. A second mode measures every link and button against the 24 pixel minimum in WCAG 2.5.8.
What it checks
| Criterion | Level | What the checker does |
|---|---|---|
| 2.1.1 Keyboard | A | Shows everything Tab reaches. A control that is missing from the list may only work with a mouse; the tool does not press anything, so confirm it by hand. |
| 2.1.2 No Keyboard Trap | A | Flags focus that stays on one element or cycles through a few, then tries Escape and Shift+Tab to see whether either gets out. |
| 2.4.3 Focus Order | A | Flags positive tabindex, focus that is dropped to the page mid-way, and big jumps back up the page. Whether the order makes sense is for you to judge from the numbered screenshot. |
| 2.4.7 Focus Visible | AA | Compares each element focused and unfocused, pixel by pixel. If nothing changes, there is no visible indicator. Also flags focus landing on invisible, zero-size or off-screen elements. |
| 2.4.11 Focus Not Obscured (Minimum) | AA | Samples points across each focused element to see whether a sticky header, cookie banner or other layer covers it completely. Partly covered is noted against 2.4.12 (AAA). |
| 2.5.8 Target Size (Minimum) | AA | Target size mode measures every link, button and control against 24 by 24 pixels and applies the spacing, inline and browser-default exceptions. |
What automated tabbing cannot tell you
The checker reports what happens when Tab is pressed. That finds the most common keyboard failures quickly, but it is not a keyboard audit, and a clean result does not mean a page works from the keyboard.
- It cannot judge whether the order is logical. It flags likely problems; reading the numbered screenshot against the layout is your job.
- It does not press Enter, Space or arrow keys. Menus, tabs, sliders, grids and other widgets that use arrow keys inside a single Tab stop are not tested, and neither are custom keyboard shortcuts or whether controls actually work when activated.
- It checks that focus is visible, not that it is clear. Indicator contrast and thickness (2.4.13, AAA) are not measured.
- It sees one state of the page. A first visit, on a 1280 by 800 desktop window, with motion reduced. Mobile layouts, signed-in pages and content that opens only after a click are not covered, and focus inside embedded frames is not followed.
Treat the results as a map of where to look, then confirm with a keyboard yourself. Our keyboard accessibility guide covers manual testing step by step.
How the focus tests work
Computed styles cannot tell you whether focus is visible: an outline the same colour as the background changes the styles but not the screen, and an indicator drawn on a parent card or a pseudo-element does not show up on the element at all. So the checker looks at pixels. At each stop it captures the element while focused, removes focus, captures again, and restores focus. Chrome keeps the keyboard focus style when focus is restored by script after a key press, so both captures are of the real keyboard state. Transitions and animations are switched off first, so indicators are captured in their final state, and the text cursor is hidden so it cannot pass for an indicator.
When something changed, a third capture checks that the area is not changing on its own, as videos and carousels do. Those stops are marked as unknown rather than passed. To decide whether focus is hidden, the checker asks the browser which element is on top at five points across the focused element, after the browser has scrolled it into view. If something else is on top at every point, focus is entirely hidden.
Target size and its exceptions
2.5.8 Target Size (Minimum) asks for pointer targets of at least 24 by 24 CSS pixels. A target can be smaller and still pass in five ways, and the checker handles them as follows.
- Spacing:a 24 pixel circle centred on the small target must not touch any other target, or another small target's circle. Measured.
- Inline: a link inside a sentence of text. Detected from the surrounding text.
- User agent: a native control the browser sizes, such as an unstyled checkbox. Detected by comparing it with the same control on a blank page.
- Equivalent: another control on the page does the same thing and is large enough. Not detected; check failures for this.
- Essential: the size is essential to the information, as with pins on a map. Not detected; check failures for this.
The enhanced AAA criterion, 2.5.5 Target Size (Enhanced), asks for 44 by 44 pixels. The checker reports against the AA minimum only. To measure targets on a phone screen, where they matter most, use the Target Size Checker, which opens on a 390 pixel phone viewport.
Fixing what it finds
- No visible focus: never remove the outline without putting something in its place. A
:focus-visiblerule shows it to keyboard users without showing it on mouse clicks. - Hidden behind a sticky header: set
scroll-padding-topon the page to the header's height, so the browser scrolls focused elements clear of it. Cookie banners that cover content need the same space at the bottom, or should not cover content at all. - Positive tabindex: replace it with
tabindex="0"and change the source order instead. - Focus on hidden things: closed menus and off-canvas panels should be
hiddenorinert, not just moved off-screen. Skip links should appear when focused. - Traps and dialogs: keep focus in a modal dialog only while it is open, close it with Escape, and send focus back to the control that opened it.
- Small targets: add padding or a
min-heightandmin-widthof 24 pixels to icon buttons, or space them apart.
:focus-visible {
outline: 3px solid #0f766e;
outline-offset: 2px;
}
html {
/* Height of the sticky header */
scroll-padding-top: 5rem;
}For more depth, see the guides to focus management, skip links, accessible dialogs and accessible menus.
Frequently Asked Questions
Can an automated tool tell whether my focus order is logical?
No. A logical order depends on what the page means, which only a person can judge. The checker records the order Tab actually follows and flags the patterns that usually signal a problem: positive tabindex, focus that jumps far back up the page, focus dropped mid-way, and loops. Use the numbered screenshot to read the order against the visual layout.
How does it decide whether focus is visible?
For every stop it captures the element and a small margin around it while focused, removes focus and captures again, then counts the pixels that changed. No meaningful change means no visible indicator, which fails WCAG 2.4.7. If nothing changes in the tight capture it looks again over a wider area, so indicators drawn on a surrounding card are not missed. It records which styles changed as supporting evidence, but the pixels decide, because an outline in the same colour as the background changes the styles and not the screen.
Does it check focus indicator contrast or thickness?
No. It checks that an indicator exists and can be seen, which is what 2.4.7 (AA) requires. How strong the indicator is belongs to 2.4.13 Focus Appearance, a AAA criterion, and needs a contrast and area measurement this tool does not make. A faint colour change on link text will pass here and may still be hard to see.
Why did the check stop inside a cookie banner or dialog?
A modal dialog is supposed to keep focus inside it until it is closed. When that dialog is a cookie banner, the checker closes it once with its reject button where it has one, and carries on with the page. Other dialogs end the run, with a note on whether Escape released focus. The tool always loads the page as a first-time visitor with no cookies, so you see what a new visitor sees.
What is the WCAG 2.5.8 target size rule?
Pointer targets such as links, buttons and checkboxes must be at least 24 by 24 CSS pixels, with exceptions: a smaller target passes if a 24 pixel circle centred on it does not touch any other target or another small target's circle; links inside a sentence are exempt; controls left at the browser's default size are exempt; and so are targets where another control does the same job at full size, or where the size is essential. The tool applies the first three and tells you to check the last two by hand.
Which pages can it check?
Public pages that load without signing in. It uses Chrome at 1280 by 800 pixels, follows up to 80 Tab stops within about 25 seconds, and does not follow focus into embedded frames such as videos and maps. Some sites block automated browsers; when that happens you will see an error rather than a misleading result.
Essential Accessibility Resources
Comprehensive tools, checklists, and guides to help you create inclusive digital experiences