Supporting guide

How to add a breadcrumb trail

By BloGoose · Updated 6 October 2026 · About 16 minutes

A breadcrumb trail is the short row of links that says where the current page sits, so a person can step up one level. Breadcrumb schema is the BreadcrumbList that repeats that row for a crawler. Google’s breadcrumb documentation, updated 8 September 2026, says the trail can help people understand and explore the site. It also says the rich result that uses the markup is a desktop feature. The HTML trail is still worth showing on a phone, because that is where the person is.

Show the path, then describe that path. Use the steps a person would actually open. Home, Guides, and the article is enough when that is how the site is organized. Do not copy year and month folders into the trail, and do not put a trail in JSON that the page does not show.

What a breadcrumb trail is

Google’s definition is navigational. Starting from the last crumb, a person can move up the hierarchy one level at a time. The trail is not the H1, not the article, and not a place to repeat keywords. If the only reason a step exists is a query you hope to rank for, it is not a step. It is a label.

On a blog, a useful trail is short. Home. The section the post belongs to, if that section is a real page. The current title, as text, because the person is already there. Three steps is a normal article. Eight steps usually means the template is exposing folders. People do not climb eight levels. They use the back control, or they leave.

The trail is also not a substitute for the links inside the article. A topic cluster is the set of pages a reader needs next, linked in the sentences where those pages are relevant. The breadcrumb is the one path that says “you are here.” Both can exist. One does not do the other’s job. A pillar linked only from a crumb, and never from the paragraph that mentions it, is easy to miss.

The path a person walks

Google recommends a typical user path, not a mirror of the URL. You do not have to include a crumb for the host name, and you do not have to include a crumb for the current page. Many sites include both because the row would look unfinished without them. That is a design choice. The recommendation that matters is the middle: every step should be a page someone can open on purpose.

A breadcrumb of Home, 2026, 10, and the article mirrors folders nobody browses. Home, Guides, and the article follows the path a person walks.
Folders are not a hierarchy unless people use them. Mark up the path you would give a new reader.

A URL like /2026/10/async-standups can stay. The trail does not have to list 2026 and 10. Those segments are not guides. Linking them creates thin archives, or links to URLs that 404, which is worse. If you do not have a year page you are willing to maintain, do not put the year in the breadcrumb.

Name the steps the way the destination pages name themselves. If the section is called Guides on its own H1, the crumb says Guides, not “Blog category” and not a keyword variant. The crumb is a link. Its anchor should say what the person will open. Use the canonical URL of that page, not a parameterized copy and not an old slug. A crumb that 404s trains people not to trust the row. Fix the link or remove the step. A soft 404 at the end of a crumb is a broken map.

Breadcrumb schema that matches

If the trail is visible, BreadcrumbList can repeat it. If the trail is not visible, do not invent the list in JSON. That is the same rule as the rest of article schema: markup describes the page a person sees. A plugin that injects a trail of keywords into the script, while the header shows nothing, is describing a navigation that is not there.

Visible crumbs Home, Guides, and How to run an async standup, matched by BreadcrumbList positions 1, 2, and 3 with the same names and URLs.
Same names, same order. The last step can leave its URL out. Google uses the page you are on.

JSON-LD is a good fit because it does not have to change the HTML of the list. The list still needs real anchors. Put the script in the HTML response so it does not depend on a widget. One trail, one BreadcrumbList, unless the page truly has two paths, which is the next section. Do not emit a second list from a second plugin that names different parents. View source and search for BreadcrumbList. Two lists that disagree are not “more structured.”

data-vocabulary.org markup is not eligible for Google’s rich results. Google set that cutoff at 29 January 2021. Old themes still emit it beside schema.org, or instead of it. schema.org is the vocabulary to use. You do not need both.

Where the rich result appears

The breadcrumb feature, as the documentation’s availability section states it, is available on desktop, in the regions and languages where Google Search is available. The Search Central changelog for 22 January 2025 says the docs were updated because the trail only appears on desktop, not on mobile. Google’s reason was truncation: on a small screen the trail was cut off and was not useful. Desktop results can still show it.

That is a display limit, not a reason to remove the HTML trail on phones. The person on a phone uses your page, not the desktop snippet. Keep the row readable without horizontal scrolling if you can: short names, not the full headline repeated at every width. The rich result is also not guaranteed. Google says features that use structured data may not appear, including when the markup is valid. A passing Rich Results Test means the syntax is acceptable. It does not mean the trail will show on the next search.

Do not add the type because you want a breadcrumb on mobile results. The changelog says that display is gone. Do not add extra crumbs to make the desktop snippet longer. Length is why mobile lost the feature. A short true trail is the one that can still be shown.

The properties Google asks for

A BreadcrumbList needs at least two ListItem entries. Fewer than two is not a trail.

Property What it is What goes wrong
itemListElement The steps, in order A single item, or a list that does not match the row on the page
position An integer. 1 is the start Starting at 0, or repeating 1 for every step
name The label a person sees A keyword the link text does not use. If the item is a Thing that already has a name, a separate name is not required
item The URL of that step A relative path when you can send an absolute one, or a URL that does not match the link. The last step may omit it. Google then uses the page URL

The URL can be a plain URL string or a Thing identified with @id in JSON-LD. Pick one style and use it for every step. Absolute HTTPS URLs that match the links are the easiest to check. Do not point a crumb at a URL you have redirected. Point it at the destination, so the trail and the canonical agree.

Position is only the order. It is not a ranking weight. Setting the article to position 1 and the home page to position 3 reverses the trail. Read the numbers against the row, left to right.

More than one trail

Google allows more than one BreadcrumbList when there is more than one real way to reach the page. A book can sit under Science Fiction and under Award Winners if both shelves exist and both are linked. A blog post can sit under Guides and under a real topic hub if a person can arrive by either shelf and both shelves are pages.

Two trails are not two keyword paths. “Home / SEO / Async standups” plus “Home / Meetings / Async standups,” when neither SEO nor Meetings is a page you publish, is invented structure. Publish the shelf or do not name it. If you show two rows on the page, mark up both. If you show one row, mark up one.

The current page can appear in both trails as the last step. It should not appear as a middle step of a third trail that exists only in the script. Order each list on its own, starting at 1.

Markup that does not belong

A 404 template can show a short trail back to pages that exist, so a person is not stranded. Do not describe that error page as an article, and do not give it a crumb that pretends the missing URL is a section. Home and Guides is enough on an error screen. The status code is still 404.

What an answer engine can follow

An answer engine quotes the article. The breadcrumb tells it, and a person, which section the article belongs to. That context is useful when the same title could sit in two places. It is a poor place to hide the only copy of the answer. “Home / Guides / Three prompts” does not explain the prompts. The paragraph does.

Because the trail is HTML links, a system that does not run JavaScript can still read it, if you put the anchors in the response. A breadcrumb drawn by a script into an empty nav is invisible to anything that only reads the first HTML. The row is small. Render it on the server. The JSON-LD block is small too. Neither should wait on a tag manager.

Google’s rich result is desktop-only. Other products may ignore BreadcrumbList and still follow the links. Write the row for the person. Let the schema match. Do not add a second, keyword-heavy row “for AI.” One honest path is the extractable path.

On Northwind’s standup guide the visible row is Home, Guides, How to run an async standup. Home links to /. Guides links to the guides index, which has its own introduction and is not an empty tag. The article title is text. The URL of the article is /async-standups, not /2026/10/async-standups and not a campaign parameter.

The JSON-LD lists those three steps in that order. Position 1 is Home. Position 2 is Guides with the guides URL. Position 3 is the article title. The last step omits item, which is allowed. There is no second list, because the post is not filed under a second shelf. There is no data-vocabulary block left over from the old theme.

They checked the row on a narrow screen. The three names fit. They did not add “SEO,” “remote teams,” and “agile” as extra crumbs after a tool said the trail was too short. Short is the point.

How this shows up on a published post

When you review a BloGoose draft, the breadcrumb is part of the page you are about to publish, not a field you fill with keywords. Confirm the parent is a section that exists on the destination site. If the only parent you have is the blog index, the trail is Home, Blog, and the article. Do not invent a cluster crumb until that cluster page is live and linked.

After publish, view the source. One BreadcrumbList. The names match the row. The URLs return 200. The current page is last. That is the whole check. A rich result on desktop, later, is optional. The row is not.

Questions about breadcrumbs

What is a breadcrumb trail?

A breadcrumb trail is a short list of links that shows where the current page sits in the site, so a person can move up one level at a time. It is navigation. It is not the article, and it is not a list of keywords.

What is breadcrumb schema?

Breadcrumb schema is BreadcrumbList structured data that names the same trail: each step has a position, a name, and, except for the last step, a URL. Google can use it to show a breadcrumb in desktop search results. It does not guarantee that display.

Do breadcrumb rich results appear on mobile?

Google’s breadcrumb documentation says the feature is available on desktop. The Search Central changelog for 22 January 2025 says the trail does not appear on mobile, because it is truncated on small screens and was not useful there. The HTML trail on your page still helps people on a phone.

Should the breadcrumb copy the URL folders?

Not necessarily. Google recommends a typical path a person would walk, rather than a mirror of the folders in the URL. A date folder in the path is not a useful step if nobody browses by month.

Can you add breadcrumb schema without showing the trail?

No. The markup has to describe the page a person can see. If the trail is not on the page, do not invent one in JSON. The article schema guide is the same rule for the rest of the article object.

Do you need a breadcrumb for the homepage and the current page?

Google says it is not required to include a ListItem for the site host, or for the page itself. Many sites still show Home and the current title because that is what people expect. If you show them, the schema should include the same steps, in the same order.

Put the path on the page. Let the schema repeat it.

Start the 1-day trial