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/teamdisappears. - 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/edithas 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
BreadcrumbListJSON-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.