Hreflang (wersje językowe strony)

Hreflang to adnotacja, którą mówisz Google, że strona ma wersje w innych językach lub dla innych regionów, i pod jakimi adresami. Google używa jej, by pokazać użytkownikowi właściwą wersję. Wdraża się ją w kodzie HTML, w nagłówku HTTP albo w mapie witryny. Każda wersja musi wymieniać wszystkie pozostałe i samą siebie, inaczej Google adnotacje zignoruje.

Hreflang to adnotacja rel="alternate" hreflang="kod" wskazująca Google wersje językowe i regionalne tej samej strony. Działa tylko wtedy, gdy każda wersja wymienia wszystkie pozostałe i samą siebie.

Jak wygląda

W sekcji head każdej wersji strony, identyczny zestaw na każdej z nich:

<link rel="alternate" hreflang="pl" href="https://example.com/pl/produkt/" />

<link rel="alternate" hreflang="de" href="https://example.com/de/produkt/" />

<link rel="alternate" hreflang="de-CH" href="https://example.com/de-ch/produkt/" />

<link rel="alternate" hreflang="x-default" href="https://example.com/" />

W nagłówku HTTP, co działa też dla plików PDF:

Link: <https://example.com/plik.pdf>; rel="alternate"; hreflang="pl", <https://example.com/de/plik.pdf>; rel="alternate"; hreflang="de"

W mapie witryny każdy adres dostaje element url z wpisami xhtml:link dla wszystkich wersji, łącznie z sobą:

<xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/produkt/"/>

Mapa wymaga deklaracji przestrzeni nazw xmlns:xhtml="http://www.w3.org/1999/xhtml" w elemencie urlset. Jak zbudować taki plik, opisuje hasło o mapie witryny.

Jak traktuje to Google

Dokumentacja Google (wersje zlokalizowane strony) uznaje trzy metody za równoważne: kod HTML, nagłówki HTTP i mapę witryny. Stosowanie kilku naraz nie daje korzyści, a utrudnia utrzymanie. Google nie używa hreflang ani atrybutu lang do wykrywania języka strony; język ustala algorytmami. Zlokalizowane wersje uznaje za duplikaty tylko wtedy, gdy główna treść pozostaje nieprzetłumaczona.

Wytyczne wspólne dla wszystkich metod z tego samego dokumentu:

  • każda wersja językowa musi uwzględniać siebie i wszystkie inne wersje,
  • adresy muszą być pełne, z protokołem, na przykład https://example.com/foo, a nie /foo,
  • adresy nie muszą być w tej samej domenie,
  • jeśli dwie strony nie wskazują na siebie nawzajem, tagi zostaną zignorowane; to chroni przed podpinaniem cudzych stron jako wersji Twoich,
  • przy wielu adresach w jednym języku dla różnych regionów warto dodać wersję ogólną, na przykład en obok en-IE i en-CA.

Kody opisuje osobna sekcja dokumentu. Wartość składa się z kodu języka w formacie ISO 639-1 i opcjonalnego kodu regionu w formacie ISO 3166-1 alfa-2, rozdzielonych myślnikiem, jak en-US. Inne kody, na przykład es-419, nie są obsługiwane. Wielkość liter nie ma znaczenia. Nie można podać samego kraju: be to język białoruski, a nie Belgia. Dla różnych alfabetów można dodać kod pisma ISO 15924, na przykład zh-Hant i zh-Hans. Wartość x-default wskazuje stronę zastępczą dla użytkowników, których ustawienia nie pasują do żadnej wersji; dokument poleca ją zwłaszcza dla stron wyboru języka i kraju.

Hreflang łączy się z wyborem strony kanonicznej. Dokumentacja o duplikatach (jak określić kanoniczny URL) mówi, że Google preferuje jako kanoniczne adresy z klastra hreflang, i zaleca wskazywać stronę kanoniczną w tym samym języku. Wersje językowe bez adnotacji to według Google typowa przyczyna wyboru niewłaściwego adresu (rozwiązywanie problemów z wyborem strony kanonicznej). Jak Google wybiera, opisuje hasło o adresie kanonicznym.

Kiedy ma znaczenie

Dokumentacja wymienia trzy sytuacje, w których zaleca adnotacje:

  • główna treść w jednym języku, przetłumaczony tylko szablon, na przykład nawigacja i stopka,
  • niewielkie różnice regionalne w tym samym języku, na przykład angielski dla USA, Wielkiej Brytanii i Irlandii,
  • pełne tłumaczenie całej witryny na kilka języków.

Najczęstsze błędy

BłądSkutek
Brak linku zwrotnego: wersja A wskazuje B, ale B nie wskazuje AGoogle ignoruje adnotację albo źle ją interpretuje
Sam kod kraju, na przykład hreflang="UK"Kod nieprawidłowy, adnotacja bez efektu
Kod regionu zarezerwowany, na przykład EU albo UNGoogle ignoruje tę część adnotacji
Adres względny albo bez protokołuAdnotacja nie spełnia wymogu pełnego adresu
Hreflang do strony, która przekierowuje albo zwraca 404Klaster się rozpada, wersja znika z zestawu
Hreflang do adresu innego niż kanonicznyGoogle indeksuje wersję kanoniczną, a adnotacja wskazuje coś innego
Zestaw różni się między wersjamiBrak wzajemności na części stron, część adnotacji ignorowana

Jak sprawdzić

Z linii poleceń wyciągnij wszystkie adnotacje z HTML jednej wersji:

curl -s https://example.com/pl/produkt/ | grep -i 'hreflang'

Potem to samo dla każdego adresu z listy. Zestaw musi być identyczny. Nagłówek HTTP sprawdzisz osobno:

curl -sI https://example.com/plik.pdf | grep -i '^link:'

Dla każdego adresu z adnotacji potwierdź kod 200, bo wersja, która przekierowuje, nie domyka klastra:

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/de/produkt/

W narzędziach deweloperskich przeglądarki wyszukaj hreflang w zakładce Elementy. Search Console nie ma osobnego raportu wersji językowych; decyzję o adresie kanonicznym pokazuje narzędzie do sprawdzania adresów URL (narzędzie do sprawdzania adresów URL). Mapę witryny z adnotacjami sprawdzisz w sprawdzarce sitemapy, a kody odpowiedzi wszystkich wersji w sprawdzarce przekierowań. Przy przeprowadzce na nową domenę adnotacje trzeba zaktualizować we wszystkich wersjach naraz, co opisuje poradnik o migracji.

Monitorowanie

IndexRise nie monitoruje adnotacji hreflang. Najbliższe sprawdzenia, które robi co noc, to kod odpowiedzi i tag canonical każdej monitorowanej wersji: jeśli wersja niemiecka zacznie przekierowywać albo dostanie canonical do polskiej, klaster rozpadnie się z tego powodu, a Ty dowiesz się rano. Samą składnię adnotacji sprawdzaj po każdym wdrożeniu poleceniami z sekcji wyżej.

Hreflang działa parami. Jedna wersja bez linku zwrotnego i cały zestaw przestaje być wiarygodny dla Google.

Najczęściej zadawane pytania

Czy hreflang wpływa na pozycje?

Nie bezpośrednio. Służy do pokazania właściwej wersji językowej użytkownikowi. Google według dokumentacji i tak potrafi znaleźć wersje alternatywne, ale wyraźne wskazanie daje pewniejszy wynik.

Czy Google rozpoznaje język po hreflang?

Nie. Dokumentacja mówi wprost, że Google nie używa hreflang ani atrybutu lang do wykrywania języka strony. Język ustala algorytmicznie na podstawie treści.

Czy mogę podać sam kod kraju, na przykład hreflang=pl dla Polski?

Pierwszy kod to zawsze język w formacie ISO 639-1, więc pl oznacza język polski, nie Polskę. Kod regionu jest opcjonalny i idzie po myślniku: pl-PL. Samego regionu podać nie można.

Co z hreflang na stronie, która ma canonical do innej?

Dokumentacja o adresach kanonicznych zaleca, by przy hreflang wskazywać stronę kanoniczną w tym samym języku. Adnotacje hreflang na stronie, która nie jest kanoniczna, nie mają sensu, bo Google indeksuje wersję kanoniczną.

Czy wersje muszą być w jednej domenie?

Nie. Według dokumentacji alternatywne adresy nie muszą należeć do tej samej domeny, ale muszą być pełne, z protokołem https.

Czy dla dwóch wersji mam też wymieniać samą siebie?

Tak. Każda wersja językowa musi uwzględniać siebie i wszystkie pozostałe. Zestaw linków jest identyczny na każdej wersji strony.

Aktualizacja: 2026-10-20