Accessibility Certified – Home

2.4.1 Bypass Blocks

There must be a way to skip blocks of content that repeat on many pages, such as the main navigation.

Level APrinciple 2: Operable

What does it mean?

Most websites repeat the same header, navigation and sometimes sidebars on every page. A keyboard user would have to tab through all of these links on every single page before reaching the content. A screen reader user would hear them again and again.

A mechanism to bypass these blocks is required. The usual solutions are a "Skip to main content" link at the very start of the page and correct landmark regions (header, nav, main, footer) with headings, which screen readers can jump between. A skip link helps sighted keyboard users the most, so it is a good idea to provide both.

Who does it help?

  • Keyboard users who would otherwise tab through every navigation link
  • Screen reader users who want to jump straight to the content
  • People with motor impairments, for whom every extra key press costs effort

Common failures

  • No skip link and no main landmark, so the only way to the content is through the full navigation
  • A skip link that points to an id that does not exist on the page
  • A skip link that is hidden with display: none and therefore cannot receive focus
  • The main content not wrapped in a main element, while the layout is built only with divs

How we test it

  • axe-core Automatic: axe-core finds typical violations. A violation is pre-filled as “fails”.
  • evidence Evidence: our scanner collects material such as screenshots, lists and measurements.

Test question: Is there a skip link or are landmarks/headings there to jump past repeated navigation?

A person decides every criterion. No criterion ever passes automatically.

How to fix it

Problem
<body>
  <div class="header">…40 navigation links…</div>
  <div class="content">…</div>
</body>
Better
<body>
  <a class="skip-link" href="#main">Skip to main content</a>
  <header>…<nav aria-label="Main">…</nav></header>
  <main id="main" tabindex="-1">…</main>
</body>

<style>
  .skip-link { position: absolute; transform: translateY(-120%); }
  .skip-link:focus { transform: none; }
</style>

The skip link is the first focusable element, appears when focused, and leads to the main landmark.

Practical tips

  • Test it: press Tab once after loading the page; the skip link should appear and work with Enter.

Guides and patterns on this

Official source

Understanding WCAG 2.2 at the W3C: 2.4.1 Bypass Blocks

How does your website do on this criterion?

The free check tests your home page automatically; the audit decides all 55 criteria.

Free checkAll criteria