BreadcrumbList
BreadcrumbList — Schema.org для хлебных крошек. Замена URL в Google и Яндексе красивой иерархией. Шаблон JSON-LD с примерами.
BreadcrumbList — тип Schema.org, который описывает хлебные крошки страницы в понятном поисковику формате. Разметка показывает путь: Главная → Раздел → Статья. Google и Яндекс используют эти данные, чтобы в выдаче вместо длинного URL показать читаемую навигационную цепочку.
Что такое BreadcrumbList
Хлебные крошки — навигационный элемент, знакомый каждому: строчка ссылок в верхней части страницы, которая показывает, где ты находишься внутри сайта. BreadcrumbList — это способ рассказать о них поисковику на языке структурированных данных Schema.org.
Без разметки поисковик сам пытается вычислить иерархию из структуры URL и внутренних ссылок. Иногда угадывает, иногда нет. С явным BreadcrumbList Google показывает крошки прямо в SERP под заголовком — вместо https://qrkoder.ru/glossary/breadcrumblist-schema пользователь видит qrkoder.ru › Глоссарий › BreadcrumbList. Это увеличивает CTR: сниппет занимает больше места, пользователь сразу понимает, куда попадёт.
Тип входит в официальную спецификацию Schema.org и поддерживается Google Search (Rich Results), Яндексом и Bing. Для сайтов с глубокой иерархией — каталогов, блогов, глоссариев — это один из самых простых способов улучшить внешний вид сниппетов без какого-либо программирования на стороне поисковика.
Структура JSON-LD
BreadcrumbList состоит из массива itemListElement, где каждый элемент — объект типа ListItem с тремя полями: position (порядковый номер, начиная с 1), name (текстовая метка) и item (абсолютный URL). Последний элемент может не содержать item — это текущая страница, она уже открыта.
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Главная",
"item": "https://qrkoder.ru/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Глоссарий",
"item": "https://qrkoder.ru/glossary"
},
{
"@type": "ListItem",
"position": 3,
"name": "BreadcrumbList"
}
]
}
Для статьи блога цепочка выглядит так: Главная → Статьи → Название статьи. Для страницы генератора QR-кодов: Главная → Генератор QR → Динамический QR. Ключевое требование — все URL абсолютные, position без пропусков, последовательность соответствует реальной иерархии сайта.
Применение в SEO
BreadcrumbList особенно полезен для страниц, которые находятся на третьем и более глубоких уровнях вложенности. Именно там поисковик чаще всего показывает URL вместо крошек — просто потому что не уверен в иерархии. Разметка снимает эту неопределённость.
Для сайта QRkoder термины глоссария (Canonical URL, описания типов QR-кода), статьи блога и страницы генератора QR — все они выигрывают от BreadcrumbList. Разметка добавляется один раз в шаблон страницы и автоматически применяется ко всем материалам нужного типа. В Next.js это пара строк в компоненте Layout или в отдельном хелпере, который строит JSON-LD на основе пути запроса.
Важно: BreadcrumbList в JSON-LD и видимые хлебные крошки в HTML должны совпадать. Если на странице нет визуальных крошек, но в разметке они есть — это не нарушение, но Google может игнорировать такую микроразметку как несоответствующую контенту страницы. Лучше добавить оба элемента одновременно.
Частые вопросы
Обязательно ли добавлять BreadcrumbList на каждую страницу?
Нет, это рекомендация, а не требование. Но разметка особенно полезна там, где URL сам по себе не читается как навигация: длинные slug-и, UUID, хэши. Для страниц с очевидной иерархией в URL (например, /blog/2026/05/название) Google нередко строит крошки самостоятельно. Однако явная разметка надёжнее: поисковик берёт именно те названия уровней, которые вы задали, а не угадывает из текста страниц. Для сайтов с глоссариями, блогами и каталогами — добавлять стоит на всех вложенных страницах, это несколько строк в шаблоне.
Может ли BreadcrumbList конфликтовать с canonical URL?
Нет, они решают разные задачи. Canonical URL указывает, какая версия страницы основная среди дублей. BreadcrumbList описывает иерархическое положение этой страницы на сайте. Оба тега могут и должны стоять на одной странице одновременно. Единственное, на что стоит обратить внимание: URL в поле item элементов BreadcrumbList должен совпадать с canonical, а не с UTM-версией или другим дублём.
Как проверить, что разметка работает?
Три способа. Первый — Google Rich Results Test (search.google.com/test/rich-results): вставляешь URL или HTML-код, инструмент показывает, распознал ли Google BreadcrumbList и нет ли ошибок в структуре. Второй — Яндекс Вебмастер, раздел «Структурированные данные»: там видны все типы разметки, которые Яндекс нашёл на сайте. Третий — Schema Markup Validator на validator.schema.org: строже, чем Google-тест, проверяет соответствие спецификации Schema.org. Ошибки, которые блокируют отображение крошек, — это чаще всего непоследовательные position, относительные вместо абсолютных URL или отсутствующий обязательный field item у первых элементов цепочки.
Сколько уровней должно быть в цепочке?
Минимум два: главная и текущая страница. Максимума нет, но практика показывает, что цепочки длиннее пяти уровней в SERP отображаются усечённо. Google берёт первый и последний элементы плюс часть средних. Для большинства сайтов оптимально три уровня: Главная → Категория → Страница. Четыре уровня допустимы для крупных каталогов с подкатегориями. Добавлять уровни ради объёма не стоит — это не влияет на ранжирование.
BreadcrumbList работает для одностраничных приложений (SPA)?
Да, но с нюансами. Если сайт построен на Next.js, Nuxt или другом SSR-фреймворке — JSON-LD рендерится на сервере и Google видит его сразу. Для чистых CSR-приложений (React без SSR) поисковик должен выполнить JavaScript, чтобы добраться до разметки. Google умеет рендерить JavaScript, но это медленнее и менее надёжно. Рекомендация: выносить JSON-LD в серверно-рендеримый компонент или статическую часть шаблона, а не генерировать его только на клиенте. В Next.js App Router это решается через серверный компонент с тегом script type="application/ld+json" в метаданных или в теле.