Breadcrumb (BreadcrumbList) structured data

By Tan Lee Published on Jun 23, 2025  38
A breadcrumb trail shows a page's position within a site's hierarchy and helps users navigate the site by allowing them to move up one level at a time.

breadcrumb json-ld

Single breadcrumb trail

When only one breadcrumb path exists to a page, that path should be displayed on the page.

For example: Books › Science Fiction › Award Winners

<script type="application/ld+json">
{
      "@context": "https://schema.org",
      "@type": "BreadcrumbList",
      "itemListElement": [{
        "@type": "ListItem",
        "position": 1,
        "name": "Books",
        "item": "https://example.com/books"
      },{
        "@type": "ListItem",
        "position": 2,
        "name": "Science Fiction",
        "item": "https://example.com/books/sciencefiction"
      },{
        "@type": "ListItem",
        "position": 3,
        "name": "Award Winners"
      }]
}
</script>

Generating json-ld for single breadcrumb trail using FoxLearn.JsonLd

var breadcrumbList = new BreadcrumbList
{
    ItemListElement = new[]
    {
        new ListItem { Position = 1, Name = "Books", Item = new Uri("https://example.com/books") },
        new ListItem { Position = 2, Name = "Science Fiction", Item = new Uri("https://example.com/books/sciencefiction") },
        new ListItem { Position = 3, Name = "Award Winners" },
    }
};

string json = JsonLdSerializer.Serialize(breadcrumbList, includeScriptTag: true);
Console.WriteLine(json);

Multiple breadcrumb trail

If a page can be reached through different navigation paths, you can include multiple breadcrumb trails for it.

For example: Books › Science Fiction › Award Winners

<script type="application/ld+json">
    [{
      "@context": "https://schema.org",
      "@type": "BreadcrumbList",
      "itemListElement": [{
        "@type": "ListItem",
        "position": 1,
        "name": "Books",
        "item": "https://example.com/books"
      },{
        "@type": "ListItem",
        "position": 2,
        "name": "Science Fiction",
        "item": "https://example.com/books/sciencefiction"
      },{
        "@type": "ListItem",
        "position": 3,
        "name": "Award Winners"
      }]
    },
    {
      "@context": "https://schema.org",
      "@type": "BreadcrumbList",
      "itemListElement": [{
        "@type": "ListItem",
        "position": 1,
        "name": "Literature",
        "item": "https://example.com/literature"
      },{
        "@type": "ListItem",
        "position": 2,
        "name": "Award Winners"
      }]
    }]
</script>

Generating json-ld for multiple breadcrumb trail using FoxLearn.JsonLd

var schemaRoot = new SchemaRoot();

var breadcrumbList1 = new BreadcrumbList
{
    ItemListElement = new[]
    {
        new ListItem { Position = 1, Name = "Books", Item = new Uri("https://example.com/books") },
        new ListItem { Position = 2, Name = "Science Fiction", Item = new Uri("https://example.com/books/sciencefiction") },
        new ListItem { Position = 3, Name = "Award Winners" },
    }
};
schemaRoot.Graph.Add(breadcrumbList1);

var breadcrumbList2 = new BreadcrumbList
{
    ItemListElement = new[]
    {
        new ListItem { Position = 1, Name = "Literature", Item = new Uri("https://example.com/literature") },
        new ListItem { Position = 2, Name = "Award Winners" },
    }
};
schemaRoot.Graph.Add(breadcrumbList2);

string json = JsonLdSerializer.Serialize(schemaRoot, includeScriptTag: true);
Console.WriteLine(json);