# Menu-only sites with no search or site map

Source: https://easeweb.dev/learn/multiple-ways
Topics: Menus and navigation > There is more than one way to find a page (WCAG 2.4.5)
The fix: Give every page a second way in besides the menu. Either add a site search to the header that finds every page, or link a site map from every page's footer, or link related pages to each other so every page is reached from more than one place.
Test with: keyboard, screen reader
References: https://www.w3.org/WAI/WCAG22/Understanding/multiple-ways.html https://www.w3.org/WAI/WCAG22/Techniques/general/G161 https://www.w3.org/WAI/WCAG22/Techniques/general/G63 https://www.w3.org/WAI/WCAG22/Techniques/general/G125 https://www.w3.org/WAI/WCAG22/Techniques/general/G126 https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/search https://www.w3.org/WAI/ARIA/apg/patterns/landmarks/examples/search.html

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.

## What happens

A homeware shop sells around 300 things, filed in its menu under Shop: Kitchen, Table, Bath and Bedroom, each opening into its own categories. Someone who wants linen napkins tries Kitchen, because the linen tea towels are there, then Bedroom, because that is where the linen sheets are. The napkins are under Table, Linen. There is no search box in the header, and the footer has Delivery, Returns and Contact us, but no site map. The home page shows a few featured products, but not the napkins. The menu is the only way to them, and to every other product, category, care guide and policy page.

## Why it fails

Success criterion 2.4.5, Multiple Ways, at Level AA, asks for more than one way to locate a web page within a set of pages. W3C's sufficient techniques name the ways, of which a site needs two or more: links to related pages, a table of contents, a site map, a site search, a list of links to all pages, or, on a very small site, links to every page from the home page. Here every page has exactly one way in, the menu, so every page fails. The featured products on the home page are a second way only to those few products, not to the rest.

The criterion has one exception: a page that is a step in a process, or its result, such as the delivery step of checkout or the order confirmation, doesn't need a second way in. Product pages, categories and help pages are not steps; anyone can arrive at them from anywhere.

## Who is affected

A menu is one person's way of sorting things, and it works only for people who sort them the same way. Very small sites need less: when the home page links to all three or four pages, W3C says links to and from the home page can be enough.

## What automation and AI miss

The failure is an absence, and no page shows it: each page has a working menu, so axe and other single-page scanners find nothing, and none of their rules covers 2.4.5. EaseWeb's audit looks across the pages of a run, and when none of them has a site search or a link to a site map, it raises a review lead, not a finding: the second way may be links between related pages, a list of every page, or a search the run didn't reach, and only a person can tell whether those reach every page. Whether a search actually finds things by the words people use is for a person to try. A code assistant asked to "improve the navigation" may add more levels to the menu, which is still one way.

## Before: a menu and nothing else

```html
<header class="site-header">
  <a href="/" class="logo">Fernhill</a>
  <nav aria-label="Main">
    <ul>
      <li>
        <button type="button" aria-expanded="false"
          aria-controls="menu-shop">Shop</button>
        <ul id="menu-shop" hidden>
          <li><a href="/shop/kitchen">Kitchen</a></li>
          <li><a href="/shop/table">Table</a></li>
          <li><a href="/shop/bath">Bath</a></li>
          <li><a href="/shop/bedroom">Bedroom</a></li>
        </ul>
      </li>
      <li><a href="/sale">Sale</a></li>
      <li><a href="/journal">Journal</a></li>
      <li><a href="/about">About</a></li>
    </ul>
  </nav>
  <a href="/basket">Basket</a>
</header>
…
<footer>
  <a href="/delivery">Delivery</a>
  <a href="/returns">Returns</a>
  <a href="/contact">Contact us</a>
</footer>
```

The menu itself is well built, but it is the only way to any page. Someone who doesn't know that the shop files napkins under Table can only open each category in turn until they find them.

## After: a site search in the header

```html
<header class="site-header">
  <a href="/" class="logo">Fernhill</a>
  <nav aria-label="Main">
    …
  </nav>
  <search class="site-search">
    <form action="/search" method="get">
      <label for="site-search">Search the shop</label>
      <input id="site-search" name="q" type="search">
      <button type="submit">Search</button>
    </form>
  </search>
  <a href="/basket">Basket</a>
</header>
```

The search sits in the shared header, so it is on every page in the same place, and the `search` element makes it a search landmark that screen reader users can jump to. With the menu, it gives every page two ways in. It works only as far as the results do: it has to find every product, category, care guide and policy page by its title, and by the words visitors use for it.

## After: a site map, linked from every page

```html
<footer>
  <a href="/delivery">Delivery</a>
  <a href="/returns">Returns</a>
  <a href="/contact">Contact us</a>
  <a href="/site-map">Site map</a>
</footer>
```

```html site-map.html
<main>
  <h1>Site map</h1>
  <h2><a href="/shop/kitchen">Kitchen</a></h2>
  <ul>
    <li><a href="/shop/kitchen/linen-tea-towel">Linen tea towel</a></li>
    <li><a href="/shop/kitchen/apron">Canvas apron</a></li>
  </ul>
  <h2><a href="/shop/table">Table</a></h2>
  <ul>
    <li><a href="/shop/table/linen-napkins">Linen napkins, set of 4</a></li>
    <li><a href="/shop/table/table-runner">Linen table runner</a></li>
  </ul>
  …
  <h2>Help</h2>
  <ul>
    <li><a href="/delivery">Delivery</a></li>
    <li><a href="/returns">Returns</a></li>
  </ul>
</main>
```

The site map is one plain page of real links under headings, linked from every footer, so it is a second way to every page it lists. It passes only while it stays complete: every page, or every section whose own page links to all of its pages, generated from the same data as the menu so a new page can't be left off. Because it is sorted into the same categories as the menu, it doesn't help someone who can't guess which category holds the napkins; it only lets them see all the categories at once.

## After: links between related pages

```html
<!-- On the linen tea towel's page -->
<section aria-labelledby="goes-with">
  <h2 id="goes-with">Goes well with</h2>
  <ul>
    <li><a href="/shop/table/linen-napkins">Linen napkins, set of 4</a></li>
    <li><a href="/shop/table/table-runner">Linen table runner</a></li>
    <li><a href="/journal/washing-linen">How to wash linen</a></li>
  </ul>
</section>
```

Each product page links to related products and guides, so someone on the tea towel reaches the napkins without the menu. This passes only while every page is linked from at least one other page this way, which takes care: a new product, a policy page or a product nothing relates to is still reachable only through the menu. It also helps only people who start close to what they want.

## Which option to use

All three pass 2.4.5 when they reach every page. Use the site search: it is the only one that lets people find a page by their own word, without knowing how the shop sorts things, and it reaches every page as soon as it is indexed. The site map and related links pass only while they are complete, and both still follow the shop's own categories. They are worth adding beside the search, the site map especially, since it shows the whole shop at once and works without typing.

## Implementation decisions

What makes a search a real second way is what it finds:

- Index every page people might look for: products, categories, care guides, Journal posts and the help pages, not only products.
- Match the words visitors use as well as the shop's own: plurals, common misspellings and synonyms such as serviette for napkin.
- When nothing matches, say so and offer the categories or the site map, rather than an empty page.

The search results page should state how many results it found, in the page title and at the top of the results; if results update as people type, how to announce them is covered in [search and filter results that update without a word](/learn/search-results). Keep the search in the same place on every page, as the header is shared; moving it from page to page breaks consistency, as [navigation menus that change order or names between pages](/learn/consistent-navigation) explains.

A search field that only appears after pressing a magnifier icon is fine, as long as the icon is a button named Search and the field takes focus when it opens.

An XML sitemap for search engines, at `/sitemap.xml`, is not a site map for people. It doesn't count as a way to find a page, and linking to it from the footer doesn't help anyone.

Breadcrumbs show where a page sits and link up the hierarchy, but they don't lead to pages people haven't found yet, so they don't make a second way on their own. Filters and sorting on a category page are part of browsing that category, not a separate way in.

A site of three or four pages, all linked from the home page and from each other's menu, already offers more than one way. This guide is about sites big enough that a menu becomes a puzzle.

## Verify the fix

1. Pick five pages at random, including a product deep in the menu, a care guide and a policy page. Reach each one through the menu, and then a second way without the menu.
2. Use the search with the words a visitor would use: a synonym, a plural, a misspelling and a product's full name. Check the right page comes back, and that a search with no results offers somewhere to go.
3. If the site has a site map, compare it with the menu and the list of pages: every section is there, and every page is listed, or linked from a section page the site map lists. Add a test page and check it appears.
4. With a screen reader, move to the search landmark or open the site map from the footer, and reach a product without opening the menu.

Record the OS, browser and assistive-technology versions, the build, the date, and the actual result of each step. Repeat after any change to the menu, the search index or the site's sections.

## Limits

This is a starting pattern, not a guarantee for every site. 2.4.5 asks for more than one way, not for good ones: a search that finds nothing useful technically passes, and still fails the people it is for. Steps in a process, such as checkout, are exempt, so don't put a search into the payment step to satisfy it. Test the whole site with the people who will use it, especially people who find menus hard.

---

Get this guide in your coding agent: MCP https://easeweb.dev/mcp (setup at https://easeweb.dev/services/developers)
