QRkoder

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" в метаданных или в теле.

Создавайте QR-коды бесплатно

Динамические QR-коды с аналитикой, дизайном и без ограничений по сканированиям.

Начать бесплатно