Hreflang – co to jest, jak wdrożyć i jak uniknąć błędów w wielojęzycznym SEO

Hreflang to atrybut HTML (rel="alternate" hreflang="xx"), który mówi Google: „ta strona ma wersje w innych językach lub dla innych krajów – oto linki do nich”. Bez hreflang: Google może wyświetlić polską wersję strony użytkownikowi z Niemiec (bo ma wyższy autorytet), albo traktować polską i angielską wersję jako duplikaty (ta sama treść, inny język = duplikat w oczach algorytmu). Hreflang rozwiązuje oba problemy – kieruje właściwą wersję językową do właściwego użytkownika.

Kiedy potrzebujesz hreflang

Tak, potrzebujesz gdy masz stronę w wielu językach (polskim + angielskim + niemieckim) lub wielu wersjach regionalnych (angielski dla USA + angielski dla UK + angielski dla Australii). Konkretne scenariusze:

Wielojęzyczna strona firmowa: twojafirma.pl (PL) + twojafirma.com/en/ (EN) + twojafirma.de (DE). Hreflang mówi Google: „/en/ to angielska wersja tego samego contentu co /”.

E-commerce międzynarodowy: sklep.pl (PLN, polski) + sklep.de (EUR, niemiecki) + shop.com (USD, angielski). Te same produkty, inne języki i waluty. Bez hreflang: Google może wyświetlić niemiecką wersję polskiemu użytkownikowi (bo .de ma więcej linków).

Blog z przetłumaczonymi artykułami: artykuł po polsku + tłumaczenie angielskie. Hreflang łączy je → Google wie, że to ta sama treść w dwóch językach, nie duplikat.

Nie potrzebujesz gdy: strona jest tylko w jednym języku (nawet jeśli odwiedzają ją ludzie z różnych krajów – hreflang to o wersjach językowych, nie o lokalizacji użytkownika).

Jak wygląda tag hreflang

W sekcji <head> każdej strony:

<link rel="alternate" hreflang="pl" href="https://twojafirma.pl/artykul" />
<link rel="alternate" hreflang="en" href="https://twojafirma.com/en/article" />
<link rel="alternate" hreflang="de" href="https://twojafirma.de/artikel" />
<link rel="alternate" hreflang="x-default" href="https://twojafirma.com/en/article" />

Czytamy: „ta strona ma 3 wersje językowe: polską, angielską, niemiecką. Domyślna (x-default) to angielska – wyświetl ją użytkownikom, dla których nie ma dedykowanej wersji (np. Japończyk)”.

Kluczowe zasady:

Dwukierunkowe. Hreflang musi być na obu stronach – polska strona wskazuje na angielską I angielska wskazuje na polską. Jednokierunkowy hreflang (polska wskazuje na angielską, ale angielska nie wskazuje na polską) → Google ignoruje.

Self-referencing. Każda strona musi wskazywać na siebie – polska strona ma hreflang=”pl” z linkiem do siebie + hreflang=”en” z linkiem do angielskiej. Brak self-reference → Google ignoruje.

x-default. Opcjonalny ale zalecany – wskazuje domyślną wersję dla użytkowników, których język nie jest obsługiwany. Najczęściej: angielska wersja.

Kody języków i krajów

Hreflang używa kodów ISO 639-1 (język) i opcjonalnie ISO 3166-1 Alpha-2 (kraj):

Hreflang Znaczenie Kiedy używać
hreflang="pl" Polski (dowolny kraj) Jedna polska wersja dla wszystkich
hreflang="en" Angielski (dowolny kraj) Jedna angielska wersja dla wszystkich
hreflang="de" Niemiecki Jedna niemiecka wersja
hreflang="en-US" Angielski dla USA Osobna wersja dla Ameryki (USD, date format, spelling)
hreflang="en-GB" Angielski dla UK Osobna wersja dla Wielkiej Brytanii (GBP)
hreflang="pt-BR" Portugalski dla Brazylii Brazylijski vs europejski portugalski
hreflang="x-default" Domyślna wersja Dla użytkowników bez dedykowanej wersji językowej

Język + kraj: używaj tylko gdy masz osobne wersje per kraj tego samego języka (en-US vs en-GB). Jeśli masz jedną wersję angielską: hreflang="en" (bez kodu kraju). Nie pisz hreflang="en-EU" – EU to nie kraj w ISO 3166.

3 sposoby wdrożenia hreflang

1. Tagi HTML w <head> (najczęstsze)

Dodaj tagi <link rel="alternate"> w sekcji <head> każdej strony. Na WordPressie: wtyczka WPML lub Polylang robi to automatycznie. Ręcznie: w motywie → header.php → PHP generujący tagi per język.

2. HTTP header (dla nie-HTML: PDF, dokumenty)

Link: <https://twojafirma.pl/artykul>; rel="alternate"; hreflang="pl",
      <https://twojafirma.com/en/article>; rel="alternate"; hreflang="en"

Używaj dla plików, które nie mają <head> (PDF, API). Na Apache/LiteSpeed: .htaccessHeader set Link. Na Nginx: add_header Link.

3. Sitemap XML

<url>
  <loc>https://twojafirma.pl/artykul</loc>
  <xhtml:link rel="alternate" hreflang="pl" href="https://twojafirma.pl/artykul" />
  <xhtml:link rel="alternate" hreflang="en" href="https://twojafirma.com/en/article" />
  <xhtml:link rel="alternate" hreflang="de" href="https://twojafirma.de/artikel" />
</url>

Przydatne gdy masz dużo stron (tysiące) i nie chcesz dodawać tagów HTML per strona. WPML generuje sitemap z hreflang automatycznie.

Hreflang na WordPress – WPML i Polylang

WPML (płatny ~$39/rok)

WPML to najpopularniejsza wtyczka do wielojęzyczności WordPress – tłumaczysz treści (wpisy, strony, produkty WooCommerce, menu, widgety, Schema), WPML automatycznie generuje hreflang, przełącznik języków i odpowiednie URL-e (/en/, /de/ lub subdomeny/domeny).

Konfiguracja: WPML → Języki → dodaj języki (PL, EN, DE) → tłumacz treści per strona → WPML dodaje hreflang automatycznie. Sprawdź: F12 → Elements → szukaj hreflang w head.

Polylang (darmowy + Pro)

Polylang – darmowa alternatywa WPML. Darmowa wersja: wielojęzyczność treści + hreflang + przełącznik języków. Pro ($99/rok): tłumaczenie URL-i, WooCommerce integration. Prostszy niż WPML, ale mniej funkcji (szczególnie dla WooCommerce).

Najczęstsze błędy hreflang

Brak dwukierunkowości. Polska strona wskazuje na angielską, ale angielska nie wskazuje na polską → Google ignoruje hreflang na obu. Zawsze obie strony muszą się nawzajem wskazywać.

Brak self-reference. Polska strona wskazuje na angielską i niemiecką, ale nie na siebie (brak hreflang="pl" z linkiem do siebie) → Google ignoruje. Każda strona musi mieć hreflang do siebie + do wszystkich wersji językowych.

Hreflang na niekanoniczne URL. Strona A ma hreflang wskazujący na stronę B, ale B ma canonical na stronę C → sprzeczność → Google ignoruje. Hreflang musi wskazywać na kanoniczne URL-e (te same co canonical).

Złe kody języków. hreflang="uk" to ukraiński (ISO 639-1: uk), nie angielski brytyjski (to en-GB). hreflang="cz" nie istnieje – czeski to cs. hreflang="jp" nie istnieje – japoński to ja. Sprawdź kody: Wikipedia → ISO 639-1.

Hreflang na 404/redirect. Hreflang wskazuje na stronę, która zwraca 404 lub 301 → Google ignoruje. Po usunięciu/przekierowaniu strony: zaktualizuj hreflang na pozostałych wersjach.

Jak sprawdzić hreflang

Google Search Console: Międzynarodowe targetowanie → sprawdź błędy hreflang (brak zwrotnego tagu, złe kody, linki na 404). Uwaga: GSC od 2024 ograniczył ten raport – ale błędy krytyczne nadal pokazuje.

Screaming Frog: crawl strony → zakładka „Hreflang” → pełna analiza: brakujące return tags, non-canonical hreflang, missing self-reference, invalid language codes. Najlepsze narzędzie do audytu hreflang.

Ahrefs / Semrush: Site Audit → sekcja „Hreflang” → lista błędów per strona.

Ręcznie: otwórz stronę → F12 → Elements → Ctrl+F → szukaj hreflang. Sprawdź: czy jest self-reference, czy linki prowadzą do istniejących stron, czy kody językowe są poprawne.

Struktury URL dla wielojęzyczności

Struktura Przykład Zalety Wady
Subfolder twojafirma.pl/en/, twojafirma.pl/de/ Łatwa konfiguracja, jeden hosting, jeden autorytet domeny Mniej „lokalne” niż ccTLD
Subdomena en.twojafirma.pl, de.twojafirma.pl Łatwa separacja Google traktuje subdomeny jako osobne strony (mniejszy autorytet)
ccTLD twojafirma.pl, twojafirma.de, twojafirma.com Najsilniejszy sygnał lokalny (Google wie że .de = Niemcy) Drogie (wiele domen), osobny autorytet per domena
Parametr URL twojafirma.pl?lang=en Proste technicznie ❌ NIE ZALECANE – Google nie zaleca parametrów do wielojęzyczności

Rekomendacja: subfoldery (/en/, /de/) – najprostsze, najczęstsze, pełny autorytet domeny współdzielony między językami. ccTLD (osobne domeny per kraj): dla dużych firm z budżetem na link building per domena. Subdomeny: rzadko zalecane (Google traktuje jak osobne strony).

Hreflang a SEO – wpływ na pozycje

Hreflang nie jest bezpośrednim czynnikiem rankingowym – nie poprawi pozycji polskiej strony na polskie frazy. Ale:

Prawidłowe kierowanie użytkowników. Niemiecki użytkownik widzi niemiecką wersję zamiast polskiej → lepsze doświadczenie → niższy bounce rate → pośrednio lepsze pozycje.

Brak kanibalizacji. Bez hreflang: polska i angielska wersja „walczą” o te same frazy w Google (duplikacja) → autorytet rozproszony. Z hreflang: Google wie, że to różne wersje → polska rankuje na polskie frazy, angielska na angielskie → zero kanibalizacji.

Konsolidacja autorytetu. Hreflang mówi Google: „te strony są powiązane” → linki do angielskiej wersji częściowo wzmacniają polską (i odwrotnie). To nie jest transfer jak canonical, ale sygnał powiązania.

Najczęściej zadawane pytania

Czy hreflang zastępuje canonical?

Nie – to dwa osobne mechanizmy. Canonical mówi „to jest oryginalna wersja tej strony” (duplikaty). Hreflang mówi „ta strona ma wersje w innych językach” (tłumaczenia). Każda strona powinna mieć oba: canonical (self-referencing) + hreflang (wskazujące na wersje językowe).

Czy Google wymaga hreflang?

Nie – Google potrafi sam wykryć wersje językowe (na podstawie języka treści, ccTLD, ustawień w Search Console). Ale: hreflang daje jednoznaczny sygnał – zamiast „Google, zgadnij” → „Google, oto dokładna mapa moich wersji językowych”. Dla stron z >2 językami: hreflang jest praktycznie obowiązkowy.

Czy Bing i inne wyszukiwarki obsługują hreflang?

Bing: nie obsługuje hreflang – używa tagu <meta http-equiv="content-language"> i ustawień w Bing Webmaster Tools. Yandex: obsługuje hreflang. Baidu: nie. W praktyce: hreflang jest głównie dla Google (90%+ rynku wyszukiwarek w większości krajów).

Ile wersji językowych mogę mieć?

Bez limitu – Google obsługuje hreflang dla dowolnej liczby języków/regionów. Wikipedia ma hreflang do 300+ wersji językowych. Jedyne ograniczenie: każda strona musi mieć komplet tagów hreflang (self + wszystkie wersje) – przy 50 językach to 50 tagów w head per strona. Dla dużej liczby: użyj sitemap zamiast tagów HTML.

Czy muszę tłumaczyć CAŁĄ stronę żeby użyć hreflang?

Nie – hreflang dotyczy konkretnych stron, nie całej witryny. Jeśli masz 100 stron po polsku i 20 przetłumaczonych na angielski: hreflang dodajesz tylko na tych 20 stronach (wzajemne wskazanie PL ↔ EN). Pozostałe 80 stron: bez hreflang (bo nie mają angielskiej wersji).

Picture of Tomasz Zieliński
Tomasz Zieliński

Tomasz zajmuje się tematyką SEO, sztucznej inteligencji i automatyzacji pracy w marketingu internetowym. W swoich artykułach analizuje zmiany w algorytmach wyszukiwarek, rozwój narzędzi AI oraz nowe sposoby tworzenia i optymalizacji treści. Interesuje go przede wszystkim to, jak technologia wpływa na codzienną pracę specjalistów SEO, marketerów i twórców internetowych.

Facebook
Twitter
LinkedIn
Pinterest

Najnowsze Wpisy

Śledź nas