Hreflang dla wielojęzycznych stron — kompletny przewodnik 2026
Hreflang to atrybut HTML, który mówi Google „te strony są tym samym contentem, tylko w różnych językach". Bez hreflang międzynarodowa strona = kanibalizacja keywords + duplicate content. Z prawidłowym hreflang = każdy rynek dostaje swoją wersję bez utraty SEO.
TL;DR — Hreflang w pigułce
| Co | Detale |
|---|---|
| Co to jest | Atrybut HTML wskazujący alternatywne wersje językowe/regionalne |
| Gdzie | HTML head (<link rel="alternate">) lub sitemap.xml |
| Format kodu | pl (język) lub pl-PL (język + region) |
| x-default | Fallback dla niedopasowanych użytkowników |
| Self-reference | Każda strona linkuje do siebie też |
| Return links | A → B wymaga B → A |
| Główny błąd | Niespójne mapping → Google ignoruje cały hreflang |
Czym jest hreflang i dlaczego ma znaczenie?
Hreflang (skrót od „href language") to atrybut wskazujący Google, że strona ma alternatywne wersje w innych językach lub regionach.
Przykład praktyczny:
https://example.com/strony-internetowe(polski)https://example.com/en/websites(angielski)https://example.com/de/webseiten(niemiecki)
Bez hreflang Google widzi 3 osobne strony i traktuje je jako:
- Duplikaty (jeśli treść podobna semantycznie)
- Konkurencyjne (jeśli każda celuje w inny rynek)
- Mylne dla użytkowników (PL user dostaje DE wersję)
Z hreflang Google rozumie: to ten sam content, każdy język serwowany odpowiedniemu użytkownikowi.
Format hreflang — kody języków i regionów
Tylko język
<link rel="alternate" hreflang="pl" href="https://example.com/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/" />
Stosuj, gdy nie targetujesz konkretnego regionu (jeden content dla wszystkich PL-speakerów na świecie).
Język + region (recommended dla e-commerce)
<link rel="alternate" hreflang="pl-PL" href="https://example.com/" />
<link rel="alternate" hreflang="en-US" href="https://example.com/en-us/" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/en-gb/" />
<link rel="alternate" hreflang="de-DE" href="https://example.com/de/" />
<link rel="alternate" hreflang="de-AT" href="https://example.com/de-at/" />
Stosuj, gdy treść ma różnice regionalne (cennik EUR vs USD, prawo lokalne).
x-default
<link rel="alternate" hreflang="x-default" href="https://example.com/" />
To strona-fallback dla użytkowników, których język nie pasuje do żadnego z hreflang. Najczęściej: angielska wersja lub strona-router (wybór języka).
Trzy metody implementacji
Metoda 1: HTML head (najpopularniejsza)
Każda strona ma w <head>:
<link rel="alternate" hreflang="pl-PL" href="https://example.com/strona" />
<link rel="alternate" hreflang="en-US" href="https://example.com/en/page" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />
Zaleta: prostota, bezpośrednia widoczność w HTML Wada: każda strona musi mieć kompletny set hreflang (powtarzalny kod)
Metoda 2: HTTP headers
Dla non-HTML (PDF, obrazy):
Link: <https://example.com/strona>; rel="alternate"; hreflang="pl-PL",
<https://example.com/en/page>; rel="alternate"; hreflang="en-US",
<https://example.com/>; rel="alternate"; hreflang="x-default"
Zaleta: działa dla plików nie-HTML Wada: trudniej diagnozować, wymaga konfiguracji serwera
Metoda 3: Sitemap.xml
<url>
<loc>https://example.com/strona</loc>
<xhtml:link rel="alternate" hreflang="pl-PL" href="https://example.com/strona" />
<xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/en/page" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/" />
</url>
Zaleta: centralizacja, łatwy update masowy Wada: Google czasem ignoruje hreflang z sitemap (preferuje HTML)
Self-reference i return links
To dwie najczęściej naruszane zasady:
Self-reference
Każda strona musi mieć hreflang do siebie samej:
❌ Źle (na PL):
<link rel="alternate" hreflang="en-US" href="https://example.com/en/page" />
✅ Dobrze (na PL):
<link rel="alternate" hreflang="pl-PL" href="https://example.com/strona" />
<link rel="alternate" hreflang="en-US" href="https://example.com/en/page" />
Return links
Jeśli strona A linkuje do B, B musi linkować do A:
❌ Źle:
- PL:
<link hreflang="en-US" href="/en/page" /> - EN: brak hreflang na PL
✅ Dobrze:
- PL:
<link hreflang="en-US" href="/en/page" />+<link hreflang="pl-PL" href="/strona" /> - EN:
<link hreflang="pl-PL" href="/strona" />+<link hreflang="en-US" href="/en/page" />
Brak return link = Google ignoruje cały hreflang dla obu stron.
Strategie URL dla wielojęzycznych stron
Strategia 1: Subdirectory (recommended)
example.com/ (PL — root)
example.com/en/ (EN)
example.com/de/ (DE)
Zalety: prosta, jeden hosting, autorytet domeny się akumuluje, łatwa migracja Wady: może być mniej „lokalna" w niektórych rynkach (mniej zaufania)
Strategia 2: Subdomain
example.com (PL)
en.example.com (EN)
de.example.com (DE)
Zalety: każdy język może mieć własny serwer/CDN Wady: Google traktuje subdomeny jako semi-niezależne, autorytet się dzieli
Strategia 3: ccTLD (country code TLD)
example.pl (PL)
example.com (EN)
example.de (DE)
Zalety: najlepszy lokalny ranking (Google preferuje ccTLD dla rynku) Wady: każda domena buduje autorytet od zera, drogie
Strategia 4: gTLD + parametr (NIE rób tego)
example.com/?lang=pl
example.com/?lang=en
❌ Google nie indeksuje tego jak osobne wersje. Unikaj parametrów.
Najczęstsze błędy hreflang i jak je wykryć
Błąd 1: Wrong language codes
❌ hreflang="polish" — nie istnieje
❌ hreflang="pl_PL" — z underscore zamiast hyphen
❌ hreflang="PL-pl" — odwrócona kolejność
✅ hreflang="pl-PL" — poprawnie (ISO 639-1 + ISO 3166-1)
Błąd 2: Hreflang na stronach noindex
Strona z noindex nie powinna mieć hreflang. Google nie indeksuje strony, więc cały graph hreflang jest „wybity".
Błąd 3: Cykle bez x-default
Set hreflang bez x-default = Google nie wie, którą wersję pokazać niezgodnym językom.
Błąd 4: Niespójne sitemapy
Sitemap PL listuje /pl/strona, sitemap EN listuje /en/page, ale hreflang w HTML wskazuje inne URL-e. Google ignoruje sygnały konfliktujące.
Błąd 5: HTTP/HTTPS mismatch
<link hreflang="pl-PL" href="http://example.com/" />
<link hreflang="en-US" href="https://example.com/en/" />
Niespójne protokoły = Google ignoruje. Trzymaj się jednego.
Narzędzia weryfikacji
- Screaming Frog — Crawl → Hreflang Tab → wskazuje błędy 1:1, return links
- GSC International Targeting (legacy, ale działa) — pokazuje hreflang errors
- Hreflang Tags Testing Tool (online) — sprawdza pojedynczą stronę
- Sitebulb — komplet audytu z hreflang
Po wdrożeniu: weryfikacja w Screaming Frog (crawl all pages) — 0 errors w hreflang tab.
Hreflang vs canonical
Częsta konfuzja:
- Canonical — „ta strona to oryginał" lub „canonical jest gdzie indziej" (dotyczy wersji tego samego języka)
- Hreflang — „ta strona ma wersje w innych językach"
Razem:
<link rel="canonical" href="https://example.com/strona" />
<link rel="alternate" hreflang="pl-PL" href="https://example.com/strona" />
<link rel="alternate" hreflang="en-US" href="https://example.com/en/page" />
Każda wersja językowa ma canonical = self (nie do innej wersji językowej!).
Hreflang dla nflo.pl + nflo.tech (case study)
ARDURA Lab buduje strony dla nFlo, które ma:
- nflo.pl — bazowa polska
- nflo.tech — angielska kopia
Implementacja:
Na nflo.pl/uslugi/audyt-bezpieczenstwa:
<link rel="alternate" hreflang="pl-PL" href="https://nflo.pl/uslugi/audyt-bezpieczenstwa" />
<link rel="alternate" hreflang="en" href="https://nflo.tech/services/security-audit" />
<link rel="alternate" hreflang="x-default" href="https://nflo.tech/services/security-audit" />
<link rel="canonical" href="https://nflo.pl/uslugi/audyt-bezpieczenstwa" />
Na nflo.tech/services/security-audit:
<link rel="alternate" hreflang="pl-PL" href="https://nflo.pl/uslugi/audyt-bezpieczenstwa" />
<link rel="alternate" hreflang="en" href="https://nflo.tech/services/security-audit" />
<link rel="alternate" hreflang="x-default" href="https://nflo.tech/services/security-audit" />
<link rel="canonical" href="https://nflo.tech/services/security-audit" />
Efekt: Google wie, że PL i EN to ta sama usługa, ale w różnych językach. Brak kanibalizacji, każda wersja rankuje na swój rynek.
Podsumowanie
Hreflang 2026:
- Wybierz format —
pl-PLlubpl(zależy od strategii) - Wdroż w HTML head lub sitemap (jedno miejsce, nie dwa)
- Self-reference na każdej stronie
- Return links — symetryczne mapping
- x-default zawsze obecny
- Weryfikacja Screaming Frog po wdrożeniu
Międzynarodowa strona bez hreflang = strzelanie sobie w stopę. Z hreflang = każdy rynek dostaje swój content, żaden nie konkuruje z innym.
Zamów audyt international SEO — sprawdzimy obecny stan hreflang i przygotujemy plan naprawczy.