Skip Link Checker
Check a page has a working skip link, and that its target exists and can actually receive focus.
About this tool
Checks whether a page offers a skip link, whether its target exists, and whether the target can receive keyboard focus.
Somebody navigating by keyboard arrives on the page and starts pressing tab. Without a skip link they go through every link in the header — often forty of them — before reaching the content. On every page. Every time. One anchor at the top of the document removes that.
**Three failures all look like a working skip link in the markup.** The target `id` does not exist, so the link goes nowhere. The target is a plain `div` with no `tabindex="-1"`, so focus does not move even though the page scrolls — the next tab goes back to the navigation. Or the link is hidden with `display: none`, which removes it from the tab order entirely, so it can never be reached at all.
The correct pattern is a link that is visually hidden but still focusable, becoming visible when it receives focus.
Common questions
Why can the skip link not just be display: none?
Because that removes it from the tab order along with everything else, so a keyboard user can never reach it. Use a class that positions it off-screen — clip, or a negative offset — and brings it back on :focus.
Why does my skip link scroll but not move focus?
Because the target is not focusable. A div or a section does not accept focus by default; add tabindex="-1" to it, which makes it programmatically focusable without adding it to the tab order.
Do I need one if the page has landmarks?
Screen reader users can jump by landmark, but a sighted keyboard user — someone with a motor impairment, or anyone without a working mouse — has no such shortcut. The skip link is for them.
Where should the link go?
The first focusable element in the document, before the header. A skip link after the navigation has nothing left to skip.