Генератор hreflang

Вставьте пары язык–URL, выберите x-default и получите проверенный набор hreflang в виде тегов <link rel="alternate">, записей xhtml:link для карты сайта и HTTP-заголовка Link. Проверяет коды языка по ISO 639-1, письменности по ISO 15924 и региона по ISO 3166-1, ловит en-uk, коды без языка и трёхбуквенные коды, повторяющиеся теги, относительные URL и отсутствие x-default — каждая страница перечисляет весь набор, обратные ссылки гарантированы. Работает в браузере, ничего не сохраняется.

Строк: 6, принято: 6. Разделяйте запятой, табуляцией, точкой с запятой или вертикальной чертой; порядок не важен; строки, начинающиеся с #, игнорируются.

Страница, которая показывается, когда ни один язык не подходит, — обычно выбор языка или основной язык. Явная строка x-default во вводе имеет приоритет.

Тегов в наборе: 6 · ошибок: 0 · предупреждений: 0

Замечания (1)

  • СправкаВ наборе 2 разных хостов. Для ccTLD-схем это нормально; проверьте, что это не опечатка.

Набор

hreflangЯзыкПисьменностьРегионURL
dedehttps://www.example.com/de/
enenhttps://www.example.com/
en-GBenGBhttps://www.example.co.uk/
jajahttps://www.example.com/ja/
ruruhttps://www.example.com/ru/
x-defaultпо умолчаниюhttps://www.example.com/

Вывод — один и тот же набор на каждой странице

  <link rel="alternate" hreflang="de" href="https://www.example.com/de/" />
  <link rel="alternate" hreflang="en" href="https://www.example.com/" />
  <link rel="alternate" hreflang="en-GB" href="https://www.example.co.uk/" />
  <link rel="alternate" hreflang="ja" href="https://www.example.com/ja/" />
  <link rel="alternate" hreflang="ru" href="https://www.example.com/ru/" />
  <link rel="alternate" hreflang="x-default" href="https://www.example.com/" />

Вставьте без изменений в <head> каждого URL из набора. Каждая страница перечисляет все альтернативы, включая себя, — именно это делает обратные ссылки полными.

Проверка и генерация выполняются в браузере — ни один запрос не покидает страницу, ничего не сохраняется. Коды языка, письменности и региона сверяются с ISO 639-1, ISO 15924 и ISO 3166-1; инструмент сообщает, что нашёл, и не решает, какому рынку нужна страница.

Как это работает

1. По одной записи на строку — языковой тег и абсолютный URL в любом порядке, разделённые запятой, табуляцией, точкой с запятой, вертикальной чертой или пробелом; строки, начинающиеся с #, игнорируются; строка x-default необязательна
2. Каждый тег разбивается на язык, письменность и регион (подчёркивания считаются дефисами), регистр нормализуется: язык строчными (ru), письменность с заглавной (Hant), регион ПРОПИСНЫМИ (GB)
3. Части проверяются — язык по ISO 639-1 (две буквы; iw/in/ji/mo помечаются как устаревшие), письменность по ISO 15924, регион по ISO 3166-1 alpha-2; en-uk, регион без языка (us) и трёхбуквенные коды (eng) отклоняются с указанием причины
4. Проверяются URL — абсолютные с http или https, разбираемые, без повторяющихся тегов между строками; один URL под двумя тегами допустим, но помечается, фрагмент (#) помечается
5. Определяется x-default: явная строка имеет приоритет, иначе — строка, выбранная в списке; более одного x-default — ошибка, отсутствие — предупреждение; весь набор с x-default в конце и есть выходной набор
6. Один и тот же набор выводится один раз на страницу: строки <link rel="alternate" hreflang="…" href="…"> для <head>, блок <url> карты сайта с записями xhtml:link для каждого URL и HTTP-заголовок Link для не-HTML документов — поскольку каждая страница несёт полный набор, каждая ссылается на все остальные, и обратные ссылки не могут отсутствовать

О hreflang и о том, что проверяет генератор

hreflang сообщает Google и Яндексу, для какого языка и, при необходимости, региона предназначена страница и где находится её эквивалент для другой аудитории. Это аннотация, а не редирект: поисковая система по-прежнему ранжирует ту страницу, которую ранжирует, но когда конкурируют несколько версий, она может подставить ту, что соответствует языку и стране пользователя. Bing и большинство других поисковиков игнорируют hreflang и вместо этого читают атрибут lang в HTML и заголовок content-language, поэтому hreflang дополняет эти сигналы, а не заменяет их.

Тег — это код языка по ISO 639-1 (две буквы, то есть en, а не eng), за которым могут следовать письменность по ISO 15924 (zh-Hant, sr-Latn) и регион по ISO 3166-1 alpha-2 (en-GB, pt-BR). Порядок важен, как и справочники: Великобритания — это GB, а не UK; регион не может стоять отдельно; тег вроде es-419 (Латинская Америка) — код области по классификации ООН M.49, который Google не принимает. Генератор нормализует регистр, который поисковые системы допускают, и отклоняет части, которые просто неверны и молча игнорируются.

Правило, которое ломает большинство внедрений, — взаимность: если страница A указывает на страницу B как на немецкую версию, B должна указывать обратно на A, и каждая страница набора обязана перечислять все остальные, включая себя. Отсутствующая обратная ссылка заставляет Google игнорировать аннотацию с обеих сторон. Генератор обходит проблему по построению — он выводит один и тот же полный набор для каждой страницы, так что ошибиться можно, только вставив другой набор на другую страницу. x-default называет страницу для посетителей, чей язык не совпадает ни с чем в наборе, — обычно это выбор языка или основной язык; он необязателен, но без него это решение остаётся за поисковой системой.

Три способа размещения делают одно и то же, и нужен только один: теги <link> в <head>, записи xhtml:link в XML-карте сайта (лучший вариант для больших сайтов, где править шаблоны постранично непрактично, а карта сайта уже генерируется) или HTTP-заголовок Link — единственный вариант для PDF и других не-HTML файлов. В любом случае URL должны быть абсолютными и каноническими: hreflang, указывающий на перенаправляемый или неканонический URL, отбрасывается. Генератор сообщает о том, что нашёл; заслуживает ли рынок собственной страницы — решение, которое он не принимает.

Частые вопросы

Нужен ли x-default?
Он необязателен, но рекомендуется, когда набор не покрывает все языки, которые могут быть у посетителя. x-default называет URL, который показывается, если ни один из перечисленных языков не подходит, — обычно страницу выбора языка или страницу на основном языке. Генератор предупреждает, если его нет, и позволяет выбрать любую строку как x-default; явная строка x-default во вводе имеет приоритет над списком.
Почему en-uk отклоняется?
Потому что код Великобритании по ISO 3166-1 — GB. en-uk — самая распространённая опечатка в hreflang; Google не угадывает, а просто игнорирует тег. Замечание показывает исправленную форму en-GB, чтобы вы поправили источник.
Можно ли использовать язык без региона и регион сам по себе?
Язык сам по себе (de) допустим и соответствует всем говорящим по-немецки независимо от страны. Регион сам по себе (de в значении «Германия» или us) недопустим — hreflang всегда начинается с языка. Чтобы нацелиться именно на Германию, используйте de-DE; на немецкоговорящих в Швейцарии — de-CH.
Проблема ли, если два языка указывают на один URL?
Нет. Одна страница может обслуживать несколько тегов — en и en-US на одном URL или испанская страница для es, es-ES и es-MX — при условии, что каждый тег встречается один раз. Генератор помечает общий URL как справку, чтобы вы подтвердили намерение, но включает оба тега в вывод.
Что означает «отсутствуют обратные ссылки» в Search Console и предотвращает ли это инструмент?
Это значит, что страница A аннотирует страницу B, но B не аннотирует A. Каждая страница набора должна нести весь набор, включая ссылку на себя. Этот генератор выводит один и тот же полный блок для каждого URL, поэтому при вставке как есть отсутствующая обратная ссылка невозможна; ошибка появляется, только если страницы позже редактируются по отдельности или один из URL набора перенаправляет.
Куда ставить hreflang — в HTML, карту сайта или HTTP-заголовок?
Выберите один вариант. Теги <link> в HTML проще всего для небольших сайтов; записи xhtml:link в карте сайта лучше масштабируются и не трогают шаблоны; HTTP-заголовок Link — единственный вариант для не-HTML файлов вроде PDF. Использовать несколько размещений можно, но любое расхождение между ними считается ошибкой, так что это удваивает поддержку без выгоды.
Использует ли Bing hreflang?
Bing заявляет, что определяет язык и рынок страницы по атрибуту lang в HTML, мета-тегу или HTTP-заголовку content-language и структуре URL, а не по hreflang. Google и Яндекс читают hreflang. Задайте и то и другое: hreflang для Google и Яндекса и корректный атрибут lang для всех остальных.
Проверка SSRПроверьте, отдаёт ли URL содержимое прямо в HTML или собирает его JavaScript'ом. Страница запрашивается как браузер и как Googlebot без выполнения JS; определяются фреймворк и режим рендеринга (Next.js, Nuxt, React SPA, WordPress…), считаются слова, ссылки и заголовки, которые видит краулер, отмечаются блокировка ботов и динамический рендеринг. Бесплатно, без регистрации.Проверка robots.txtПроверьте robots.txt для любого пути и краулера: загрузите файл с сайта или вставьте его, выберите Googlebot, Bingbot, GPTBot, ClaudeBot, PerplexityBot или свой user-agent и увидьте точное правило, которое разрешает или запрещает путь, — плюс сводку по каждому краулеру, предупреждения о синтаксисе и строки Sitemap. Сопоставление по RFC 9309, работает в браузере, ничего не сохраняется.Симулятор выдачи Google (SERP)Посмотрите, как ваша страница будет выглядеть в результатах поиска Google, ещё до публикации. Введите title, мета-описание и URL — или загрузите их с реальной страницы — и получите точный до пикселя предпросмотр для десктопа и мобильных, счётчики пикселей и символов, точный символ, на котором Google обрежет текст, и список наблюдений. Бесплатно, без регистрации, ничего не сохраняется.