Requires that when the order of content affects its meaning, the reading order in the code matches the meaningful order, so screen readers read it correctly.
Screen readers, keyboard navigation and reader modes follow the order of the code, not the order the page appears on screen. If CSS moves things around, the code order can differ from what a sighted user sees, and the content can stop making sense.
This criterion requires that when the order of content affects its meaning, a correct reading order can be determined programmatically. The order in the code must match the meaningful order, so a heading comes before its text, a question before its answer and a step before the next step.
order, flex-direction: row-reverse, grid placement and absolute positioning can change the visual order. They must not change the meaning of the content for the reading order.Screen reader users hear content in code order, so a wrong order scrambles the meaning. People who use keyboards, switch devices or voice control, and people who use reader modes or styles of their own, also get the code order. Clear order helps people with cognitive differences and search engines too.
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 reading order that keeps the meaning is part of "perceivable" and "understandable".
The technical counterpart is the standard EN 301 549, which incorporates WCAG 1.3.2 by reference and turns it into separate clauses for each kind of ICT.
| Clause | Type of ICT | What it requires |
|---|---|---|
| 9.1.3.2 | Web pages | Web content must satisfy WCAG success criterion 1.3.2. |
| 10.1.3.2 | Non-web documents (PDF, Office files) | The same criterion applies to the reading order of documents (tag order in PDF, flow in Office files). |
| 11.1.3.2 | Non-web software (native mobile apps) | Software that supports screen readers must satisfy the criterion. |
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 1.3.2 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
A visual order that differs from the code order can scramble what a screen reader says. Put the content in the right order in the code, and do not rely on CSS to fix it.
<div class="card" style="display:flex; flex-direction:column">
<p>Save 20% until Friday.</p>
<h2 style="order:-1">Spring sale</h2>
</div><div class="card">
<h2>Spring sale</h2>
<p>Save 20% until Friday.</p>
</div>Reading across table cells mixes columns. Use CSS layout, so each block reads on its own.
<table>
<tr>
<td>Chapter 1 begins here and goes on…</td>
<td>Related links…</td>
</tr>
<tr>
<td>…and it ends here.</td>
<td>More links…</td>
</tr>
</table><div class="layout">
<article>Chapter 1 begins here and goes on… and it ends here.</article>
<aside>Related links… More links…</aside>
</div>
.layout { display: grid; grid-template-columns: 3fr 1fr; gap: 24px; }Absolute positioning takes content out of the flow. Keep the DOM in the reading order and use grid or flex for placement.
<div style="position:absolute; top:200px">Step 2: Confirm</div>
<div style="position:absolute; top:100px">Step 1: Enter details</div><ol>
<li>Step 1: Enter details</li>
<li>Step 2: Confirm</li>
</ol>Insert new content next to the thing it belongs to, not at the end of the page.
// The error is appended at the end of the body
document.body.appendChild(errorMessage);// The error is inserted right after the field
field.insertAdjacentElement("afterend", errorMessage);A positive tabindex creates a second order that is hard to keep right. Fix the order of the elements instead.
<a href="/a" tabindex="3">A</a>
<a href="/b" tabindex="1">B</a>
<a href="/c" tabindex="2">C</a><a href="/b">B</a>
<a href="/c">C</a>
<a href="/a">A</a>The same rule applies in native mobile apps. Screen readers read the elements in the order the platform gives them. Check that this order matches the meaning, and set the order explicitly when it does not.
import SwiftUI
struct OrderSummary: View {
var body: some View {
// The total is placed visually at the bottom, but we want
// it to be read after the title and the item list.
VStack(alignment: .leading, spacing: 12) {
Text("Total: €42")
.accessibilitySortPriority(1) // read last
Text("Items")
.accessibilitySortPriority(3) // read first
Text("2 × Notebook")
.accessibilitySortPriority(2)
}
.accessibilityElement(children: .contain)
}
}import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.semantics.isTraversalGroup
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.traversalIndex
@Composable
fun OrderSummary() {
// Reading order by traversalIndex: lower values come first
Column(modifier = Modifier.semantics { isTraversalGroup = true }) {
Text(
text = "Total: €42",
modifier = Modifier.semantics { traversalIndex = 2f }
)
Text(
text = "Items",
modifier = Modifier.semantics { traversalIndex = 0f }
)
Text(
text = "2 × Notebook",
modifier = Modifier.semantics { traversalIndex = 1f }
)
}
}order, row-reverse, absolute positioning and grid placement. If they change the order, check that the meaning survives.