Skip to content

shadcn.io is an independent project built on shadcn/ui

Free

Breadcrumb with Bullet Separator (Standard) for React

A breadcrumb reading Home, Components, and Breadcrumb, with a bullet character between the crumbs.

The trail reads Home, Components, then Breadcrumb as the current page. A bullet character sits between the crumbs. The last crumb is not a link.

Use it when a chevron feels too heavy and a bullet is enough. A path people think of as folders wants a slash instead. Site sections that are not a path belong in a Navigation Menu. In React, Base UI does not build the trail.

Preview

Preview width

Installation

Sign in to get your install command
Free with an account. It carries your token, so the CLI installs everything in one go.

Anatomy

Breadcrumb anatomy: link, ellipsis, separator, item, page

Usage

<Breadcrumb>
  <BreadcrumbList>
    <BreadcrumbItem>
      <BreadcrumbLink render={<Link href="/" />}>Home</BreadcrumbLink>
    </BreadcrumbItem>
    <BreadcrumbSeparator>•</BreadcrumbSeparator>
    <BreadcrumbItem>
      <BreadcrumbLink render={<Link href="/components" />}>
        Components
      </BreadcrumbLink>
    </BreadcrumbItem>
    <BreadcrumbSeparator>•</BreadcrumbSeparator>
    <BreadcrumbItem>
      <BreadcrumbPage>Breadcrumb</BreadcrumbPage>
    </BreadcrumbItem>
  </BreadcrumbList>
</Breadcrumb>

FAQ

How is the bullet drawn?

The character • is the child of BreadcrumbSeparator, in place of the default chevron. The separator is hidden from assistive tech.

How is the trail announced?

Breadcrumb renders a nav labeled breadcrumb around an ordered list, so screen readers announce a breadcrumb landmark and the number of items. Home and Components are read as links.

Where does the space around the bullet come from?

From the breadcrumb list's gap. The demo adds no spacing classes of its own, so the bullet sits where a chevron would.

Can I use another character?

Yes. Any text or icon works in its place, such as ·, | or a Lucide icon. Use one mark across the whole site.

Why isn't the last crumb a link?

BreadcrumbPage is the page you are on. It renders text with aria-current="page", so it is announced as the current page and has nowhere to go.

How do the links go through my router?

BreadcrumbLink takes the link through render, as in render={<Link href="/" />} with the Next.js Link.

API Reference

Breadcrumb

No extra props in this demo. The rest is on the Breadcrumb page.