Hreflang: jak oznaczyć wersje językowe strony

Masz stronę w kilku językach albo dla kilku krajów? Pokazujemy, jak powiedzieć Google, która wersja jest dla kogo, i jakie błędy sprawiają, że Google ignoruje te oznaczenia.

Aktualizacja: Zespół Search Experts

Ilustracja: trzy wersje tej samej strony w różnych językach połączone strzałkami w obie strony
Spis treści
  1. Hreflang w skrócie
  2. Kiedy hreflang jest potrzebny
  3. Trzy sposoby dodania hreflang
  4. Zasady, których pilnuje Google
  5. Do czego służy x-default
  6. Hreflang a link kanoniczny
  7. Najczęstsze błędy
  8. Jak sprawdzić hreflang w 2026 roku
  9. Kiedy poprosić o pomoc

Google pokazuje klientom złą wersję językową Twojej strony?

Co obejmuje audyt SEO i GEO

Hreflang w skrócie

Hreflang to oznaczenie w kodzie strony, które mówi Google: ta sama treść istnieje też w innym języku albo dla innego kraju, a tu są adresy wszystkich wersji. Dzięki temu Google może pokazać klientowi z Niemiec niemiecką wersję Twojej oferty, a klientowi z Polski polską.

Potrzebujesz go tylko wtedy, gdy masz co najmniej dwie wersje tej samej strony. Strona wyłącznie po polsku, bez osobnych wersji dla różnych krajów, go nie potrzebuje. Hreflang dodaje się na jeden z trzech równorzędnych sposobów: w kodzie HTML, w nagłówku HTTP albo w mapie witryny.

Kiedy hreflang jest potrzebny

Google podaje trzy przykładowe sytuacje, w których warto oznaczyć wersje strony:

  • Pełne tłumaczenie. Masz stronę po polsku, angielsku i niemiecku, każdą pod własnym adresem.
  • Jeden język, różne kraje. Na przykład wersja angielska dla Wielkiej Brytanii z cenami w funtach i dla USA z cenami w dolarach. Treść jest prawie taka sama, różni się walutą czy warunkami dostawy.
  • Przetłumaczony tylko szablon. Menu i stopka są w kilku językach, a treść główna w jednym. Tak często działają fora.

Dwie rzeczy, które warto wiedzieć na starcie. Po pierwsze, przetłumaczone strony nie są dla Google duplikatami. Dokumentacja mówi, że wersje językowe uznaje się za duplikaty tylko wtedy, gdy treść główna nie jest przetłumaczona. Po drugie, hreflang nie mówi Google, w jakim języku jest strona. Google rozpoznaje język z widocznej treści i nie korzysta do tego ani z hreflang, ani z atrybutu lang, ani z adresu. Dlatego każda wersja powinna mieć treść i nawigację w jednym języku.

Każda wersja potrzebuje też własnego adresu, na przykład firma.pl/en/ albo firma.de. Google odradza zmienianie języka na tym samym adresie według plików cookie czy ustawień przeglądarki, bo robot może wtedy nie zobaczyć wszystkich wersji.

Trzy sposoby dodania hreflang

Przykład: firma ma stronę oferty po polsku, angielsku i niemiecku, a na stronie głównej wybór języka. Przykłady nagłówka HTTP i mapy witryny są uproszczone do dwóch wersji: polskiej i angielskiej. Google uznaje trzy sposoby za równoważne. Wybierz jeden: stosowanie wszystkich naraz według Google nie daje żadnej korzyści, a utrudnia utrzymanie.

1. Elementy link w sekcji head

Ten sam zestaw elementów wstawiasz w <head> każdej wersji, łącznie z odnośnikiem do niej samej:

<link rel="alternate" hreflang="pl" href="https://firma.pl/oferta/" />
<link rel="alternate" hreflang="en" href="https://firma.pl/en/offer/" />
<link rel="alternate" hreflang="de" href="https://firma.pl/de/angebot/" />
<link rel="alternate" hreflang="x-default" href="https://firma.pl/" />

Elementy muszą trafić do poprawnie zbudowanej sekcji <head>. Google radzi w razie wątpliwości wkleić wyrenderowany kod strony do walidatora HTML i sprawdzić, czy linki są w head. Nie łącz też hreflang z innymi atrybutami, na przykład media, w jednym elemencie link.

2. Nagłówek HTTP

Przydaje się dla plików, które nie są stronami HTML, na przykład cennika w PDF w dwóch językach. Serwer zwraca przy każdej wersji pliku ten sam nagłówek. Wysyła go w jednej linii, a tu podzieliliśmy go dla czytelności:

Link: <https://firma.pl/cennik.pdf>; rel="alternate"; hreflang="pl",
      <https://firma.pl/en/price-list.pdf>; rel="alternate"; hreflang="en"

3. Mapa witryny

Dobre rozwiązanie przy dużym sklepie, bo nie dotykasz szablonu strony. Każdy adres dostaje w mapie witryny XML własny wpis, a w nim listę wszystkich wersji, łącznie z nim samym. Na górze pliku trzeba dodać przestrzeń nazw xhtml:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://firma.pl/oferta/</loc>
    <xhtml:link rel="alternate" hreflang="pl" href="https://firma.pl/oferta/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://firma.pl/en/offer/"/>
  </url>
  <url>
    <loc>https://firma.pl/en/offer/</loc>
    <xhtml:link rel="alternate" hreflang="pl" href="https://firma.pl/oferta/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://firma.pl/en/offer/"/>
  </url>
</urlset>

Elementy xhtml:link nie wliczają się do limitu adresów w mapie witryny, a ich kolejność nie ma znaczenia.

Zasady, których pilnuje Google

  • Każda wersja wymienia siebie i wszystkie pozostałe. Zestaw odnośników jest identyczny na każdej wersji strony.
  • Odnośniki działają w obie strony. Jeśli polska strona wskazuje angielską, angielska musi wskazywać polską. Gdy dwie strony nie wskazują siebie nawzajem, Google ignoruje te tagi. To zabezpieczenie: obca strona nie może ogłosić się wersją językową Twojej.
  • Pełne adresy. Z https:// i domeną. Zapis /en/offer/ albo //firma.pl/en/offer/ jest niepoprawny. Wersje mogą leżeć w różnych domenach, na przykład firma.pl i firma.de. Podawaj adresy z HTTPS, jeśli strona działa na HTTPS.
  • Język, potem opcjonalnie kraj. Najpierw kod języka według ISO 639-1 (pl, en, de), po myślniku kod kraju według ISO 3166-1 Alpha 2 (de-AT to niemiecki dla Austrii). Sam kod kraju nie wystarczy, bo Google nie wyprowadza z niego języka.
  • Wielkość liter jest obojętna. We wrześniu 2026 roku Google zmienił przykłady w dokumentacji na zapis en-GB i dopisał, że akceptuje małe i wielkie litery. Wielkie litery w kodzie kraju to tylko konwencja standardu ISO. Strony z zapisem en-gb nie trzeba poprawiać.

Przy wielu wersjach trudno utrzymać komplet odnośników na każdej stronie. Google dopuszcza braki i przetworzy te pary, które wskazują siebie nawzajem. Pilnuj wtedy przede wszystkim, żeby każda nowa wersja była powiązana w obie strony z wersją główną, od której serwis się zaczął.

Google uwzględni

  • dwie strony, które wskazują siebie nawzajem
  • kod języka z regionem albo bez, na przykład pl, en-GB
  • en-GB i en-gb, bo wielkość liter nie ma znaczenia
  • x-default dla wszystkich niedopasowanych języków

Google pominie

  • tag, na który druga strona nie odpowiada
  • kody spoza standardów ISO, na przykład es-419
  • zarezerwowany kod regionu, na przykład UK, EU, UN: Google pominie tę część oznaczenia
  • rel="canonical" z atrybutem hreflang przy wyborze strony kanonicznej
Według dokumentacji Google. Sam kod kraju bez języka też jest błędem: „be” oznacza język białoruski. Dla Belgii poprawne są na przykład nl-BE i fr-BE.

Do czego służy x-default

x-default wskazuje stronę dla wszystkich, których język nie pasuje do żadnej z Twoich wersji. Jeśli masz polską, angielską i niemiecką, a stronę otwiera ktoś z ustawionym francuskim, Google może pokazać mu adres oznaczony jako x-default.

Google pisze, że wartość została zaprojektowana dla stron z wyborem języka lub kraju i z nimi działa najlepiej. Może to być też jedna ze zwykłych wersji, na przykład angielska. Przy x-default nie podaje się kodu języka. Dokumentacja poleca go zwłaszcza dla strony głównej z wyborem języka albo z automatycznym przekierowaniem.

Hreflang a link kanoniczny

Oba oznaczenia często stoją obok siebie w kodzie i łatwo je pomylić. Hreflang mówi „to są wersje tej samej treści dla różnych odbiorców”. Link kanoniczny wskazuje, który z podobnych adresów Google ma traktować jako główny. Z dokumentacji Google wynikają trzy zasady:

  • Strona kanoniczna w tym samym języku. Angielska wersja nie powinna wskazywać polskiej jako kanonicznej. Zwykle każda wersja wskazuje samą siebie. Gdy nie ma strony w tym samym języku, wybierz najbliższy język zastępczy.
  • Nie łącz canonical z hreflang w jednym elemencie. Google nie bierze pod uwagę przy wyborze strony kanonicznej elementu rel="canonical" z atrybutem hreflang. Do wersji językowych służy rel="alternate".
  • Duplikaty w jednym języku. Jeśli ta sama niemiecka treść jest pod firma.de i firma.pl/de/, wybierz wersję preferowaną i oznacz ją linkiem kanonicznym razem z hreflang.

Google przy wyborze strony kanonicznej woli adresy, które należą do zestawu hreflang. W przykładzie z dokumentacji wersje de-de i de-ch wskazujące siebie nawzajem wygrywają z wersją de-at, której brakuje w zestawie. Jeśli Search Console pokazuje dla wersji językowej status duplikatu, zacznij od sprawdzenia, czy jest w zestawie i czy odnośniki działają w obie strony.

Najczęstsze błędy

  • Brak odnośnika zwrotnego. Polska strona wskazuje angielską, ale angielska nie wskazuje polskiej. Google może wtedy zignorować oznaczenia.
  • Zły kod. en-UK zamiast en-GB, pl-EU albo es-419. Google ignoruje zarezerwowane kody regionu, takie jak UK, EU czy UN, a kodów spoza standardów ISO nie obsługuje.
  • Tag wskazuje stronę główną zamiast odpowiednika. Hreflang łączy konkretne strony: oferta z ofertą, produkt z tym samym produktem. Wyjątkiem jest x-default, który może wskazywać stronę z wyborem języka.
  • Automatyczne przekierowanie według języka albo IP. Google odradza przekierowywanie użytkownika na inną wersję językową według tego, gdzie się znajduje albo jaki język ma ustawiony. Googlebot odwiedza strony zwykle z adresów w USA i nie wysyła nagłówka Accept-Language, więc przy takich regułach może nigdy nie zobaczyć polskiej wersji. Zamiast przekierowania daj link do innych wersji językowych.
  • Tagi w złym miejscu. Elementy link poza sekcją head albo dodawane w sposób, który psuje jej strukturę.
  • Kilka metod, które sobie przeczą. Wtyczka dodaje tagi w HTML, a mapa witryny z innego narzędzia wskazuje inne adresy. Zostaw jedną metodę.

Google ignoruje też meta tagi lokalizacji, na przykład geo.position. Nie zastąpią hreflang ani własnych adresów dla wersji.

Jak sprawdzić hreflang w 2026 roku

Search Console nie ma już raportu kierowania międzynarodowego, w którym kiedyś widać było błędy hreflang. Google wycofał go w 2022 roku i usunął z dokumentacji odwołania do niego w sierpniu tamtego roku. Zalecenia dotyczące hreflang według Google pozostały aktualne. Stan na 28 października 2026 roku: w Search Console nie ma raportu, który zbiera błędy hreflang.

Co możesz zrobić zamiast tego:

  1. Sprawdź kod widziany przez Google. W narzędziu do sprawdzania adresów URL uruchom test wersji opublikowanej i obejrzyj wyrenderowany kod HTML. Zobaczysz, czy elementy link są w sekcji head, a przy plikach PDF, czy serwer wysyła nagłówek Link. Jak czytać wynik sprawdzania adresu URL opisujemy osobno.
  2. Porównaj pary. Otwórz kod każdej wersji i sprawdź, czy zestaw odnośników jest identyczny i czy każda wersja wymienia samą siebie.
  3. Użyj zewnętrznego narzędzia. Dokumentacja Google wymienia generator tagów hreflang Aleydy Solis i tester Merkle do sprawdzania pojedynczej strony. Google zaznacza, że nie utrzymuje tych narzędzi i ich nie sprawdza. Przy dużych serwisach błędy zbiorczo pokazują programy do skanowania strony.
  4. Zobacz wyniki z perspektywy kraju. W raporcie Skuteczność w Search Console przefiltruj kraj i sprawdź, które adresy zbierają tam wyświetlenia. Jeśli angielska wersja zbiera wyświetlenia głównie w Polsce, sprawdź zapytania, adres kanoniczny i oznaczenia hreflang. Sam kraj nie świadczy o błędzie, bo w Polsce można szukać po angielsku.

Kiedy poprosić o pomoc

Przy dwóch wersjach językowych i wtyczce, która dodaje tagi sama, na początek wystarczy sprawdzić kilka par stron z różnych szablonów. Gdy masz sklep w kilku krajach, wersje w osobnych domenach albo w Google widać złą wersję językową, sprawdzamy hreflang razem z linkami kanonicznymi, przekierowaniami i mapą witryny w ramach audytu SEO i GEO.

Co obejmuje audyt SEO i GEO

Kiedy potrzebny jest specjalista

Google pokazuje klientom złą wersję językową Twojej strony? W audycie sprawdzamy hreflang razem z linkami kanonicznymi, przekierowaniami i mapą witryny.

Co obejmuje audyt SEO i GEO

Chcesz zlecić całość? Link kanoniczny: jak działa

Najczęstsze pytania

Co to jest hreflang?

To oznaczenie w kodzie strony, mapie witryny albo nagłówku HTTP, które informuje Google, że ta sama treść istnieje w innych językach lub dla innych krajów, i podaje adresy tych wersji. Google używa go, żeby pokazać użytkownikowi najbardziej pasującą wersję.

Czy hreflang jest potrzebny, jeśli strona jest tylko po polsku?

Nie, jeśli nie masz osobnych wersji dla różnych krajów. Hreflang ma sens dopiero wtedy, gdy ta sama strona ma co najmniej dwie wersje, na przykład polską i angielską albo niemiecką dla Niemiec i dla Austrii.

Czy pisać en-GB czy en-gb?

Obojętnie. Google akceptuje małe i wielkie litery. Od września 2026 roku dokumentacja używa zapisu en-GB, bo wielkie litery w kodzie kraju to konwencja standardu ISO 3166-1.

Czy hreflang zastępuje link kanoniczny?

Nie. To dwa różne oznaczenia. Hreflang łączy wersje językowe, link kanoniczny wskazuje główny adres spośród podobnych stron. Każda wersja językowa powinna mieć stronę kanoniczną w tym samym języku, zwykle samą siebie.

Czy przetłumaczone strony to duplikaty?

Według Google nie. Wersje językowe uznaje się za duplikaty tylko wtedy, gdy treść główna nie została przetłumaczona, a zmienia się na przykład tylko menu i stopka.

Gdzie w Search Console sprawdzić błędy hreflang?

Nigdzie zbiorczo. Raport kierowania międzynarodowego Google wycofał w 2022 roku. Kod widziany przez Google sprawdzisz w narzędziu do sprawdzania adresów URL, a cały serwis zewnętrznym programem do skanowania.

Która metoda jest najlepsza: HTML, nagłówek czy mapa witryny?

Dla Google są równoważne. Wybierz jedną, którą najłatwiej utrzymać. Nagłówek HTTP przydaje się dla plików PDF, mapa witryny dla dużych sklepów, gdzie nie chcesz zmieniać szablonu.

Przeczytaj też

Źródła