Skip to main content
SlapMyWeb
Web Accessibility

Skip Navigation

A link letting keyboard users jump past the header straight to the main content.

A skip navigation link is the first focusable element on a page, letting someone using a keyboard or screen reader jump past the header and menu straight to the main content. Without it, every page begins with the same twenty or thirty links to tab through. It is a WCAG requirement and takes one anchor plus a target landmark.

Definition

The pattern is a link at the very top of the document pointing at the main content's id — usually visually hidden until it receives focus, then displayed.

It only works if the target exists and holds the content. A skip link pointing at an empty <main> — because the real content is streamed in after hydration — lands the user on nothing, which is a failure this site has itself measured and fixed.

Why It Matters

WCAG 2.4.1 requires a way to bypass repeated blocks. For a keyboard-only user, the alternative is tabbing through the entire navigation on every single page.

Example

<a href="#main-content" class="skip-link">Skip to content</a>
...
<main id="main-content">…</main>

The two ways it silently fails

The target is empty. If the main content is streamed in after hydration, the landmark exists but holds a loading state at the moment the skip link fires. The user jumps to a spinner. This is invisible in testing unless you actually press the link on a cold load.

It is hidden the wrong way. A skip link is normally visually hidden until focused. Hiding it with display: none or visibility: hidden removes it from the focus order entirely, so it can never be reached — it exists in the markup and does nothing. Use a clipping technique that keeps it focusable, and make it visible on :focus.

How SlapMyWeb checks this

The audit checks that a skip link exists, that its target id is present in the document, and — the part that catches real failures — that the target actually contains content. A skip link pointing at an empty <main> passes a naive check and lands the user on nothing, which is the exact bug this site shipped on all 343 pages until September 2026.

Know the term.
Check your own site.

A free audit tells you whether this is currently costing you score points — and exactly what to change.

Run a free audit
Free foreverNo signupResults in 30s