Skip to content
easeweb
Search topics

Navigation landmarks that all sound the same

A shop page has three nav elements, two with no name and one named “Footer navigation”, so a screen reader's landmark list reads “navigation” twice and then “Footer navigation navigation”.

WCAG 2.2
SC 1.3.1A
Required by
Section 508 · EN 301 549 (EU)
Broken <nav>
The accessibility problem illustrated: Three entries, no way to tell them apart.
01

The problem

Screen reader users can't tell the page's navigation areas apart, so they can't jump straight to the one they need.

02

Try it

Use the landmark list to reach the help links.

The list shows what a screen reader lists for this page. Choose an entry to jump to it. Can you tell which one holds Returns before you try?

Broken Can you fix this?

New in: kitchen linen

12 products

Screen reader’s landmarks list:

A recreated demo. The broken version is intentionally inaccessible.

03

The fix

Name each repeated landmark after what it holds, from its visible heading where it has one.

  1. 1Every landmark role used more than once gets a unique name on each instance.
  2. 2Name a landmark after what it holds, in a word or two, without the role.
  3. 3Take the name from a visible heading with aria-labelledby where there is one.
Before Navs with no name, and one that repeats its role
<header>  <a href="/" class="logo">Fern & Fold</a>  <nav>    <ul>      <li><a href="/shop">Shop</a></li>      <li><a href="/journal">Journal</a></li>      <li><a href="/about">About</a></li>    </ul>  </nav></header><div class="layout">  <nav class="sidebar">    <h2>Categories</h2>    <ul>…Kitchen, Bags, Stationery…</ul>  </nav>  <main>…</main></div><footer>  <nav aria-label="Footer navigation">    <h2>Help</h2>    <ul>…Delivery, Returns, Contact…</ul>  </nav></footer>
After

An aria-label on each nav

<header>  <a href="/" class="logo">Fern & Fold</a>  <nav aria-label="Main">    <ul>…Shop, Journal, About…</ul>  </nav></header><div class="layout">  <nav class="sidebar" aria-label="Categories">    <h2>Categories</h2>    <ul>…Kitchen, Bags, Stationery…</ul>  </nav>  <main>…</main></div><footer>  <nav aria-label="Help">    <h2>Help</h2>    <ul>…Delivery, Returns, Contact…</ul>  </nav></footer>

Fixing this with an AI coding assistant? Get this guide as Markdown

04

Verify the fix

3 checks, no mouse.

Test with: Screen reader

0 of 3 checked

Record the OS, browser and assistive-technology versions, the build, the date, and the actual result of each step. Repeat whenever a navigation is added or a shared layout changes.

Limits

This is a starting pattern, not a guarantee for every application. Paths, class names and the … in the lists are placeholders. Screen readers word the landmark list differently, and some read the role before the name, so listen for the names rather than the exact phrasing. This guide covers naming landmarks, not whether a page has the right landmarks in the first place, or content left outside them. Test the complete journey with your target assistive technology.

This is a recreated teaching example, not a finding about a named client. The code is a starting pattern: test it in your own product. No completed assistive-technology test is claimed here.

Keep this fixed as your code changes.

Turn guides like this into rules your coding agents and CI follow, then have the result retested with a keyboard and screen readers.

How retests work