In short
Your menus, footer and breadcrumbs are the internal links that appear on every page, so they decide which pages Google finds first and which ones look important. Build them from plain <a href> links in the HTML, keep the same links on mobile and desktop, and give the trail on each page clear names. Add BreadcrumbList structured data that matches the visible trail, and remember that Google currently shows breadcrumbs in results on desktop only.
Why navigation matters for users and for Google
Navigation answers two questions at once. For a visitor it shows where they are and where they can go next. For Google it is the largest set of internal links on your site, repeated on every template. Google finds new pages mostly by following links: according to its SEO Starter Guide, “the vast majority of the new pages Google finds every day are through links”. A page that no menu, category or breadcrumb links to is hard to find and easy to overlook.
Navigation also tells Google what you consider important. Google's ecommerce guide puts it plainly: “Google can use information such as the number of links it needs to follow to reach a page and the number of links to a page to infer the relative importance of a page over the rest of your site.” A category linked from the main menu on every page is one click from anywhere. A product that can only be reached through four levels of sub-categories is not.
This lesson covers the navigation elements themselves. How to plan hubs and click depth is in the lesson Structure from keywords: hubs and depth, and how to find pages that nothing links to is in Internal linking and orphan pages.
| Pattern | Main job | What it should link to | Typical SEO risk |
|---|---|---|---|
| Main menu | Get users to the main sections | Top categories, hubs, key service pages | Vague labels, links built with JavaScript events |
| Mega menu | Expose sub-categories of large sites | Categories and sub-categories that matter | Hundreds of links on every page, menu loaded only on hover |
| Footer | Supporting and trust pages | About, contact, legal, delivery, a few top categories | Blocks of keyword-stuffed city or service links |
| Mobile menu | Same navigation on small screens | The same important links as desktop | Categories dropped to save space |
| Breadcrumbs | Show where the page sits | Each parent level up to the top | Trail or markup that does not match the hierarchy |
| Faceted menu | Filter a list by attributes | Filter URLs, only some of them indexable | Endless filter combinations crawled as URLs |
What Google officially says
“Navigation structures on your site (such as menus and cross page links) can impact Google's understanding of your site structure.”
Google Search Central — Help Google understand your ecommerce website structure“Generally, Google can only crawl your link if it's an <a> HTML element (also known as anchor element) with an href attribute.”
Google Search Central — Link best practices for Google“A breadcrumb trail on a page indicates the page's position in the site hierarchy, and it may help users understand and explore a site effectively.”
Google Search Central — Breadcrumb (BreadcrumbList) structured dataA few more statements from the same pages shape everything below. Each is a direct quote:
- For shops, Google suggests you “add links from menus to category pages, from category pages to sub-category pages, and finally from sub-category pages to all product pages.”
- “Googlebot generally doesn't try to submit searches into a search box as part of crawling a site.” Your search box is not a substitute for navigation.
- “Don't use JavaScript events on other HTML DOM elements for navigation.”
- “As a general rule, the more links a page has to it within a site, the higher the relative importance of the page to other pages on your site.”
- “Every page you care about should have a link from at least one other page on your site.”
- “We recommend providing breadcrumbs that represent a typical user path to a page, instead of mirroring the URL structure.”
The main menu
The main menu is the strongest set of internal links you have, because it sits on every page. Use it for the pages that should carry the most weight: your top categories, your hub pages and your main services. Product pages, blog posts and campaign pages rarely belong in it.
What to include
- Top-level sections that map to real search demand, such as
/running-shoes/or/web-design/. - Hub pages that link down to everything in their section. The menu links to the hub; the hub links to the details.
- Key conversion pages such as pricing or contact, if users look for them.
Labels
A menu label is anchor text. Use short, descriptive labels in the words people actually use: Running shoes, not Collections; Web design, not What we do. Google's link guidance asks for anchor text that is “descriptive, reasonably concise, and relevant to the page that it's on and to the page it links to.” Keep the label the same as the H1 of the page it links to, or close to it.
Depth and size
There is no official limit. Google says: “There's no magical ideal number of links a given page should contain. However, if you think it's too much, then it probably is.” In practice, a handful of top-level items is easier to scan than twenty, and one or two dropdown levels are usually enough. A common rule of thumb is that important pages should be reachable within a few clicks of the home page. It is a planning aid, not a Google rule.
Crawlable markup
Every menu item should be a real link with a real URL. Google's ecommerce guide says: “To ensure Googlebot correctly locates the link, use <a href> tags when creating links to other content.” JavaScript is allowed, as long as the result is normal HTML: “Links are also crawlable when you use JavaScript to insert them into a page dynamically as long as it uses the HTML markup shown above.”
✕ Not reliably crawled
<nav>
<div onclick="go('/shoes/')">Shoes</div>
<span href="/boots/">Boots</span>
<a href="javascript:goTo('sale')">Sale</a>
<a href="/bags/"><img alt=""></a>
</nav>
- No
<a href>at all hrefon the wrong element- A
javascript:pseudo-URL - Image link with no anchor text
✓ Crawlable
<nav aria-label="Main">
<ul>
<li><a href="/shoes/">Shoes</a></li>
<li><a href="/boots/">Boots</a></li>
<li><a href="/sale/">Sale</a></li>
</ul>
</nav>
- Every item is
<a href> - Real, resolvable URLs
- Visible text as the anchor
- Present in the HTML Google renders
href for Google to read.Mega menus
A mega menu is a large dropdown panel that shows several columns of links at once. Large shops, publishers and service companies with many sub-categories use it so that visitors can jump from any page straight to a deep category.
Pros
- Deep categories become one click away from every page, which reduces click depth.
- The site's structure is visible at a glance, which helps users who browse rather than search.
- Grouping links under headings gives each link context.
Cons
- Hundreds of links on every page make every linked page look equally important, so your real priorities are harder to read.
- Too many choices overwhelm visitors, especially on mobile.
- A huge menu adds HTML weight to every page.
- Menus that fetch their links with JavaScript only when someone hovers are not in the HTML at all, so Google never sees those links.
Treat Google's “if you think it's too much, then it probably is” as your test. As practice: include the categories and sub-categories that have search demand or business value, leave out tags, filters and minor pages, and give each column a heading that is itself a link to the parent category. Render the whole menu in the server HTML; hiding it with CSS until hover is fine, because the links are still in the page.
Footer links
The footer is the second set of links repeated on every page. It is the natural place for pages that users expect to find but that do not need a slot in the main menu:
- About, contact, careers.
- Privacy policy, terms, cookie settings.
- Delivery, returns, payment and warranty pages on shops.
- A short list of top categories or services, if they help users.
What does not belong: long blocks of keyword-anchored links such as plumber London, plumber Leeds, plumber Bristol for every city you can name. These links help nobody, look manipulative and, if the target pages are thin, point Google at your weakest content. If you serve many locations, link to a single locations hub and let that page link to each location.
Mobile menus
Google indexes the mobile version of your pages. If the mobile menu contains fewer links than the desktop menu, those links are missing from the version Google uses. The full rules are in the lesson Mobile-first indexing; for navigation they come down to three points:
- Keep parity. The categories and hubs linked on desktop should also be linked on mobile, whether in the menu, the page body or the footer.
- A hamburger menu is fine. Links inside a collapsed menu still count, as long as they are in the HTML when the page loads.
- Do not load the menu on tap. A menu that fetches its links only after the visitor opens it is invisible to Google. Check the rendered HTML with URL Inspection.
On responsive sites the usual failure is a CSS breakpoint or a separate mobile component that silently drops menu items. On sites with separate mobile templates, compare the two menus link by link.
Faceted and filter menus
Filter menus on category pages (size, colour, price, brand) are navigation too, but every filter click can create a new URL, and combinations multiply quickly. A few filter pages deserve to be indexable landing pages; most do not need to be crawled at all. How to choose, and which controls to use, is covered in depth in the lesson Pagination and faceted navigation. For your main menu, the rule is simple: link to category and landing pages with clean URLs, never to random filter combinations.
Breadcrumbs
A breadcrumb trail is the short line of links, usually above the H1, that shows where the page sits: Books › Science Fiction › Award Winners. Google describes its purpose: “A user can navigate all the way up in the site hierarchy, one level at a time, by starting from the last breadcrumb in the breadcrumb trail.” For SEO, the trail adds a link from every page to each of its parents, which supports your category and hub pages.
Location-based, not history-based
The trail should show the page's place in your structure, not the pages a visitor clicked through. A history trail changes with every visit, so it is useless to Google and confusing to people who arrive from search.
User path, not URL folders
Google recommends “breadcrumbs that represent a typical user path to a page, instead of mirroring the URL structure.” If your product URL is /p/12345, the trail can still be Shoes › Running shoes › Trail shoes. Google also notes that it “generally doesn't look at the structure of URLs to work out the structure of a site”; it reads the links.
Placement and format
- Place the trail near the top of the main content, above the H1, on every page below the home page.
- Start with the home page or the top section, end with the current page. The last item is usually plain text, not a link.
- Use the same names as the H1 or menu label of each parent page, so the trail, the menu and the pages agree.
- Link only to pages that return 200 and are indexable. A breadcrumb that points to a redirect or a
noindexpage wastes the link.
Pages with several paths
A product can sit in more than one category, for example Shoes › Trail shoes and Sale. Google allows this: “If there are multiple ways to navigate to a page on your site, you can specify multiple breadcrumb trails for a single page.” As practice, pick one primary category for the visible trail so every visitor sees the same path, and add a second trail only if it really reflects how people browse.
BreadcrumbList structured data
The visible trail is for people. BreadcrumbList structured data describes the same trail in a format Google can read reliably. Google's rules: “To specify breadcrumbs, define a BreadcrumbList that contains at least two ListItems.” And: “You must include the required properties for your content to be eligible for display with breadcrumbs.” JSON-LD is the easiest format to maintain; microdata and RDFa are also supported. General structured data practice is in the lesson Structured data in 2026.
Here is the full markup for that page, based on Google's own example. It goes in the page's HTML, usually in the <head>:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Books",
"item": "https://example.com/books"
},{
"@type": "ListItem",
"position": 2,
"name": "Science Fiction",
"item": "https://example.com/books/sciencefiction"
},{
"@type": "ListItem",
"position": 3,
"name": "Award Winners"
}]
}
</script>
Required properties, as Google documents them
Google lists only required properties for this type; there are no recommended ones.
| Type | Property | Google's definition |
|---|---|---|
BreadcrumbList | itemListElement (ListItem) | “An array of breadcrumbs listed in a specific order.” |
ListItem | item (URL or a subtype of Thing) | “The URL to the webpage that represents the breadcrumb.” In JSON-LD you can give a plain URL or an object with @id. |
ListItem | name (Text) | “The title of the breadcrumb displayed for the user.” |
ListItem | position (Integer) | “The position of the breadcrumb in the breadcrumb trail. Position 1 signifies the beginning of the trail.” |
Two exceptions are written into the definitions. For the last crumb: “If the breadcrumb is the last item in the breadcrumb trail, item is not required. If item isn't included for the last item, Google uses the URL of the containing page.” For name: “If you're using a Thing with a name instead of a URL to specify item, then name is not required.” Google also notes: “It is not required to include a breadcrumb ListItem for the top level path (your site's domain or host name), nor for the page itself.”
Several trails on one page
For a page with two paths, the JSON-LD becomes an array of two BreadcrumbList objects, one per trail. Shortened:
[{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [ /* Books › Science Fiction › Award Winners */ ]
},{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [ /* Literature › Award Winners */ ]
}]
Rules to follow
- The markup describes the trail the visitor sees: same names, same order, same URLs. Google's guidelines page states: “You must follow these guidelines to be eligible to appear with breadcrumbs in Google Search.”
- Use the canonical, absolute URL of each parent page in
item. - Remove old markup: “Data-vocabulary.org markup is no longer eligible for Google rich result features.”
- Generate the markup from the same template data as the visible trail, so the two can never drift apart.
How breadcrumbs appear in Google results
In a search result, the breadcrumb is the line next to the site name that shows the path to the page, for example example.com › books › sciencefiction. Google explains its role: “Google Search uses breadcrumb markup in the body of a web page to categorize the information from the page in search results.”
Where it appears: the breadcrumb documentation currently says “This feature is available on desktop in all regions and languages where Google Search is available.” On other surfaces the results may show only the domain. The markup costs nothing to keep, so implement it anyway.
You do not have to use markup to get a breadcrumb line. The SEO Starter Guide says: “Parts of the URL can be displayed in search results as breadcrumbs, so users can also use the URLs to understand whether a result will be useful for them.” And: “Google learns breadcrumbs automatically based on the words in the URL, but you can also influence them with structured data if you like a technical challenge.” This is one reason readable URLs help. Do not expect a ranking boost from it, though: Google says keywords in the domain or URL path “alone have hardly any effect beyond appearing in breadcrumbs.”
Finally, valid markup is not a promise. “Google does not guarantee that features that consume structured data will show up in search results.”
Testing your breadcrumbs
- Rich Results Test. Paste a URL or code. Google's instruction: “Validate your code using the Rich Results Test and fix any critical errors.” Non-critical warnings are worth fixing but do not block eligibility.
- URL Inspection in Search Console. Test the live URL and look at the rendered HTML. Check that the menu links, the visible trail and the JSON-LD are all there, especially if JavaScript builds them.
- Breadcrumbs report. After Google has indexed your pages, the breadcrumbs rich result report in Search Console lists valid and invalid items. A sudden rise in invalid items usually means a template change broke the markup.
- Schema Markup Validator. Useful for general schema.org syntax, but it does not tell you about Google's eligibility rules.
- Crawl the site. A crawler shows which URLs your menus and breadcrumbs link to, and whether any of them redirect, return errors or are
noindex.
✓ Do
- Build every menu item as
<a href>with a real URL - Link the main menu to top categories and hubs
- Use short, descriptive labels that match the target page's H1
- Keep the mobile menu as complete as desktop
- Show a location-based breadcrumb above the H1
- Mark up the same trail with
BreadcrumbList - Point menus and breadcrumbs at canonical, indexable URLs
✕ Don't
- Use
divorspanclick handlers as links - Load menu links only on hover or tap
- Put hundreds of links in a mega menu
- Stuff the footer with keyword city or service links
- Rely on site search to reach products
- Mark up a trail that differs from the visible one
- Link to filter combinations from the main menu
Check the links your navigation creates
OurSEO Tools runs a 69-point checklist, including internal linking, and crawls up to 1,000 pages with the status code, canonical and indexability of every URL, so you can spot menu and breadcrumb links that point to redirects, errors or noindex pages.
Common mistakes
- ✕JavaScript-only menusItems built from
divorspanelements with click handlers, or links fetched only after a hover or tap. Google cannot reliably follow them. - ✕Products reachable only through searchGoogle does not type into your search box. Category pages must link to the products.
- ✕Mobile menu with fewer linksGoogle indexes the mobile version, so missing links are missing for Google too.
- ✕Breadcrumbs that do not match the hierarchyA trail that skips levels, shows a different category than the menu, or uses names that differ from the parent pages.
- ✕Markup that differs from the visible trailDifferent names, order or URLs in the JSON-LD than on the page, often because a plugin generates one and the theme the other.
- ✕Wrong positionsPositions that do not start at 1 or skip numbers, or fewer than two ListItems.
- ✕Links to redirects and non-canonical URLsMenu and breadcrumb links that point to old URLs, a different trailing-slash format or
noindexpages. - ✕Overloaded mega menus and footersHundreds of links on every page, including thin location or tag pages.
- ✕Leftover data-vocabulary.org markupThe old vocabulary is no longer eligible. Replace it with schema.org
BreadcrumbList.
FAQ
Are breadcrumbs a ranking factor?
Google does not describe them as one. Their SEO value is the internal links to parent pages, a clearer structure, and a more readable result on desktop.
Do I need BreadcrumbList markup if the trail is visible on the page?
It is not required: Google can learn breadcrumbs from your URLs. Markup lets you influence what Google shows, and it is the documented way to be eligible for breadcrumbs in results.
Should the home page be the first item in the trail?
Showing Home to visitors is common and fine. In the markup it is optional: Google does not require a ListItem for your domain or for the current page.
Why don't my breadcrumbs show in Google on my phone?
Google's documentation says the feature is available on desktop, so on mobile you may see only the domain. Check the breadcrumb markup with the Rich Results Test rather than judging by your phone.
Is a hamburger menu bad for SEO?
No. Links inside a collapsed menu count as long as they are in the HTML. What hurts is removing links from the mobile version or loading them only after a tap.
How many links can a mega menu have?
Google gives no number. Its test is “if you think it's too much, then it probably is.” Keep the categories that have demand or business value and drop the rest.
Sources
- Google Search Central — Breadcrumb (BreadcrumbList) structured data
- Google Search Central — SEO Starter Guide
- Google Search Central — Help Google understand your ecommerce website structure
- Google Search Central — Link best practices for Google
Quotes checked against the official pages on 30 October 2026.