Svelte Breadcrumb - Flowbite

Show the location of the current page in a hierarchical structure using the breadcrumb components

The breadcrumb component is an important part of any website or application that can be used to show the current location of a page in a hierarchical structure of pages.

Breadcrumbs are essential for:

  • User orientation - helping users understand where they are in the site structure
  • Navigation efficiency - allowing users to quickly jump back to parent pages
  • SEO benefits - search engines use breadcrumbs to understand site structure
  • Reduced bounce rate - providing multiple navigation paths keeps users engaged
  • Mobile navigation - offering compact navigation on small screens
  • E-commerce sites - showing product category hierarchy
  • Documentation sites - displaying content organization
  • Multi-level applications - navigating through complex hierarchies

Flowbite includes two styles of breadcrumb elements, one that has a transparent background and a few more that come with a background in different colors.

Setup #

  • Svelte
<script lang="ts">
  import { Breadcrumb, BreadcrumbItem } from "flowbite-svelte";
</script>

Default Breadcrumb #

Use the following breadcrumb example to show the hierarchical structure of pages. The default style has a transparent background that works well in most contexts and doesn’t distract from the main content.

Best practices for default breadcrumbs:

  • Start with the home page or root level
  • Display the full path to the current page
  • Make all parent levels clickable except the current page
  • Use clear, concise labels that match page titles
  • Consider truncating very long paths on mobile
  • Svelte
<Breadcrumb aria-label="Default breadcrumb example">
  <BreadcrumbItem href="/" home>Home</BreadcrumbItem>
  <BreadcrumbItem href="/">Projects</BreadcrumbItem>
  <BreadcrumbItem>Flowbite Svelte</BreadcrumbItem>
</Breadcrumb>

Solid Breadcrumb #

You can alternatively also use the breadcrumb components with a solid background. Solid breadcrumbs are useful when:

  • You need more visual separation from page content
  • Working with busy backgrounds or images
  • Creating a distinct header section
  • Matching a specific design system
  • Improving contrast for accessibility

The colored background helps the breadcrumb stand out and can be customized to match your brand colors.

  • Svelte
<Breadcrumb aria-label="Solid background breadcrumb example" solid>
  <BreadcrumbItem href="/" home>Home</BreadcrumbItem>
  <BreadcrumbItem href="/">Projects</BreadcrumbItem>
  <BreadcrumbItem>Flowbite Svelte</BreadcrumbItem>
</Breadcrumb>

Icons #

Use the icon snippet to change icons. Custom icons can:

  • Match your brand identity and design system
  • Improve recognition with familiar symbols
  • Add visual interest to the navigation
  • Clarify hierarchy with directional or category icons
  • Support internationalization by providing visual cues beyond text

Common icon patterns:

  • Home icon for the first item
  • Chevrons or arrows between items
  • Category-specific icons (shopping cart, document, folder)
  • Custom brand icons
  • Svelte
<script lang="ts">
  import { Breadcrumb, BreadcrumbItem } from "flowbite-svelte";
  import { HomeOutline, ChevronDoubleRightOutline } from "flowbite-svelte-icons";
</script>

<Breadcrumb aria-label="Solid background breadcrumb example" class="bg-gray-50 px-5 py-3 dark:bg-gray-900">
  <BreadcrumbItem href="/" home>
    {#snippet icon()}
      <HomeOutline class="me-2 h-4 w-4" />
    {/snippet}Home
  </BreadcrumbItem>
  <BreadcrumbItem href="/">
    {#snippet icon()}
      <ChevronDoubleRightOutline class="mx-2 h-5 w-5 dark:text-white" />
    {/snippet}
    Projects
  </BreadcrumbItem>
  <BreadcrumbItem>
    {#snippet icon()}
      <ChevronDoubleRightOutline class="mx-2 h-5 w-5 dark:text-white" />
    {/snippet}
    Flowbite Svelte
  </BreadcrumbItem>
</Breadcrumb>

Class and olClass #

This example demonstrates customizing the breadcrumb styling using the class prop for the container and olClass for the ordered list element. Customization allows you to:

  • Adjust spacing and padding
  • Change colors and backgrounds
  • Modify typography (font size, weight)
  • Add borders or shadows
  • Create responsive layouts
  • Match your design system

The ordered list (<ol>) element provides semantic HTML structure that’s beneficial for accessibility and SEO.

  • Svelte
<script lang="ts">
  import { Breadcrumb, BreadcrumbItem, Button, type BreadcrumbProps } from "flowbite-svelte";
  let navClass: BreadcrumbProps["class"] = $state("");
  const changeNavClass = () => {
    navClass = navClass === "" ? "border border-red-500 p-2" : "";
  };
  let olClass: BreadcrumbProps["olClass"] = $state("");
  const changeOlClass = () => {
    olClass = olClass === "" ? "border border-blue-500 p-2" : "";
  };
</script>

<div class="h-20">
  <Breadcrumb class={navClass} {olClass}>
    <BreadcrumbItem href="/" home>Home</BreadcrumbItem>
    <BreadcrumbItem href="/">Projects</BreadcrumbItem>
    <BreadcrumbItem>Flowbite Svelte</BreadcrumbItem>
  </Breadcrumb>
</div>
<div class="flex flex-wrap justify-center gap-2 md:justify-start">
  <Button class="w-48" onclick={changeNavClass}>{navClass ? "Remove navClass" : "Add navClass"}</Button>
  <Button class="w-48" color="green" onclick={changeOlClass}>{olClass ? "Remove olClass" : "Add olClass"}</Button>
</div>

Accessibility #

The Breadcrumb component follows accessibility best practices:

  • Semantic HTML: Uses <nav> and <ol> elements for proper structure
  • ARIA Labels: Includes aria-label="breadcrumb" on the navigation element
  • Keyboard Navigation: All links are keyboard accessible
  • Screen Readers: The hierarchical structure is properly announced
  • Current Page: The last item (current page) should not be a link
  • Clear Labels: Each breadcrumb item should have descriptive text
  • Focus Indicators: Clear focus states for keyboard users

Best Practices #

When implementing breadcrumbs, consider these guidelines:

  • Placement: Position breadcrumbs near the top of the page, below the main navigation
  • Hierarchy: Reflect the true information architecture of your site
  • Consistency: Use breadcrumbs on all pages where they add value
  • Length: Keep labels concise (1-3 words ideal)
  • Current Page: The last item should not be clickable
  • Home Link: Start with “Home” or your site name
  • Separator: Use clear separators (arrows, chevrons, slashes)
  • Mobile: Consider abbreviating or hiding middle items on small screens
  • Categories: For e-commerce, show category hierarchy clearly
  • Don’t Replace: Breadcrumbs supplement, not replace, primary navigation

When to Use Breadcrumbs #

Good Use Cases:

  • E-commerce product pages
  • Documentation sites with deep hierarchies
  • Content management systems
  • Multi-step processes or workflows
  • Large websites with complex structure
  • Enterprise applications

When to Avoid:

  • Single-level websites or apps
  • Linear flows where back button suffices
  • Apps with flat navigation structure
  • When the hierarchy is unclear or confusing

SEO Benefits #

Breadcrumbs provide significant SEO advantages:

  • Rich Snippets: Search engines display breadcrumbs in search results
  • Internal Linking: Improves site crawlability and link equity distribution
  • Keyword Context: Provides additional keyword context for pages
  • User Experience Signals: Lower bounce rates and better engagement
  • Schema Markup: Can be enhanced with structured data (JSON-LD)

Consider implementing schema.org breadcrumb markup for maximum SEO benefit.

Responsive Design #

For mobile devices, consider these patterns:

  • Truncation: Show only “Home > … > Current Page” for very long paths
  • Horizontal Scroll: Allow scrolling for paths that don’t fit
  • Collapse Middle Items: Hide intermediate levels with an ellipsis
  • Vertical Stack: Stack breadcrumb items vertically if appropriate
  • Icon Only: Use just a home icon and back arrow on narrow screens

See also #

Loading related links...

Component data #

The component has the following props, type, and default values. See types page for type information.

Loading...

References #

GitHub Links #

LLM Link #