Hreflang Validator

Проверьте корректность hreflang-разметки и взаимных ссылок между языковыми версиями.

Hreflang Validator — проверка alternate и reciprocal

Проверьте hreflang-разметку multilingual страниц: корректность кодов, наличие x-default, дубликаты и взаимные alternate-ссылки между языковыми версиями.

Парсинг hreflang alternate-ссылок из head документа
Проверка формата языковых кодов и дублей
Контроль x-default и self-referencing hreflang
Проверка HTTP-статуса alternate URL
Опциональная reciprocal-проверка обратных ссылок

Как пользоваться

  1. Введите URL страницы, которая должна участвовать в hreflang-кластере
  2. Запустите проверку и проанализируйте ошибки кодов, x-default и self-reference
  3. При необходимости включите reciprocal-проверку и исправьте несвязанные локали

FAQ

x-default указывает fallback-версию, когда подходящая языковая версия не определена. Это помогает избежать неоднозначной маршрутизации пользователей.

Если локали не ссылаются друг на друга взаимно, поисковые системы могут игнорировать часть hreflang-сигналов и кластер будет неполным.

Hreflang check: что проверяет валидатор и как читать отчёт

Hreflang validator загружает страницу, находит в HTML все теги <link rel="alternate" hreflang="…" href="…"> и проверяет кластер языковых версий. Сверху — три цифры: сколько alternate-ссылок найдено, сколько среди них уникальных кодов и сколько проблем. Ниже — список проблем и таблица: код, целевой URL, HTTP-статус и колонка Reciprocal.

Что считается проблемой:

  • Нет ни одной hreflang-ссылки — разметка не выводится в HTML или добавляется скриптом после загрузки (инструмент JavaScript не выполняет).
  • Некорректный код — не похож на «язык» или «язык-регион» (en, en-gb, pt-br) и не равен x-default.
  • Дубликат кода — один и тот же код указывает на разные URL.
  • Нет x-default — рекомендация, не ошибка.
  • Нет self-reference — среди alternate нет ссылки на проверяемую страницу. Сравнение не учитывает регистр домена и концевой слэш, но http/https и www различаются.

Без переключателя reciprocal инструмент запрашивает заголовки каждого alternate-адреса и показывает итоговый код ответа. С переключателем он полностью загружает первые восемь версий и ищет на каждой ссылку обратно на вашу страницу. Это и есть hreflang testing взаимности. Для остальных версий в таблице будет «—».

Синтаксис hreflang

<link rel="alternate" hreflang="ru" href="https://example.com/ru/catalog/" />
<link rel="alternate" hreflang="uk" href="https://example.com/uk/catalog/" />
<link rel="alternate" hreflang="en-gb" href="https://example.com/en-gb/catalog/" />
<link rel="alternate" hreflang="en-us" href="https://example.com/en-us/catalog/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/catalog/" />
  • Язык — код ISO 639-1 из двух букв: ru, uk, en, pl, de.
  • Регион (необязательно) — ISO 3166-1 alpha-2 после дефиса: en-gb, de-at. Регион без языка не работает: hreflang="ua" или hreflang="gb" — ошибка.
  • Регистр не важен: en-GB и en-gb равнозначны.
  • Адреса — только абсолютные, с протоколом. Инструмент достраивает относительные адреса, чтобы проверить их, но в разметке пишите полный URL.

Ловушки в кодах

Валидатор проверяет форму кода, а не его существование. Поэтому смотрите таблицу глазами:

  • en-uk — ошибка: код Великобритании — gb, а uk — это украинский язык. Правильно en-gb.
  • ua — код страны, а не языка. Для украинского языка нужен uk, для украиноязычной Украины — uk-ua, для русскоязычной аудитории в Украине — ru-ua.
  • zh-Hant, zh-Hans (письменность) и es-419 (Латинская Америка) Google принимает, но строгая проверка формата отметит их как некорректные. Если у вас такие коды, это ложная тревога.

x-default: когда и куда ставить

x-default — версия для всех, кому не подошёл ни один код: другой язык браузера, другая страна. Обычно это страница выбора языка или основная (чаще англоязычная) версия. Указывать x-default не обязательно, но для сайтов с геоперенаправлением это лучший способ показать Google, что главная без префикса — не отдельная языковая версия. Не ставьте автоматический редирект по IP на x-default: Googlebot ходит в основном с американских адресов и может не увидеть остальные версии.

Язык или язык-регион

Региональный код нужен, только когда версии реально различаются: цены и валюта, доставка, юридические условия, местная лексика. Если английская версия одна для всех стран, достаточно en. Почти одинаковые en-us и en-gb с hreflang — нормальная практика: дублем Google их не считает, а показывает каждой стране свою.

Взаимность и self-reference

Hreflang работает только парами. Если русская страница ссылается на украинскую, а украинская на русскую — нет, Google игнорирует связь. Каждая версия должна перечислять все версии кластера, включая себя. Поэтому разметку генерируют из одного источника (общей таблицы переводов), а не вписывают вручную на каждой странице.

Частые ошибки hreflang

ОшибкаПоследствиеКак найти
Alternate ведёт на редиректGoogle ожидает конечный адрес; цепочка ослабляет сигналВалидатор показывает статус после редиректа, поэтому прогоните адреса через проверку редиректов
Alternate на 404 или noindexВерсия выпадает из кластераСтатус в таблице; noindex — в анализе мета-тегов
Canonical на другую языковую версиюGoogle склеивает версии и показывает однуКаждая версия должна быть каноничной сама себе
Нет обратной ссылкиСвязь игнорируетсяРежим reciprocal
Разные адреса одной страницы (слэш, www, параметры)Self-reference и взаимность не совпадаютСравните колонку URL с canonical
Hreflang на непереведённой страницеПользователь получает не тот языкСтавьте hreflang только при реальном переводе

Hreflang test по шагам

  1. Проверьте главную и по одной странице каждого шаблона (категория, товар, статья) без reciprocal — убедитесь, что разметка вообще выводится, коды корректны, есть x-default и self-reference.
  2. Включите reciprocal для тех же страниц. Каждая строка с «Нет» — версия, которая не ссылается обратно. Чаще всего так бывает, когда перевод страницы опубликован, а на исходной её ещё нет — или наоборот.
  3. Откройте каждую версию из таблицы и проверьте её саму: набор ссылок на всех версиях должен быть одинаковым. Если на одной версии пять alternate, а на другой четыре, кластер рассинхронизирован.
  4. Сверьте canonical каждой версии: он должен совпадать с адресом этой версии в hreflang, символ в символ.
  5. После правок запросите переобход ключевых страниц через «Проверку URL». Google пересобирает кластеры постепенно, по мере переобхода всех версий.

Где ломается чаще всего

В WordPress hreflang выводят плагины мультиязычности (WPML, Polylang), а SEO-плагин отдельно выводит canonical. Проблемы начинаются, когда страница не связана с переводом в настройках плагина: hreflang для неё просто не появляется. В самописных CMS и на Битриксе разметку обычно собирают в шаблоне шапки. Типичная ошибка там — брать адрес текущей страницы из запроса вместе с UTM-метками и параметрами сортировки, и тогда self-reference никогда не совпадает с canonical.

Три способа разметки и hreflang в sitemap

Hreflang можно указать в <head>, в HTTP-заголовке Link (единственный вариант для PDF) или в sitemap.xml. Выберите один способ: смешивание допустимо, но противоречия между источниками усложняют диагностику. Инструмент проверяет только теги в HTML.

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://example.com/ru/catalog/</loc>
    <xhtml:link rel="alternate" hreflang="ru" href="https://example.com/ru/catalog/"/>
    <xhtml:link rel="alternate" hreflang="uk" href="https://example.com/uk/catalog/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/catalog/"/>
  </url>
  <!-- такой же блок <url> для /uk/catalog/ -->
</urlset>

Sitemap удобен для больших сайтов — не раздувает HTML каждой страницы. Но каждая версия должна быть отдельным <url> с полным набором ссылок. Карту можно разобрать в анализе sitemap.xml.

Отчёт «Международное таргетирование» Google убрал из Search Console. Поэтому ошибки hreflang теперь ищут сторонними проверками и через «Проверку URL»: в ней видно, какую страницу Google выбрал канонической. Основы — в статье «Что такое hreflang», официальные правила — в документации Google.

Улучшите позиции в поиске

SEO-проблемы могут стоить вам трафика. Каскадный линкбилдинг улучшит видимость сайта в поиске.

Каскадное продвижение сайта ссылками Бонус $30Беклинки 5→50→5000 на 100+ площадках. Старт от $30, бонус $30 новичкам.