Show breadcrumb only on deep hierarchies (3 levels or more).
Navigation
Choosing between Breadcrumb, Tabs, List, and other patterns to move users through a product.
Decision guide
Navigation components differ in one fundamental way: whether the user moves to a new location or switches views within the same location. Getting this distinction wrong creates back-button confusion and broken mental models.
Breadcrumb
Breadcrumbs answer "where am I?" They are most useful in deep hierarchies where the user may have arrived from a search or external link with no memory of how they got there.
aria-current="page" on it.aria-hidden="true".Tabs vs navigation
Tabs and navigation links look similar but behave very differently. Confusing them breaks the browser back button and misleads users about what is a page versus what is a view.
role="tablist" + role="tab"Uses <nav> + <a> elementsList as navigation
A List component can function as sidebar navigation when wrapped in a <nav> and given active-state styling. The pattern works for secondary navigation within a section where the items are links to full pages.
<nav aria-label="Settings">
<List>
<ListItem href="/settings/profile" active>Profile</ListItem>
<ListItem href="/settings/billing">Billing</ListItem>
<ListItem href="/settings/team">Team</ListItem>
</List>
</nav>Mark the active item with aria-current="page". Do not simulate navigation with Tabs — these are separate pages and the back button should work.
Depth and hierarchy
Navigation scales with hierarchy depth. Use this as a rough guide:
Do and don't
Place breadcrumb above the page heading and below global nav.
Use tabs only for view switching inside the same page context.
Mark active navigation destination with aria-current="page".
Show breadcrumb on flat or two-level information architecture.
Use ">" as breadcrumb separator characters.
Mix tabs and page links for the same navigation set.
Use tabs for navigation between distinct pages.