Glossary · Code

Skip link

Definition: A skip link is a link at the very top of a page, usually reading "Skip to content", that goes straight to the main content. It saves keyboard users from tabbing through the logo, menu and search on every page. It is one of the recognised techniques for WCAG 2.4.1 Bypass Blocks at Level A [1][2].

German: Skip-Link · Also: skip navigation link · Last reviewed: 27 September 2026

Who needs it

A main menu with forty links means forty presses of Tab – on every page, before the content begins. That affects people with motor disabilities who use a keyboard, a switch or a mouth stick, for whom every key press costs effort and time. It also affects people using a screen magnifier, who would otherwise have to follow focus through the whole navigation.

Screen reader users have other routes, such as landmarks and headings. Browsers offer sighted keyboard users no such jumps, though. For them, the skip link is the fastest way to the content [3].

  • It is the first focusable element on the page. The first press of Tab lands on it.
  • Its target exists: href="#content" needs an element with id="content", ideally <main>.
  • It becomes visible on focus at the latest. Many sites hide it until it receives focus, which is fine – invisible while focused it is useless, and it also fails 2.4.7 Focus Visible.
  • Its text is clear and in the page's language.

In code

<!-- Missing: 40 menu links before the content -->
<header>…</header>
<nav>…</nav>
<main>…</main>
<a class="skip" href="#content">
  Skip to content
</a>
<header>…</header>
<nav>…</nav>
<main id="content">…</main>
.skip { position: absolute; left: -999em; }
.skip:focus { left: 1rem; top: 1rem; }

Common mistakes

  • The target is gone. After a redesign the main region has a new id, and the link leads nowhere.
  • It stays invisible even when focused – because of display: none, say, or a colour with no contrast.
  • It is not the first Tab stop, because a cookie notice, language switcher or social links come first.
  • The page jumps, but focus doesn't. The page scrolls, yet the next Tab continues in the menu. Test this in every browser you support.

How Reviseberg handles it

Before the keyboard agent presses its first key, it checks whether the first focusable element is a link to a target on the same page, and whether that target exists. If not, it reports the rule keyboard:skip-link and notes in the step what it found instead. The axe-core rules skip-link (a skip link's target exists) and bypass (the page offers any way past repeated blocks) add to this. Whether the target really is the main content, and whether the link is comfortable to use, is in the end for a person to judge.

Landmark · Keyboard accessibility · Focus order · Focus indicator · Keyboard trap

Further reading

Frequently asked questions

Is a skip link mandatory?

WCAG 2.4.1 requires a way to bypass repeated blocks. A skip link is one recognised technique; landmarks and headings are others. For sighted keyboard users, though, the skip link is usually the only one that actually helps.

Can the skip link be hidden?

Yes, as long as it does not have focus. As soon as it receives keyboard focus, it has to become visible.

Do I need more than one skip link?

One to the main content is usually enough. On very long pages, further jumps – to the search, for example – can help. Too many of them, though, become a block you have to tab through.

Sources

  1. W3C, WCAG 2.2, Success Criterion 2.4.1 Bypass Blocks – https://www.w3.org/TR/WCAG22/#bypass-blocks
  2. W3C, Understanding SC 2.4.1 Bypass Blocks – https://www.w3.org/WAI/WCAG22/Understanding/bypass-blocks
  3. WebAIM, "Skip Navigation" Links – https://webaim.org/techniques/skipnav/

See what a scan finds on your site

One page in about thirty seconds, no email needed. The full report covers up to 100 pages and a keyboard journey.