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: що робить валідатор і як читати звіт

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

Що вважається проблемою:

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

Без перемикача reciprocal інструмент запитує заголовки кожної alternate-адреси й показує підсумковий код відповіді. З перемикачем — повністю завантажує перші вісім версій і шукає на кожній посилання назад на вашу сторінку. Для решти версій у таблиці буде «—».

Синтаксис hreflang

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

Пастки в кодах

Валідатор перевіряє форму коду, а не те, чи такий код існує. Тож переглядайте таблицю уважно:

  • ua — найпоширеніша помилка українських сайтів. Це код країни, а мова — uk. Для української в Україні — uk-ua, для російськомовної аудиторії в Україні — ru-ua.
  • en-uk — помилка: Велика Британія має код gb, правильно en-gb.
  • zh-Hant, zh-Hans і es-419 Google приймає, але сувора перевірка формату позначить їх як некоректні. Якщо у вас такі коди, це хибна тривога.

x-default: коли і куди ставити

x-default — версія для всіх, кому не підійшов жоден код. Зазвичай це сторінка вибору мови або основна версія сайту. Вказувати його не обов'язково, але для сайтів із геоперенаправленням це найкращий спосіб пояснити Google, що головна без префікса — не окрема мовна версія. Не робіть на x-default автоматичний редирект за IP: Googlebot сканує переважно з американських адрес і може не побачити інших версій.

Мова чи мова-регіон

Регіональний код потрібен, лише коли версії справді різняться: ціни й валюта, доставка, юридичні умови, місцева лексика. Якщо англійська версія одна для всіх країн, достатньо en. Майже однакові en-us і en-gb з hreflang — нормальна практика: дублем Google їх не вважає, а показує кожній країні свою.

Взаємність і self-reference

Hreflang працює лише парами. Якщо українська сторінка посилається на англійську, а англійська на українську — ні, Google ігнорує зв'язок. Кожна версія має перелічувати всі версії кластера, зокрема себе. Тому розмітку генерують з одного джерела (спільної таблиці перекладів), а не вписують вручну на кожній сторінці. У WordPress це роблять WPML і Polylang, у Shopify — вбудовані Markets.

Типові помилки hreflang

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

Перевірка hreflang крок за кроком

  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/catalog/</loc>
    <xhtml:link rel="alternate" hreflang="uk" href="https://example.com/catalog/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/catalog/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/en/catalog/"/>
  </url>
  <!-- такий самий блок <url> для /en/catalog/ -->
</urlset>

Sitemap зручний для великих сайтів, бо не роздуває HTML кожної сторінки. Але кожна версія має бути окремим <url> з повним набором посилань. Карту можна розібрати в аналізі sitemap.xml.

Звіт «Міжнародне таргетування» Google прибрав із Search Console. Тепер помилки hreflang шукають сторонніми перевірками та через «Перевірку URL», де видно, яку сторінку Google обрав канонічною. Основи — у статті «Що таке hreflang», офіційні правила — в документації Google.

Покращте позиції в пошуку

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

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