How to add breadcrumbs in WordPress without breaking your schema
By Yurii Vasyliev7 min read

On this page
Knowing how to add breadcrumbs in WordPress mostly means picking one source for the trail. WordPress now ships a Breadcrumbs block, Yoast SEO has its own feature, and many themes add a third version. Run two at once and visitors see duplicate trails, which also muddies your markup. So the real work is choosing one, then making sure search engines read the same trail your visitors see. Below, you will find both setups, plus the category quirk and a way to check your markup.
What a breadcrumb trail does for readers and search
A breadcrumb trail shows visitors where they sit on your site, from the homepage down to the current page. It also lets people step back up one level without touching the browser's back button. Search Engine Journal's overview of breadcrumbs and SEO calls them useful for both users and search engines. They are easy to add, so the usual problem is duplication, not setup.
How to add breadcrumbs in WordPress with the core block
The simplest route is the Breadcrumbs block. Open the block inserter with the plus icon, search for Breadcrumbs, and click to insert it. You can also type /breadcrumbs in the editor. The WordPress documentation for the Breadcrumbs block covers both paths.

Placement matters more than insertion. Add the block to a single post and only that post shows a trail. Place it in a template or template part through the Site Editor and it appears across your site. That is usually what you want, because every page then shares one trail. The Site Editor works with block themes, so classic theme users may prefer the Yoast route below.
On pages, the trail follows your parent and child structure, such as Home / Services / Web Design / Portfolio. Posts have no parent pages, so the block falls back on categories or tags. It also works on archives, search results, 404 pages and custom post types, where the post type archive joins the trail.
Settings worth changing
Three settings do most of the work. Show home breadcrumb toggles the link to your homepage, and Show current breadcrumb adds the unlinked title of the page being viewed. The separator defaults to a slash, though a pipe or a dash works too. Under Advanced, Show on homepage displays the trail on your front page when the block sits in a shared template.
Colour, typography, spacing and border controls also sit in the sidebar, so you can match your design without custom CSS. Wide and full alignment only work when your theme enables them. Keep the text small but readable, because a trail should orient people rather than compete with your headline.
Adding breadcrumbs with Yoast SEO
Yoast SEO includes breadcrumbs, but the feature is off by default. Go to Yoast SEO, Settings, Advanced, then Breadcrumbs, and switch on Enable breadcrumbs for your theme. Save your changes and adjust the appearance and separator on the same screen. Yoast's breadcrumb implementation guide walks through each step.
The toggle alone does not place the trail, because your theme has to output it. Yoast offers a Yoast Breadcrumbs block, the shortcode [wpseo_breadcrumb] inside a Shortcode block, or a PHP snippet that calls yoast_breadcrumb in files such as single.php. Theme file edits can vanish when the theme updates, so use a child theme and take a backup first.
If you already run Yoast, this is the quickest way to add breadcrumbs in WordPress without a second plugin. Yoast also supports primary categories and custom breadcrumb titles. Still deciding which plugin should own the job? The guide to essential SEO tools for WordPress explains how to avoid overlapping features.
Why a post shows the wrong category in its trail
Posts have no parent pages, so a post's trail comes from its categories or tags. When a post sits in several categories, the core block shows only one term per level of the hierarchy. If several categories share a level, it shows whichever appears first in the list. As a result, a post can display a category you consider secondary.
Yoast solves this differently, because you choose a primary category for each post. Pick a subcategory as primary and Yoast outputs the parent category plus the subcategory. You may need to test a few choices before the right path appears.
Still, this is a structure problem more than a plugin problem. Give each post one clear main branch and the trail makes sense without tinkering. A planned content hub with distinct categories gives breadcrumbs a clean path to follow, and it helps readers find related posts too.
Keeping the visible trail and the markup in agreement
The visible trail and BreadcrumbList markup are separate things. The trail helps readers, while the markup tells Google how the page fits your site. Yoast outputs JSON-LD in the source code and says it has found that format the most reliable for rich snippets. The core block is documented as a visual element, so inspect your page source before assuming it also outputs markup.
According to Google's breadcrumb structured data documentation, a BreadcrumbList needs at least two ListItem entries. Each entry needs a name and a position, and an item URL unless it is the last one. Google recommends a trail that reflects a typical user path rather than mirroring your URL structure. If different paths lead to one page, you can mark up more than one trail.
Duplicates are the common failure. A theme trail, a Yoast trail and a block running together print several visible trails and may output conflicting markup. Yoast documents one rare case on WooCommerce product pages with a block theme, where turning off Replace WooCommerce breadcrumbs removes the extra trail.
How to check that the trail works
Whichever way you add breadcrumbs in WordPress, test four page types: a post, a page, a category archive and a 404. Each should show exactly one trail. Then validate the markup with the Rich Results Test and fix any critical errors, as Google advises. The URL Inspection tool shows how Google sees the page, so confirm that robots.txt, a noindex tag or a login requirement is not blocking it.
Afterwards, watch the rich result status report in Search Console, especially after a theme or template change. Google says it may take several days to crawl a new page, so give changes time before you judge them. Google also does not guarantee that markup produces a rich result, which means a valid trail is the goal, not a specific display.
Choose one owner for the trail
Anyone learning how to add breadcrumbs in WordPress should treat the trail as part of site structure, not decoration. Pick the block, Yoast or theme code, set it once in a template, and switch off the others. Revisit the setup whenever you change themes or plugins, because that is when duplicates return. A clean category structure keeps the trail honest as your archive grows.
Action steps
- Choose one source: Decide whether the Breadcrumbs block, Yoast SEO or theme code will own the trail, and switch off the others.
- Place it in a template: Add the trail once through the Site Editor or your theme so every page shares it.
- Set your options: Configure the home link, current page, separator and homepage display to suit your design.
- Fix category assignments: Give each post one clear main category, and set a primary category in Yoast if you use it.
- Validate the markup: Run the Rich Results Test, inspect a live URL, and monitor Search Console after changes.
Frequently asked questions
Do I need a plugin to add breadcrumbs in WordPress?
Not necessarily. WordPress documents a Breadcrumbs block you can add to a post, page or template. Yoast SEO offers its own breadcrumbs if you already use it, but you must enable the feature first.
Why do I see two breadcrumb trails on one page?
Usually two sources output a trail, such as your theme and a plugin or block. Keep one and disable the rest. Yoast also documents a rare WooCommerce case, fixed by turning off Replace WooCommerce breadcrumbs.
Will breadcrumbs guarantee a rich result in Google?
No. Google does not guarantee that features using structured data will appear. A valid BreadcrumbList needs at least two ListItem entries, and you can check it with the Rich Results Test.
Can I show breadcrumbs on my homepage?
The Breadcrumbs block has a Show on homepage option under Advanced. It only matters when the block sits in a template or template part that appears on the homepage.