A demo of the breadcrumb patterns that sites commonly need. Each row below names a pattern and links to a page that shows it; that page explains the pattern, when to use it and how it is configured here.

What core does by default

Drupal core has no breadcrumb settings. Its Breadcrumbs block shows a trail built from the URL: core takes the path as requested, alias included, and removes the last segment, one at a time. On /about/team/our-engineers it tries /about/team, then /about. Each of those that is a page the visitor may see becomes a crumb, titled with the title of that page, and a Home link goes first. Here the result would be Home › About us.

  • The current page is not part of the trail.
  • A segment with no page behind it is left out: /about/team disappears.
  • Only the URL counts. A trail cannot go through a referenced page or a category unless the alias spells it out, and an edit form at /node/5/edit has no hierarchy to read.
  • Titles are used as they are: nothing renames, capitalizes or shortens them.
  • The front page has no breadcrumb, and no page gets structured data.

Modules can add breadcrumb builders of their own, each for the pages it knows about. For each page the builder with the highest priority that applies builds the whole trail. Core ships a few: on taxonomy term pages the trail lists the parent terms, and help topics and comment forms have trails of their own. The path-based builder, at priority 0, is the fallback for everything else.

The two modules

Easy Breadcrumb replaces that fallback with one that can be configured. The trail still comes from the URL, but it can include the current page and the segments with no page, rename, capitalize and shorten crumbs, add a term's parents, follow hand-written trails for chosen paths, and print the trail as structured data. It applies to almost every page, at priority 1003.

Custom Breadcrumbs builds trails from rules, per entity type and bundle or per path, each a list of paths and titles that can use tokens. It applies only where one of its rules matches, at priority 1004 (patched from 1003 in this project, so that it is asked before Easy Breadcrumb). Every page without a rule falls through to Easy Breadcrumb. Both modules are documented in docs/admin/breadcrumbs.md.

Trails from the URL: Easy Breadcrumb

All of these are set at Configuration › User interface › Easy breadcrumb.

Pattern Setting Try it
Location: the path is the hierarchy Include the current page, Use the real page title Our engineers
Missing intermediate page Include invalid paths alias as plain-text segments /about/team
Tree of pages, aliases built from the parent A Pathauto pattern; nothing in Easy Breadcrumb System requirements
Category pages with their parents Add parent hierarchy, Paths to be excluded Shirts (flat alias), Drupal (no alias)
Short label for a long title Alternative title field name Drupal developer
Title casing and truncation Transformation mode, Truncate the page's title History of the company
Renamed crumbs Titles to be replaced API reference
Hand-written trail for one path Paths to replace with custom breadcrumbs FAQ
Hand-written trail for a family of paths The same, with a regex! line Blog archive 2025
Administration pages Applies to administration pages Content types

Trails from the data: Custom Breadcrumbs

Rules are at Structure › Custom breadcrumbs, settings at Configuration › User interface › Custom breadcrumbs settings.

Pattern Rule or setting Try it
Parent entity through a reference task rule, chained tokens Design mockups
Same trail on the edit form task rule, Disable on admin pages off Edit Design mockups
Product in its category tree product rule, <term_hierarchy> Oxford shirt
Category tree on content project rule, <term_hierarchy> Website Relaunch
Date archive article rule, date tokens A blog post
Long titles trimmed Trim title length A long task
Search keyword as the last crumb task_search path rule, query token /tasks?search=mock
A trail on every search result Breadcrumbs field in the teaser display Tasks, Shop

Not shown on a page

  • Structured data: Easy Breadcrumb prints a BreadcrumbList JSON-LD script in the head of every page that shows the breadcrumb block (Add current breadcrumb as structured data). It is always Easy Breadcrumb's own trail, from the URL, even where Custom Breadcrumbs builds the one on the page: on Design mockups the JSON-LD reads Home › Projects › Website Relaunch › Design Mockups.
  • The front page has no breadcrumb: Hide link to home page if it's the only breadcrumb item.