Requires that components with the same function across a set of pages are identified consistently, with the same labels and text alternatives.
If one page calls a button "Search" and another calls the same button "Find", users must work out whether they do the same thing. For people with cognitive disabilities, and for screen reader users who rely on names, a different word means a different function.
This criterion requires that components that have the same functionality within a set of web pages are identified consistently.
People with cognitive and learning disabilities, who learn a function once and recognise it elsewhere. Screen reader users, who depend on names to understand what a control does. People who use speech recognition, who say the name of the control. People with low vision who recognise controls by their labels.
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. Consistent identification is part of "understandable".
The technical counterpart is the standard EN 301 549, which incorporates WCAG 3.2.4 by reference and turns it into separate clauses for each kind of ICT.
| Clause | Type of ICT | What it requires |
|---|---|---|
| 9.3.2.4 | Web pages | Web content must satisfy WCAG success criterion 3.2.4. |
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 3.2.4 is the same in WCAG 2.1 and 2.2. It is a Level AA criterion.
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
A "Search" button on one page and a "Find" button on another is the failure W3C describes (F31).
<!-- Page A -->
<button>Search</button>
<!-- Page B -->
<button>Find</button><!-- Every page -->
<button>Search</button>The text alternative of an icon that does the same thing must be the same on every page.
<!-- Page A -->
<a href="/cart"><img src="cart.svg" alt="Cart"></a>
<!-- Page B -->
<a href="/cart"><img src="cart.svg" alt="Shopping basket"></a><a href="/cart"><img src="cart.svg" alt="Cart"></a>A label can change when the context changes, as long as the same function has the same name. "Next page" can be "Go to page 5".
<!-- Page 4 -->
<a href="?p=5">Next</a>
<!-- Page 5 -->
<a href="?p=6">Forward</a><a href="?p=5">Go to page 5</a> <!-- context-specific but consistent for its function -->When the visible label is consistent, keep the accessible name consistent too.
<!-- Page A --><button aria-label="Download PDF">Download</button>
<!-- Page B --><button aria-label="Get file">Download</button><button aria-label="Download PDF">Download</button>Reusing one component for the same function keeps labels aligned without extra effort (G197).
<!-- Each team writes its own "Contact" button --><!-- components/ContactLink.html used on every page -->
<a class="contact" href="/contact">Contact us</a>Components that do different things need not match, even if they look alike.
<button>Save</button> <!-- saves a draft on one page, publishes on another --><button>Save draft</button>
<button>Publish</button>Apps repeat the same controls across screens: back, search, share, profile. Use the same label and the same accessibility name for the same function throughout the app.
import SwiftUI
// One shared view, so the label and accessibility name never drift apart
struct ShareButton: View {
var action: () -> Void
var body: some View {
Button(action: action) {
Image(systemName: "square.and.arrow.up")
}
.accessibilityLabel("Share")
}
}import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Share
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.runtime.Composable
// One shared composable, so the name is the same on every screen
@Composable
fun ShareButton(onShare: () -> Unit) {
IconButton(onClick = onShare) {
Icon(Icons.Filled.Share, contentDescription = "Share")
}
}