Consistent Navigation
Anything that helps people move around your site has to keep the same relative order on every page that repeats it. That covers more than the main menu. A search field is a navigational mechanism. So is a skip link, and so is a breadcrumb trail. Relative order is the exact test, and it is forgiving. You may insert items and remove them, so an expanding menu that adds a second level does not fail. What fails is reshuffling what was already there. The rule is bounded by a set of pages, meaning pages that share a purpose and an author, and a checkout flow that drops the site header counts as its own set rather than as part of the shop.
Why it matters
Repetition is what turns an interface into muscle memory. People stop reading a menu they have read before and start reaching for the place the link was last time, which is the whole efficiency good navigation is supposed to buy. Reshuffled navigation takes that back on every page. For a screen reader user moving through the page in order, and for a low-vision user reading a magnified strip of it, position is the thing that was learned. Relearning it page by page is a tax the site charges for nothing.
Who this rule protects
Screen reader users move through a page in sequence, so a link that has moved is a link they now have to hunt for. People with low vision using magnification see a small window of the screen at a time and rely on the layout holding still. Users with cognitive and intellectual disabilities depend on the routine staying put. And sighted users with no disability at all navigate by spatial memory too, which is why this one turns up in usability testing as well as in audits.
How to check it yourself
- Pick several page types that genuinely belong together, such as home, category and product, and list the navigation links on each in the order they appear in the source.
- Compare the lists. Items added or removed are fine. An item that has moved past another item is the failure.
- Include the mechanisms that are not menus. The search field, the skip link, the breadcrumb trail and the footer links are all in scope.
- Treat checkout, a subdomain blog and each language version as their own set, and check each set against itself rather than against the others.
- Check the layout as well as the source order, since this rule's intent covers both, and a search box that moves from the header into a sidebar has usually moved in the source too.
Failures we see most often
- The main menu lists its items in one order on category pages and another on article pages inside the same set, so what a user learned on one stops working on the other.
- The search box sits at the top of the header on most templates and drops into a sidebar on a few, with nothing to explain the change.
- A new link is added in the middle of the menu on some templates and at the end on others, which moves everything after it.
- The skip link is the first thing on most pages and the third thing on templates a different team built, so keyboard users cannot rely on one press to reach it.
Who this one is for
Read from this rule's own note above, so the grouping and the note cannot disagree.
- Blind and screen reader userspeople who cannot see the screen
- Low visionpeople who can see the screen but not easily
- Cognitive and learningpeople for whom the difficulty is understanding, remembering, or staying with it
How to fix it
- Render navigation from one shared component on every template, so there is exactly one place the order is defined and drift has nowhere to start.
- Add new items at the end of the existing order rather than slotting them into the middle. The rule allows insertion, and putting the insertion last keeps everything else where it was.
- Keep the pattern rather than the position. Navigation at the end of every page is a legitimate design under this rule, as long as it is at the end of every page. W3C's own example of that design puts a skip-to-navigation link at the top as well, which is worth copying even though this rule does not demand it.
- Where a set genuinely differs, such as a checkout with its own template, keep it consistent within itself. It does not have to match the shop, and it does have to match its own other steps.
Step-by-step fix guides (4)
Passes vs. fails
Passes
One header component renders everywhere in the set, so Pricing is the third link on every page a user can tab into it from.
Fails
Pricing is the third link in the header on the homepage and the fifth on category pages, because two teams shipped two headers, so the count a keyboard user learned is wrong half the time.
In audits and lawsuits
A finding here is almost always template drift, where page types shipped different header builds over the years and nobody diffed them. We compare navigation across every audited template and name the ones that moved. Before we raise it we ask which set of pages we are in, because the rule only reaches pages that share a purpose and an author. A checkout with its own stripped template is a separate set. A blog on a subdomain with its own navigation is a separate set. Different language versions are different sets. Getting that boundary right is what stops a finding turning into an argument. No automated rule covers this criterion, so the diffing is done by hand.