Breadcrumb
Breadcrumb hierarchically displays the current position within a site, helping users quickly navigate back to parent pages.
3
Sizes
6
Parts
Collapse
Auto Collapse
Pure
React
Playground
Preview
D
Size
Separator
Items
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href="#">Home</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink href="#">Products</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Category</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>Sizes
smFont12px
Icon14px
Gap6px
defaultFont13px
Icon14px
Gap8px
lgFont14px
Icon16px
Gap8px
| Size | Font | Icon | Gap | Preview |
|---|---|---|---|---|
sm | 12px | 14px | 6px | |
default | 13px | 14px | 8px | |
lg | 14px | 16px | 8px |
Features
Auto Collapse
Auto-collapse long paths with maxItems — control display counts with itemsBeforeCollapse / itemsAfterCollapse
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href="#">Home</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbEllipsis />
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Current Page</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>Custom Separator
Any ReactNode as separator — slash, dot, or any custom element
<Breadcrumb separator={<span className="text-text-subtle">/</span>}>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href="#">Home</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink href="#">Products</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Detail</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>Custom Link (asChild)
Compose with Next.js Link or any custom link via asChild — styles are inherited automatically
import Link from 'next/link'
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink asChild>
<Link href="/home">Home</Link>
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink asChild>
<Link href="/products">Products</Link>
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Detail</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>API
Component Structure
Breadcrumb— Radix Slot.List.Item.LinkProps.Page.Separator.Ellipsis
.ListList container.ItemItem wrapper.LinkPropsLink (asChild supported).PageCurrent page (aria-current).SeparatorSeparator.EllipsisEllipsisProps
Breadcrumb
separatorChevronRight iconReactNodeSeparator element between items
size"default""sm" | "default" | "lg"Breadcrumb size
maxItemsundefinednumberMaximum items before collapsing
itemsBeforeCollapseundefinednumberItems to show before the ellipsis
itemsAfterCollapseundefinednumberItems to show after the ellipsis
| Name | Type | Default | Description |
|---|---|---|---|
separator | ReactNode | ChevronRight icon | Separator element between items |
size | "sm" | "default" | "lg" | "default" | Breadcrumb size |
maxItems | number | undefined | Maximum items before collapsing |
itemsBeforeCollapse | number | undefined | Items to show before the ellipsis |
itemsAfterCollapse | number | undefined | Items to show after the ellipsis |
BreadcrumbLink
asChildfalsebooleanCompose with a custom link component (Radix Slot)
hrefundefinedstringLink destination URL
| Name | Type | Default | Description |
|---|---|---|---|
asChild | boolean | false | Compose with a custom link component (Radix Slot) |
href | string | undefined | Link destination URL |
Anatomy
1
2
3
4
Home6
/Components
/
5
BreadcrumbFont
text-smGap
gap-2Icon
icon-xs1
Root
nav container
2
List
ol list
3
Item
Breadcrumb item
4
Link
Clickable link
5
Current
Current page
6
Separator
Separator character
Best Practices
✓
Do
- ✓Accurately reflect the site's hierarchy structure
- ✓Display the current page as the last item
- ✓Use collapse for long paths
- ✓Place prominently at the top of the page
✕
Don't
- ✗Don't make the current page a link — use BreadcrumbPage instead
- ✗Don't include items unrelated to the site hierarchy
- ✗Don't use a single-level Breadcrumb — it provides no value
- ✗Don't use as a replacement for main navigation
Accessibility
Semantic Structure
Breadcrumb is wrapped in a
<nav> element — the interior is structured as an ordered list with <ol>. Screen readers correctly announce the navigation hierarchy.ARIA / WCAG
aria-label="breadcrumb"on nav elementaria-current="page"on current pagearia-hidden="true"on separator- WAI-ARIA Breadcrumb Pattern compliant