HTML Breadcrumbs: Simple Steps to Guide Users and Improve SEO


Run a Crawl Now

Breadcrumbs: a clear route through your website

A breadcrumb is a short trail that shows where the current page sits within a website. A typical trail might read Home > Guides > User Experience > Breadcrumbs for Beginners. The earlier items link to broader parent sections, while the final item identifies the page the visitor is viewing.

Good breadcrumbs reflect a stable content hierarchy, not every click a visitor made before arriving. They can help people move to a broader category, add useful internal links, and make a page eligible for breadcrumb presentation in Google desktop results when valid structured data is supplied. They do not guarantee higher rankings, more clicks, lower bounce rates, or more conversions.

Quickfire Summary

  • Use breadcrumbs when a page has meaningful parent levels. Ecommerce categories, documentation, article libraries, directories, and multi-level service sites are common examples.
  • Prefer a location-based trail. Show the page's place in the site hierarchy rather than replaying browser history or a visitor's session path.
  • Use semantic HTML. Put the trail in a labelled <nav>, structure it as an ordered list, link the parent pages, and identify the current page.
  • Treat structured data as an enhancement. Visible HTML breadcrumbs work without schema. BreadcrumbList markup can make the page eligible for Google's breadcrumb treatment on desktop.
  • Test the whole implementation. Correct hierarchy, working links, mobile layout, accessibility, and valid structured data all matter.

What breadcrumbs do—and what they do not do

Breadcrumbs are secondary navigation. They are especially useful when someone lands directly on a deep page from search, an email, a shared link, or an external website and has not seen the route through your main navigation.

A well-designed trail can:

  • Provide orientation. The visitor can see the page's wider section and subject area at a glance.
  • Offer a fast route upwards. Each parent link gives the visitor a sensible way to broaden their journey without repeatedly using the Back button.
  • Reinforce your information architecture. Consistent links between child and parent pages help users and crawlers discover how related sections fit together.
  • Support search-result presentation. Correct breadcrumb structured data can make a page eligible for a breadcrumb path in Google desktop results.

Breadcrumbs do not replace the main menu, repair a confusing hierarchy, or create a ranking advantage by themselves. If you cannot identify a page's genuine parent section, the problem is probably the underlying architecture. In that case, start by planning a clearer site structure rather than forcing a breadcrumb trail onto it.

When should you use breadcrumbs?

They are usually worth adding when:

  • a page sits at least two meaningful levels below a main section;
  • visitors commonly arrive on product, article, documentation, location, or service-detail pages;
  • the parent categories are useful destinations in their own right;
  • the same hierarchy can be applied consistently across a page template.

They may add little value when:

  • the site is genuinely flat and every important page already appears in a concise primary menu;
  • the only possible trail is Home > Current Page and the Home link offers no meaningful orientation;
  • the interface is a staged process, such as checkout or onboarding, where a progress indicator is more useful than a site hierarchy;
  • the proposed trail would expose internal system labels, search states, or temporary session steps rather than understandable parent pages.

Choose hierarchy over browsing history

For most content and commercial websites, location-based breadcrumbs are the safest default. They should answer: Where does this page belong? A path-based trail answers a different question—How did this particular visitor get here?—and can change depending on entry point, making the navigation inconsistent.

Google likewise recommends using a typical user path rather than simply copying the URL structure. Its current breadcrumb structured data guidance also notes that the site root and current page are not mandatory items in the structured-data trail.

Be careful with ecommerce filters

Selected attributes such as colour, size, price, or availability are not automatically hierarchy levels. For example, a URL containing ?colour=blue&size=10 does not mean the breadcrumb should become Home > Blue > Size 10. Keep stable categories in the breadcrumb and present temporary filters as filter controls or removable chips. Only treat a filtered state as a hierarchy level when it is a deliberate, durable landing page with a clear role in the site structure.

How to add breadcrumbs step by step

  1. Map the intended hierarchy

    Choose the parent pages a visitor would reasonably use to move from the current page towards a broader section. Use human-readable labels, not raw folder names, database categories, or URL parameters.

  2. Add a semantic HTML trail

    Use a labelled navigation landmark and an ordered list. Link the ancestor pages and leave the current page as text. The following example is suitable as a starting point:

    <nav aria-label="Breadcrumb">
      <ol class="breadcrumb">
        <li><a href="/">Home</a></li>
        <li><a href="/guides/">Guides</a></li>
        <li><a href="/guides/user-experience/">User experience</a></li>
        <li><span aria-current="page">Breadcrumbs for beginners</span></li>
      </ol>
    </nav>

    If your design links the current page, place aria-current="page" on that link. When the current page is plain text, the attribute is optional under the W3C pattern, but including it on the current-page element makes the state explicit.

  3. Style it without turning separators into noisy content

    Allow the trail to wrap on small screens and create separators decoratively with CSS. This example uses borders rather than inserting a spoken > character between every item:

    .breadcrumb {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: 0.25rem;
      list-style: none;
      margin: 0;
      padding: 0;
    }
    
    .breadcrumb li {
      display: flex;
      align-items: center;
      min-width: 0;
      overflow-wrap: anywhere;
    }
    
    .breadcrumb li + li::before {
      content: "";
      width: 0.45em;
      height: 0.45em;
      margin: 0 0.65em 0 0.35em;
      border-top: 1px solid currentColor;
      border-right: 1px solid currentColor;
      transform: rotate(45deg);
    }
    
    .breadcrumb a:focus-visible {
      outline: 2px solid currentColor;
      outline-offset: 3px;
    }
  4. Generate the trail from the content model

    In a CMS or application, use the page's assigned section, category, or parent relationship. Do not derive the trail blindly from URL segments: URLs may contain technical folders, campaign paths, pagination, language codes, or parameters that are not useful navigation labels.

    Every linked ancestor should be a real, useful destination. If a proposed parent page does not exist, either create an appropriate landing page or simplify the trail rather than linking to a dead end.

  5. Add BreadcrumbList structured data where appropriate

    Structured data is not required for the visible navigation to work. It provides a machine-readable version of the hierarchy and can make a page eligible for Google's desktop breadcrumb treatment. Keep it consistent with the breadcrumb users can see.

    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://www.example.com/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Guides",
          "item": "https://www.example.com/guides/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Breadcrumbs for beginners"
        }
      ]
    }
    </script>

    The final item's item URL is optional in Google's documented format; when omitted, Google uses the containing page's URL. Use consecutive integer positions beginning with 1.

  6. Roll out carefully

    Test a small set of representative templates first: a shallow page, a deep page, a long-title page, a mobile viewport, and any page that can belong to more than one section. Once the output is correct, apply the same rules consistently across the relevant template family.

Accessibility and mobile details that are easy to miss

  • Label the navigation landmark. A <nav aria-label="Breadcrumb"> lets assistive-technology users distinguish this trail from the main navigation and other menus.
  • Use an ordered list. The sequence communicates a hierarchy from broader to more specific pages.
  • Identify the current page. Use aria-current="page" when the current item is linked, or place it on the current-page text as shown above.
  • Keep separators decorative. A visual slash or chevron does not need to be announced between every link. The W3C breadcrumb pattern recommends a labelled navigation region and describes CSS-generated visual separation.
  • Preserve visible focus and contrast. Breadcrumb links must remain recognisable and operable with a keyboard, not just on hover.
  • Let long trails wrap. Do not clip the current page or force the entire trail into a narrow horizontal strip. On small screens, wrapping to a second line is usually clearer than shrinking text until it becomes difficult to read.
  • Shorten labels only when meaning survives. Replace unnecessarily long titles with concise navigation labels, but avoid ambiguous truncation such as several items all reading “More…” or “Category…”.

Example: keep filters out of a stable breadcrumb trail

Imagine an ecommerce visitor reaches a climbing-rose product after searching, choosing a pink colour filter, selecting “in stock”, and moving to page two of the results.

Unhelpful session-based trail

Home > Search > Pink > In stock > Page 2 > Climbing rose

This changes with the visitor's route, mixes controls with categories, and gives “Search” or “Page 2” more prominence than the product's actual place in the catalogue.

Stable location-based trail

Home > Garden > Plants > Roses > Climbing rose

The second trail remains useful whether the visitor arrived through search, a category page, an advert, or a saved link. “Pink” and “In stock” can remain visible as selected filters without becoming permanent hierarchy levels.

How to verify breadcrumbs after launch

  1. Check the hierarchy. Confirm that each trail represents the page's intended location, not merely its URL or the route used during testing.
  2. Follow every parent link. Each link should reach the correct live destination without a broken response or an avoidable chain of redirects.
  3. Check the current item. Its label should match the page, and it should not point accidentally to a duplicate, filtered, or staging URL.
  4. Test responsive behaviour. Review long and deeply nested trails at narrow widths. Nothing important should be clipped or pushed outside the viewport.
  5. Test keyboard and assistive-technology output. Make sure focus remains visible and the trail is announced as breadcrumb navigation with the current page identified.
  6. Validate structured data. Use Google's Rich Results Test for Google-specific eligibility and the Schema Markup Validator for general Schema.org syntax.
  7. Monitor the deployed templates. After Google recrawls the pages, review the breadcrumb enhancement report in Search Console and investigate any increase in invalid items.

Passing validation makes the markup eligible; it does not guarantee a particular search-result appearance. Since January 2025, Google has stopped showing breadcrumb paths in mobile results and displays the domain instead, while breadcrumb presentation remains supported on desktop. Google's mobile visible-URL announcement explains that distinction.

Quick reference: ready-to-publish checklist

  • The trail reflects a stable, user-facing hierarchy.
  • Every ancestor is a useful destination with a crawlable HTML link.
  • The breadcrumb sits in a labelled navigation landmark and uses an ordered list.
  • The current page is clearly identified and is not presented as an ordinary parent link.
  • Labels are concise, understandable, and consistent across templates.
  • Separators are decorative rather than repeated as noisy accessible text.
  • The trail wraps cleanly on mobile and keeps visible keyboard focus.
  • Any BreadcrumbList data matches the visible trail and uses valid positions and URLs.
  • Rich-result and schema validation pass without critical errors.
  • No claim is made that breadcrumbs alone will improve rankings, click-through rate, engagement, or conversions.

For a small, flat site, the correct decision may be not to add breadcrumbs. For a deeper site, a short and consistent hierarchy is usually more useful than an exhaustive trail containing every possible category, filter, or navigation step.

Ready to Get More Out of ScanMySEO?

Whether you're just getting started or already have scans to review, take the next step towards boosting your search presence.

Register for Free
Hansel McKoy

Hey there, I'm Hansel, the founder of ScanMySEO. I've spent over ten years helping global brands boost their digital presence through technical SEO and growth marketing. With ScanMySEO, I've made it easy for anyone to perform powerful, AI-driven SEO audits and get actionable insights quickly. I'm passionate about making SEO accessible and effective for everyone. Thanks for checking out this article!

Hansel McKoy

Founder, ScanMySEO


Get More Out of ScanMySEO