Skip to main content
Pricing

Breadcrumb

Free

A horizontal trail of links showing the user's current location within the site hierarchy. Each item is a navigable link except the last, which represents the current page. Uses an ordered list inside a <nav> landmark for correct semantics and screen reader announcements.

4 variants

Home/Components/Button

Variants

VariantDescriptionWhen to use
DefaultStandard breadcrumb with slash or chevron separators between items.Use on any page more than one level deep in the hierarchy — detail pages, settings sub-pages, nested categories.
With IconsBreadcrumb items paired with small icons for visual context.Use when categories have recognisable icons that aid scanning — folders, settings, dashboards.

Usage Guidelines

Do

Wrap in <nav aria-label="Breadcrumb"> for landmark identification.

Don't

Use breadcrumbs on the home page — there is no trail to show.

Do

Use an <ol> element — breadcrumbs represent an ordered sequence.

Don't

Make the current page item a link — it should be plain text or aria-current.

Do

Mark the last item with aria-current="page" to indicate the current location.

Don't

Use breadcrumbs as the sole navigation — they supplement, not replace, primary nav.

Do

Keep labels short — one or two words matching the page title.

Don't

Add breadcrumbs to single-level sites with no hierarchy.

Code

HTML
<nav class="lex-breadcrumb" aria-label="Breadcrumb">
  <ol class="lex-breadcrumb__list">
    <li class="lex-breadcrumb__item">
      <a href="/" class="lex-breadcrumb__link">Home</a>
      <span class="lex-breadcrumb__separator" aria-hidden="true">/</span>
    </li>
    <li class="lex-breadcrumb__item">
      <a href="/products" class="lex-breadcrumb__link">Products</a>
      <span class="lex-breadcrumb__separator" aria-hidden="true">/</span>
    </li>
    <li class="lex-breadcrumb__item">
      <span class="lex-breadcrumb__current" aria-current="page">Widget Pro</span>
    </li>
  </ol>
</nav>
CSS Custom Properties
.lex-breadcrumb__list {
  display: flex;
  align-items: center;
  gap: var(--lex-space-4);
  list-style: none;
  padding: 0;
  margin: 0;
  font-size: var(--lex-font-size-sm);
}

.lex-breadcrumb__link {
  color: var(--lex-text-muted);
  text-decoration: none;
  transition: color 150ms ease;
}

.lex-breadcrumb__link:hover {
  color: var(--lex-text-default);
  text-decoration: underline;
}

.lex-breadcrumb__current {
  color: var(--lex-text-default);
  font-weight: 500;
}

.lex-breadcrumb__separator {
  color: var(--lex-text-muted);
  user-select: none;
}
React
// Using Lexicon CSS classes with React

export function ProductBreadcrumb() {
  return (
    <Breadcrumb>
      <BreadcrumbItem href="/">Home</BreadcrumbItem>
      <BreadcrumbItem href="/products">Products</BreadcrumbItem>
      <BreadcrumbItem current>Widget Pro</BreadcrumbItem>
    </Breadcrumb>
  );
}

Design Tokens

TokenValue (dark)Value (light)CSS property
--lex-breadcrumb-font-sizesize
--lex-breadcrumb-colorcolor
--lex-breadcrumb-separator-colorcolor
--lex-breadcrumb-gapgap

Accessibility

  • Wrap in <nav aria-label="Breadcrumb"> — this creates a navigation landmark screen readers can identify.
  • Use an <ol> element because breadcrumbs represent an ordered hierarchical path.
  • Separators must have aria-hidden="true" so screen readers skip them.
  • The current page item uses aria-current="page" and is not a link.
  • Screen readers announce the list structure, giving users context like "item 2 of 4".

Keyboard Interactions

TabMoves focus to the next breadcrumb link.
EnterFollows the focused breadcrumb link.