Hreflang Validator
Перевірте коректність hreflang-розмітки та взаємних посилань між мовними версіями.
Hreflang Validator — перевірка alternate і reciprocal
Перевірте hreflang-розмітку multilingual сторінок: формат кодів, наявність x-default, дублікати та взаємні alternate-посилання.
Як користуватися
- Введіть URL сторінки, яка має входити до hreflang-кластера
- Запустіть перевірку й проаналізуйте помилки кодів, x-default і self-reference
- За потреби увімкніть reciprocal-перевірку й виправте неузгоджені локалі
FAQ
Перевірка 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-419Google приймає, але сувора перевірка формату позначить їх як некоректні. Якщо у вас такі коди, це хибна тривога.
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 крок за кроком
- Перевірте головну й по одній сторінці кожного шаблону (категорія, товар, стаття) без reciprocal — переконайтеся, що розмітка виводиться, коди коректні, є x-default і self-reference.
- Увімкніть reciprocal для тих самих сторінок. Кожен рядок із «Ні» — версія, що не посилається назад. Найчастіше так буває, коли переклад сторінки вже опубліковано, а на вихідній його ще немає, або навпаки.
- Відкрийте кожну версію з таблиці й перевірте її саму: набір посилань на всіх версіях має бути однаковим. Якщо на одній версії п'ять alternate, а на іншій чотири, кластер розсинхронізовано.
- Звірте canonical кожної версії: він має збігатися з адресою цієї версії в hreflang символ у символ.
- Після правок запросіть повторне сканування ключових сторінок через «Перевірку 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-проблеми можуть коштувати вам трафіку. Каскадний лінкбілдінг покращить видимість сайту в пошуку.