Requires a mechanism, such as a skip link or landmarks, to bypass blocks of content that repeat on multiple pages.
On most sites every page starts with the same logo, search box and navigation menu. A sighted mouse user ignores it at a glance. A keyboard user has to tab through every link, on every page, before reaching the content, and a screen reader user has to listen to it all again.
This criterion requires a mechanism to bypass blocks of content that are repeated on multiple web pages. The usual mechanism is a "skip to main content" link at the top of the page, but landmarks and headings that people can jump between also count.
header, nav, main and footer lets assistive technology users jump between regions (ARIA11).Keyboard-only users and switch users, who would otherwise tab through dozens of links on every page. Screen reader users, who hear the same navigation again and again. People who use voice control or screen magnifiers and lose time moving past repeated blocks. People with motor disabilities, for whom each extra keystroke has a cost.
The European Accessibility Act (Directive (EU) 2019/882) applies to in-scope products and services placed on the market after 28 June 2025. Recital 47 names four principles for websites and mobile applications: perceivable, operable, understandable and robust. A fast way to the main content is part of "operable".
The technical counterpart is the standard EN 301 549, which incorporates WCAG 2.4.1 by reference and turns it into separate clauses for each kind of ICT.
| Clause | Type of ICT | What it requires |
|---|---|---|
| 9.2.4.1 | Web pages | Web content must satisfy WCAG success criterion 2.4.1. |
In EN 301 549 V3.2.1 the software clause did not carry this criterion, because it concerns sets of web pages. Check whether V4.1.1 changes that. Whether and how the criterion applies to non-web documents is stated in clause 10 of the standard. Clause numbers follow the "9. + WCAG number" pattern of EN 301 549. In V3.2.1 the software clause is divided into further subclauses for open and closed functionality. Check the exact numbers in the standard when you cite them.
Standard version: EN 301 549 V4.1.1 (September 2026) is based on WCAG 2.2 and is the first version prepared specifically for the EAA. It has not yet been cited in the Official Journal of the European Union, so for now it is best treated as a voluntary technical route to the EAA's requirements. Once cited, it will give a presumption of conformity. The text of criterion 2.4.1 is the same in WCAG 2.1 and 2.2.
A note on EAA scope: Article 2(4) of the Directive excludes certain content from the requirements, for example office file formats published before 28 June 2025 and archives that are not updated after that date. Content you publish or change after that date is not covered by these exclusions.
Directive (EU) 2019/882, EUR-Lex, opens in a new tab
Make it the first focusable element. It can be hidden until it receives focus, but it must become visible then.
<body>
<nav>… 40 links …</nav>
<main>…</main>
</body><body>
<a class="skip-link" href="#main">Skip to main content</a>
<nav>… 40 links …</nav>
<main id="main" tabindex="-1">…</main>
</body>
.skip-link {
position: absolute; left: -999px;
}
.skip-link:focus {
left: 1rem; top: 1rem; z-index: 100;
background: #fff; color: #000; padding: 0.5rem 1rem;
}A link hidden with display: none or visibility: hidden is not focusable. Move it off-screen instead and show it on focus.
.skip-link { display: none; }.skip-link { position: absolute; left: -999px; }
.skip-link:focus { left: 1rem; }Use landmarks so assistive technology can list and jump to the regions. Give a label when a landmark appears more than once.
<div class="top">…</div>
<div class="menu">…</div>
<div class="content">…</div><header>…</header>
<nav aria-label="Main">…</nav>
<main id="main">…</main>
<footer>…</footer>A heading before each main section lets heading navigation work as a bypass mechanism.
<div class="section-title">Our services</div><h2>Our services</h2>If you embed repeated content in an iframe, give it a title so users can recognise it and decide whether to enter it.
<iframe src="/ads/banner.html"></iframe><iframe src="/ads/banner.html" title="Advertisement"></iframe>In some browsers focus does not move to a non-focusable target. Give the target tabindex="-1" so that the next Tab continues from there.
<div id="main">…</div><main id="main" tabindex="-1">…</main>This criterion concerns repeated blocks across a set of web pages. In native apps the same need is met by headings and by grouping related controls, so that screen reader users can jump past a long toolbar or list.
import SwiftUI
struct ArticleScreen: View {
var body: some View {
ScrollView {
VStack(alignment: .leading, spacing: 16) {
// Headings let VoiceOver users jump section by section with the rotor
Text("Latest articles")
.font(.title2)
.accessibilityAddTraits(.isHeader)
ArticleList()
Text("Popular topics")
.font(.title2)
.accessibilityAddTraits(.isHeader)
TopicGrid()
}
}
}
}import androidx.compose.foundation.layout.Column
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.semantics.heading
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.Modifier
@Composable
fun ArticleScreen() {
Column {
// Headings let TalkBack users jump between sections
Text(
"Latest articles",
style = MaterialTheme.typography.titleLarge,
modifier = Modifier.semantics { heading() }
)
ArticleList()
Text(
"Popular topics",
style = MaterialTheme.typography.titleLarge,
modifier = Modifier.semantics { heading() }
)
TopicGrid()
}
}banner, navigation, main and contentinfo present, and are repeated ones labelled?main region exist, but not that the skip link goes to the right place.display: none: It cannot be focused.href points to an id that does not exist.divs instead of landmarks: Assistive technology has nothing to jump to.nav regions: Users cannot tell them apart.