Meaningful Sequence
When the order in which content is presented affects its meaning, a correct reading sequence can be determined programmatically. The DOM order must match the logical reading order.
Who this affects
Screen reader users and users of any linearised view receive content in DOM order, not visual order. CSS that reorders columns visually leaves them reading in the original, now-nonsensical order.
The failure and the fix
Each example below is a self-contained page, loaded in a frame so its markup cannot affect this page. Open either one on its own to test it with a keyboard or screen reader.
Fails 1.3.2
Open the failing example in a new tab
fail.html — the problem
<h1>How to reserve a book</h1>
<!-- The visual order reads 1, 2, 3. The DOM order is 3, 2, 1, so a screen
reader reads the instructions backwards and the tab order runs backwards
too. Anyone following along by ear is told to collect the book before
they have been told to reserve it. -->
<div class="steps">
<p class="s1"><strong>Step 3.</strong> Collect it from the front desk within seven days.</p>
<p class="s2"><strong>Step 2.</strong> We email you when it is ready.</p>
<p class="s3"><strong>Step 1.</strong> Search the catalogue and choose Reserve.</p>
</div>
<!-- Same problem with grid placement: the article body appears on the right
visually but comes second in the DOM, so the sidebar is read first. Here
the sidebar is minor content being forced ahead of the main article. -->
<div class="two-col">
<div class="body">
<h2>About the scheme</h2>
<p>Reservations are free for members.</p>
</div>
<div class="sidebar">
<h2>Advert</h2>
<p>Buy a tote bag.</p>
</div>
</div>
Meets 1.3.2
Open the passing example in a new tab
pass.html — the fix
<h1>How to reserve a book</h1>
<!-- FIX 1: the DOM order is the correct reading order, so no CSS reordering is
needed. An ordered list also communicates the sequence programmatically -
a screen reader announces "list, 3 items, item 1 of 3". -->
<ol>
<li>Search the catalogue and choose Reserve.</li>
<li>We email you when it is ready.</li>
<li>Collect it from the front desk within seven days.</li>
</ol>
<!-- FIX 2: the main article comes first in the DOM, which is also the order it
should be read in. The layout puts it on the left with grid columns, with
no reordering - so visual order and DOM order agree at every width.
CSS order and grid placement are safe for PRESENTATION that does not carry
meaning. They break 1.3.2 the moment the sequence itself is information. -->
<div class="two-col">
<div class="body">
<h2>About the scheme</h2>
<p>Reservations are free for members.</p>
</div>
<aside class="sidebar">
<h2>Advert</h2>
<p>Buy a tote bag.</p>
</aside>
</div>
How to test it
Disable CSS and read top to bottom — the sequence must still make sense. Watch for flexbox order, grid placement, and absolute positioning that move content visually without moving it in the DOM.
-
Automated
Detecting whether a reading order is meaningful requires understanding the content.
No axe rule maps to this criterion. It has to be checked by a person.
-
Keyboard
Unplug the mouse. Move through the page with Tab, Shift+Tab, Enter, Space and the arrow keys. See the keyboard testing script.
-
Screen reader
Listen to both examples with NVDA, JAWS, VoiceOver or TalkBack and compare what is announced. See the screen reader cheat sheets.
-
Visual
Zoom to 200% and 400%, narrow the viewport to 320 px, and apply the text-spacing overrides. See the visual testing procedures.
Related criteria
In the specification
- Understanding 1.3.2 Meaningful Sequence — the W3C explanation, intent and exceptions
- 1.3.2 in the WCAG 2.2 Recommendation — the normative wording
WCAG 2.2 Demo Suite