itemListElement
itemListElement · Required by Google (BreadcrumbList)
Appears in
What is it?
itemListElement holds the individual entries inside an ItemList or BreadcrumbList. For breadcrumb navigation, each element is a ListItem with a position, name, and URL. For other lists (recipes in a carousel, courses in a collection), each element represents one item in the sequence.
Why this matters for AEO
AI answer engines use breadcrumb data to understand site hierarchy. When a user asks "Where can I find information about X on [site]?" the AI reads itemListElement to map out how content is organized. Breadcrumb markup also feeds into AI-generated navigation suggestions, helping users find related pages they did not directly ask about.
What the specs say
Schema.org: ListItem, Text, or Thing. For itemListElement values, you can use simple strings, existing entities, or use ListItem. ListItem is required for ordered lists needing positional information. schema.org/itemListElement
Google: Required (for BreadcrumbList). "An array of breadcrumbs listed in a specific order. Specify each breadcrumb with a ListItem." Google Breadcrumb docs
Each ListItem in a BreadcrumbList requires:
position(integer, starting at 1)name(string, the breadcrumb label)item(URL, optional for the last breadcrumb)
How to find your value
- Site navigation — The breadcrumb trail on the page (Home > Category > Page)
- URL structure — The path segments of the page URL
- CMS — Parent category or collection references
- Webflow — The folder/collection structure of the site
Format and code
Type: Array of ListItem objects
BreadcrumbList (most common use):
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://www.example.com/blog/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Schema Markup Guide"
}
]
}
The last breadcrumb can omit the item URL. Google uses the containing page URL for the final item.
ItemList (for carousels or collections):
{
"@context": "https://schema.org",
"@type": "ItemList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"url": "https://example.com/recipe/pancakes"
},
{
"@type": "ListItem",
"position": 2,
"url": "https://example.com/recipe/waffles"
}
]
}
Invalid examples:
"itemListElement": "Home > Blog > Post"(must be an array of objects)"itemListElement": [{"name": "Home"}](missing@type,position)
Webflow implementation
Static pages
In Page Settings > Custom Code > Before </head>:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://yoursite.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Current Page"
}
]
}
</script>
CMS template pages
Build breadcrumbs dynamically using collection references:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://yoursite.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://yoursite.com/blog"
},
{
"@type": "ListItem",
"position": 3,
"name": "{{wf {"path":"name","type":"PlainText"} }}"
}
]
}
</script>
In Schema HQ
The itemListElement field generates BreadcrumbList markup based on Webflow's site structure. It detects the page's position in the navigation hierarchy and builds the itemListElement array with correct positions and URLs automatically.
Real examples
Rost Glukhov (glukhov.org):
{
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.glukhov.org/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Posts",
"item": "https://www.glukhov.org/post/"
},
{
"@type": "ListItem",
"position": 3,
"name": "SEO Breadcrumbs: Schema Markup Implementation Guide",
"item": "https://www.glukhov.org/post/2025/12/breadcrumbs-for-seo/"
}
]
}
jsonld.com (jsonld.com/breadcrumb):
{
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://jsonld.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "JSON-LD Breadcrumb Examples"
}
]
}
Related fields
FAQ
Does the last breadcrumb need an item URL?
No. Google uses the URL of the page that contains the BreadcrumbList for the last item. Omitting the item property on the final ListItem is valid and common.
Should breadcrumbs match URL structure or site navigation?
Google recommends that breadcrumbs reflect typical user navigation paths, not necessarily the URL structure. If users reach a product page through a category (Home > Electronics > Headphones), use that path even if the URL is /products/headphones-xyz.
Can I have multiple BreadcrumbList blocks on one page?
Yes. If a page is reachable through multiple navigation paths, you can include separate BreadcrumbList blocks for each path. Google supports multiple breadcrumb trails per page.