Hreflang Validator

Sprawdź poprawność oznaczeń hreflang i wzajemnych linków między wersjami językowymi.

Hreflang Validator — kontrola alternate i reciprocal

Sprawdź hreflang na stronach wielojęzycznych: format kodów, x-default, duplikaty i wzajemne linki alternate.

Parsowanie linków hreflang alternate z sekcji head
Walidacja formatu kodów językowych i duplikatów
Kontrola x-default i self-referencing hreflang
Sprawdzanie statusu HTTP dla alternate URL
Opcjonalna weryfikacja wzajemnych linków reciprocal

Jak korzystać

  1. Wprowadź URL strony, która powinna należeć do klastra hreflang
  2. Uruchom walidację i przeanalizuj błędy kodów, x-default oraz self-reference
  3. W razie potrzeby włącz kontrolę reciprocal i popraw niespójne locale

FAQ

x-default wskazuje wersję fallback, gdy brak dopasowanej lokalizacji, i zmniejsza niejednoznaczność kierowania użytkowników.

Jeśli locale nie linkują się wzajemnie, wyszukiwarki mogą ignorować część sygnałów hreflang i klaster będzie niepełny.

Sprawdzanie hreflang: co testuje walidator i jak czytać raport

Walidator pobiera stronę, wyszukuje w HTML wszystkie znaczniki <link rel="alternate" hreflang="…" href="…"> i sprawdza klaster wersji językowych. Na górze są trzy liczby: znalezione linki alternate, unikalne kody i wykryte problemy. Niżej — lista problemów i tabela z kodem, docelowym URL, statusem HTTP i kolumną Reciprocal.

Co jest zgłaszane jako problem:

  • Brak linków hreflang — znaczników nie ma w HTML albo dodaje je skrypt po załadowaniu (narzędzie nie wykonuje JavaScriptu).
  • Niepoprawny kod — nie ma postaci „język” lub „język-region” (pl, en-gb, de-at) i nie jest to x-default.
  • Duplikat kodu — ten sam kod wskazuje różne adresy.
  • Brak x-default — zalecenie, nie błąd.
  • Brak self-reference — wśród alternate nie ma odnośnika do sprawdzanej strony. Wielkość liter w domenie i końcowy ukośnik są pomijane, ale http/https oraz www już nie.

Bez przełącznika reciprocal narzędzie pobiera nagłówki każdego adresu alternate i pokazuje końcowy kod odpowiedzi. Po włączeniu pobiera w całości osiem pierwszych wersji i szuka na każdej linku zwrotnego do Twojej strony. Pozostałe wersje mają w tabeli „—”.

Składnia hreflang

<link rel="alternate" hreflang="pl" href="https://example.com/oferta/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/angebot/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/offer/" />
<link rel="alternate" hreflang="uk" href="https://example.com/uk/propozytsiia/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/offer/" />
  • Język — dwuliterowy kod ISO 639-1: pl, de, en, uk.
  • Region (opcjonalnie) — ISO 3166-1 alpha-2 po myślniku: de-at, en-gb. Sam region nie działa: hreflang="gb" to błąd.
  • Wielkość liter nie ma znaczenia: en-GB i en-gb to to samo.
  • Adresy muszą być bezwzględne, z protokołem. Narzędzie uzupełnia adresy względne, żeby je sprawdzić, ale w znacznikach wpisuj pełny URL.

Pułapki w kodach

Walidator sprawdza postać kodu, a nie to, czy taki kod istnieje, więc przejrzyj tabelę samodzielnie:

  • ua — kod kraju, nie języka. Wersja ukraińska to uk lub uk-ua; dla Ukraińców w Polsce wystarczy uk albo uk-pl.
  • en-uk — błąd: Wielka Brytania to gb, a uk oznacza język ukraiński. Poprawnie en-gb.
  • zh-Hant, zh-Hans i es-419 Google akceptuje, ale ścisła kontrola formatu oznaczy je jako niepoprawne — to fałszywy alarm.

x-default: kiedy i dokąd

x-default to wersja dla wszystkich, do których nie pasuje żaden kod — zwykle strona wyboru języka albo główna wersja międzynarodowa. Nie jest obowiązkowa, ale przy przekierowaniach geograficznych z katalogu głównego to najprostszy sposób, by pokazać Google, że strona bez prefiksu nie jest kolejną wersją językową. Nie przekierowuj x-default automatycznie po IP: Googlebot skanuje głównie z adresów w USA i może nie zobaczyć pozostałych wersji.

Język czy język-region

Kod regionu jest potrzebny tylko wtedy, gdy wersje naprawdę się różnią: ceny i waluta, dostawa, warunki prawne, lokalne słownictwo. Jeśli wersja niemiecka jest jedna dla Niemiec, Austrii i Szwajcarii, wystarczy de. Prawie identyczne de-de i de-at z hreflang to normalna praktyka: Google nie traktuje ich jak duplikatów, tylko pokazuje każdemu krajowi właściwą.

Wzajemność i self-reference

Hreflang działa tylko w parach. Jeśli polska strona wskazuje niemiecką, a niemiecka nie wskazuje polskiej, Google ignoruje to powiązanie. Każda wersja musi wymieniać wszystkie wersje klastra, łącznie z sobą. Dlatego znaczniki generuje się z jednego źródła (wspólnej mapy tłumaczeń), a nie wpisuje ręcznie. W WordPressie robią to WPML i Polylang.

Najczęstsze błędy hreflang

BłądSkutekJak wykryć
Alternate prowadzi do przekierowaniaGoogle oczekuje adresu docelowego; łańcuch osłabia sygnałWalidator pokazuje status po przekierowaniu, więc sprawdź adresy w teście przekierowań
Alternate z kodem 404 lub noindexWersja wypada z klastraKolumna statusu; noindex — w analizie meta tagów
Canonical wskazuje inną wersję językowąGoogle scala wersje i pokazuje jednąKażda wersja powinna być kanoniczna sama dla siebie
Brak linku zwrotnegoPowiązanie ignorowaneTryb reciprocal
Różne formy adresu (ukośnik, www, parametry)Self-reference i linki zwrotne się nie zgadzająPorównaj kolumnę URL z canonical

Test hreflang krok po kroku

  1. Sprawdź stronę główną i po jednej stronie z każdego szablonu (kategoria, produkt, artykuł) bez trybu reciprocal: czy znaczniki w ogóle są w HTML, czy kody są poprawne, czy jest x-default i self-reference.
  2. Włącz reciprocal dla tych samych stron. Każde „Nie” to wersja bez linku zwrotnego — zwykle tłumaczenie opublikowane po jednej stronie, ale jeszcze niepodlinkowane po drugiej.
  3. Otwórz każdą wersję z tabeli i sprawdź także ją. Wszystkie wersje powinny mieć identyczny zestaw linków; pięć alternate na jednej i cztery na drugiej oznacza rozjechany klaster.
  4. Porównaj canonical każdej wersji z jej adresem w hreflang — muszą zgadzać się co do znaku.
  5. Po poprawkach poproś o ponowne zaindeksowanie kluczowych stron w „Sprawdzeniu adresu URL”. Google odbudowuje klastry stopniowo, w miarę ponownego skanowania wszystkich wersji.

Gdzie najczęściej się psuje

W WordPressie hreflang generuje wtyczka wielojęzyczności (WPML, Polylang), a canonical — wtyczka SEO. Kłopot pojawia się, gdy strona nie jest powiązana z tłumaczeniem w ustawieniach wtyczki: wtedy hreflang po prostu się nie wyświetla. W autorskich CMS-ach znaczniki buduje się zwykle w szablonie nagłówka. Klasyczny błąd to pobieranie bieżącego adresu z żądania razem z parametrami UTM i sortowania — wtedy self-reference nigdy nie zgadza się z canonical.

Trzy sposoby wdrożenia, w tym hreflang w sitemap

Hreflang można podać w <head>, w nagłówku HTTP Link (jedyna opcja dla PDF) lub w mapie witryny XML. Wybierz jeden sposób — mieszanie jest dozwolone, ale sprzeczne źródła utrudniają diagnozę. Walidator czyta wyłącznie znaczniki w HTML.

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://example.com/oferta/</loc>
    <xhtml:link rel="alternate" hreflang="pl" href="https://example.com/oferta/"/>
    <xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/angebot/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/en/offer/"/>
  </url>
  <!-- analogiczny pełny blok <url> dla /de/angebot/ -->
</urlset>

Mapa witryny sprawdza się w dużych serwisach, bo nie obciąża HTML każdej podstrony, ale każda wersja potrzebuje osobnego wpisu <url> z kompletem linków. Mapę przeanalizujesz w analizie sitemap.xml.

Raport „Kierowanie międzynarodowe” Google usunął z Search Console. Błędy hreflang wychodzą więc tylko w zewnętrznych testach i w „Sprawdzeniu adresu URL”, które pokazuje stronę kanoniczną wybraną przez Google. Oficjalne zasady opisuje dokumentacja Google.

Popraw pozycje w wyszukiwarce

Problemy SEO mogą kosztować Cię ruch. Kaskadowy link building poprawi widoczność strony w wyszukiwarce.

Kaskadowa promocja witryny linkami Bonus 30 $Linki zwrotne 5→50→5000 w ponad 100 serwisach. Start od 30 $, bonus 30 $ dla nowych.