Mark up the breadcrumb visible to users (don't fabricate hidden breadcrumbs), use absolute URLs, include the current page as the last item, and keep the structure consistent with your site's actual hierarchy.
BreadcrumbList is one of the most consistently-rendered rich result types in 2026 — Google still shows breadcrumb URLs in mobile and desktop SERPs for properly-marked-up pages. Implementation is simple but commonly bungled.
**The correct structure:**
{ "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://yoursite.ca/" }, { "@type": "ListItem", "position": 2, "name": "Services", "item": "https://yoursite.ca/services/" }, { "@type": "ListItem", "position": 3, "name": "Plumbing", "item": "https://yoursite.ca/services/plumbing/" }, { "@type": "ListItem", "position": 4, "name": "Drain Cleaning" } ] }
Note: the **last item omits `item`** (the URL) per Google's current spec. Including a URL on the final item still parses but doesn't display the page name in SERP breadcrumbs.
**Common mistakes:**
1. **Relative URLs** instead of absolute. Use `https://yoursite.ca/services/`, not `/services/`. 2. **Inconsistent name vs. anchor text.** The schema name should match what visible breadcrumbs say. 3. **Breaking the hierarchy.** A page at /services/plumbing/drain-cleaning/ should have 4 breadcrumb items (Home → Services → Plumbing → Drain Cleaning), not 2. 4. **Multiple BreadcrumbList schemas on the same page.** One per page only. 5. **Marking up breadcrumbs that don't exist visually.** Violates Google's "schema must reflect visible content" rule.
**Multiple breadcrumb paths (advanced):**
Some pages legitimately have multiple navigation paths (e.g., a blog post categorized under both "Local SEO" and "Canadian Markets"). You can mark up multiple BreadcrumbLists, but Google typically displays only the first one. Better to pick the primary path and stick with it.
**For programmatic / templated sites:**
Generate breadcrumbs from URL structure. Most CMSs (WordPress with Yoast/Rank Math, Webflow, Shopify with apps) auto-generate BreadcrumbList schema. Verify periodically using Rich Results Test that the auto-generated markup is correct — auto-generators occasionally produce malformed schemas after CMS updates.
**Validation:**
Run every page template through Google's Rich Results Test (search.google.com/test/rich-results) before deploying. Look for "BreadcrumbList valid" plus zero errors.
**SERP impact:**
Properly-marked-up breadcrumbs replace your URL in mobile and desktop search results with the breadcrumb hierarchy (Home › Services › Plumbing › Drain Cleaning). Visually cleaner, slightly higher CTR (BrightLocal study found 3–7% CTR lift for pages with breadcrumb display vs raw URL display).
- **Should I use JSON-LD, Microdata, or RDFa for schema markup?** — JSON-LD, period. Google has explicitly stated JSON-LD is preferred since 2017. Microdata and RDFa still parse correctly but add no benefit and complicate maintenance. Strip out any old Microdata when you migrate. - **Is FAQ schema still worth implementing in 2026?** — Yes, but with reduced expectations. Google removed FAQ rich snippets from most non-authoritative sites in August 2023 and continued tightening through 2024–2025. FAQ schema still helps with semantic understanding and AI Overview citations, even when rich snippets don't display. - **Can I use Product schema for service businesses?** — Yes — Service schema (a Product subtype) is the right choice for service businesses. Don't use the generic Product schema for services; use Service, with proper offers, areaServed, and provider properties. - **How do I add AggregateRating schema without violating Google's guidelines?** — Only mark up reviews that are genuinely visible on the page, came from real customers, and are first-party (collected by you, not aggregated from elsewhere). Google's 2019 review snippet update made fake or third-party-aggregated review markup ineligible for rich results.