L'etiqueta hreflang és una anotació que indica a Google quina versió d'una pàgina correspon a cada idioma o país, perquè ensenyi a cada usuari la seva: la catalana a qui cerca en català, la castellana a qui cerca en castellà. No tradueix res ni fa pujar posicions per si sola; evita que als resultats surti la versió equivocada.
Es pot declarar en tres llocs (el <head>, la capçalera HTTP o el sitemap XML) i té una regla que ho decideix gairebé tot: si la pàgina A apunta a la B, la B ha d'apuntar a la A. Quan falta aquesta tornada, Google pot ignorar tota l'anotació. Aquí tens la sintaxi exacta, exemples per copiar i els errors més habituals en webs en català, castellà i anglès.

Què és hreflang i quan cal
És un atribut de l'element <link rel="alternate"> que relaciona entre si les versions d'una mateixa pàgina. Amb ell, Google entén que /ca/serveis/, /es/servicios/ i /en/services/ són la mateixa pàgina en tres idiomes i tria quina mostrar segons l'idioma i el país de qui cerca.
Cal quan:
- Tens la mateixa pàgina traduïda a diversos idiomes (el cas típic d'una pime catalana: català, castellà i de vegades anglès o francès).
- Tens el mateix idioma per a diversos països, amb contingut gairebé idèntic i diferències de preu, moneda o enviaments (Espanya i Mèxic, per exemple).
- Només tradueixes la plantilla (menú, peu) i el contingut principal queda en un idioma, com passa en fòrums o pàgines amb contingut d'usuaris.
No cal si la teva web està en un sol idioma i s'adreça a un sol mercat.
lang per saber en quin idioma està un text: ho dedueix del contingut. Si la versió «en anglès» conserva mig text en castellà, l'etiqueta no ho arregla.La decisió prèvia (a quins països vendre i com organitzar la web per fer-ho) és a la guia de SEO internacional per a una pime catalana. Aquí ens quedem amb l'etiqueta.
Sintaxi de l'etiqueta hreflang
Aquest és el bloc complet d'una pàgina amb tres idiomes. Va idèntic a les tres versions:
<link rel="alternate" hreflang="ca" href="https://www.example.com/ca/serveis/" />
<link rel="alternate" hreflang="es" href="https://www.example.com/es/servicios/" />
<link rel="alternate" hreflang="en" href="https://www.example.com/en/services/" />
<link rel="alternate" hreflang="x-default" href="https://www.example.com/en/services/" />rel="alternate": diu que la URL és una versió alternativa de la pàgina.hreflang: el codi d'idioma en format ISO 639-1 (ca,es,en) i, si vols afinar per país, un guionet i el codi de país ISO 3166-1 alfa-2 (es-ES,es-MX,en-GB).href: la URL absoluta, amb protocol i domini.
L'idioma és obligatori; el país, opcional. Un codi de país sol no val: Google el llegiria com a idioma (be és bielorús, no Bèlgica).
| Valor | És correcte? | Per què |
|---|---|---|
ca | Sí | Català, per a qualsevol país |
es-ES | Sí | Castellà per a usuaris d'Espanya |
en-GB | Sí | Anglès per al Regne Unit |
en-UK | No | El codi ISO del Regne Unit és GB |
es_ES | No | El separador és un guionet, no un guió baix |
es-LA, en-EU | No | LA és Laos, no Llatinoamèrica, i EU no és cap codi de país |
Si segmentes per país, afegeix sempre una versió genèrica de l'idioma que reculli la resta de parlants:
<link rel="alternate" hreflang="es-ES" href="https://www.example.com/es-es/" />
<link rel="alternate" hreflang="es-MX" href="https://www.example.com/es-mx/" />
<link rel="alternate" hreflang="es" href="https://www.example.com/es/" />On es posa: head, capçalera HTTP o sitemap
Els tres mètodes valen el mateix per a Google. Tria'n un; si en combines dos, han de dir exactament el mateix.
| Mètode | Quan convé | Compte amb |
|---|---|---|
Etiquetes al <head> | Webs amb pocs idiomes. És el que generen la majoria de CMS i plugins multiidioma | Han d'anar dins del <head>, no al cos |
Capçalera HTTP Link | Fitxers que no són HTML: PDF, documents | S'ha de configurar al servidor |
| Sitemap XML | Molts idiomes o moltes pàgines: no engreixa l'HTML | Cada URL repeteix el grup complet |
A la capçalera HTTP
Per a un PDF de tarifes en tres idiomes, el servidor retorna aquesta capçalera (en una sola línia) amb cadascun dels tres fitxers:
Link: <https://www.example.com/ca/tarifes.pdf>; rel="alternate"; hreflang="ca", <https://www.example.com/es/tarifas.pdf>; rel="alternate"; hreflang="es", <https://www.example.com/en/rates.pdf>; rel="alternate"; hreflang="en"Al sitemap XML
Es declara l'espai de noms xhtml i cada <url> llista totes les versions, inclosa ella mateixa:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://www.example.com/ca/serveis/</loc>
<xhtml:link rel="alternate" hreflang="ca" href="https://www.example.com/ca/serveis/" />
<xhtml:link rel="alternate" hreflang="es" href="https://www.example.com/es/servicios/" />
<xhtml:link rel="alternate" hreflang="en" href="https://www.example.com/en/services/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.example.com/en/services/" />
</url>
<url>
<loc>https://www.example.com/es/servicios/</loc>
<xhtml:link rel="alternate" hreflang="ca" href="https://www.example.com/ca/serveis/" />
<xhtml:link rel="alternate" hreflang="es" href="https://www.example.com/es/servicios/" />
<xhtml:link rel="alternate" hreflang="en" href="https://www.example.com/en/services/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.example.com/en/services/" />
</url>
<url>
<loc>https://www.example.com/en/services/</loc>
<xhtml:link rel="alternate" hreflang="ca" href="https://www.example.com/ca/serveis/" />
<xhtml:link rel="alternate" hreflang="es" href="https://www.example.com/es/servicios/" />
<xhtml:link rel="alternate" hreflang="en" href="https://www.example.com/en/services/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.example.com/en/services/" />
</url>
</urlset>Si encara no tens sitemap o no saps com enviar-lo, ho tens explicat a la guia del sitemap XML.
Què és x-default
hreflang="x-default" assenyala la pàgina que ha de veure qui no encaixa amb cap de les versions declarades: un usuari que cerca en alemany en una web que només té català, castellà i anglès. No és obligatori, però és recomanable.
Sol apuntar a un selector d'idioma o a la versió que prefereixes per al públic de fora. En una pime de Girona que ven a turistes, el més raonable és que x-default sigui la versió anglesa; en una que només treballa a Catalunya, la catalana o la castellana. La mateixa URL pot sortir dues vegades: una amb el seu idioma i una altra com a x-default, com a l'exemple de dalt.
Reciprocitat: la regla que més es trenca
Cada versió ha de llistar totes les versions del grup, inclosa ella mateixa. I la relació ha de ser d'anada i tornada: si /ca/serveis/ declara /es/servicios/ com a alternativa, /es/servicios/ ha de declarar /ca/serveis/. Si no, Google pot ignorar aquestes anotacions o interpretar-les malament.
La regla té sentit: sense enllaç de tornada, qualsevol web es podria declarar versió alternativa d'una pàgina teva.
Dues conseqüències pràctiques:
- Només s'aparellen pàgines equivalents. Si un article existeix només en català, no porta hreflang cap a la portada en castellà: porta només el seu o cap.
- La canònica de cada versió és ella mateixa. Si
/es/servicios/té una canònica que apunta a/ca/serveis/, li estàs dient a Google que la versió castellana no s'ha d'indexar, i l'hreflang deixa de tenir sentit. Ho explico al post sobre la URL canònica.
Errors d'hreflang més habituals
- Falta l'enllaç de tornada. S'afegeix un idioma nou i només s'actualitza la plantilla d'aquell idioma.
- Codis inventats:
en-UK,es_ES,caten lloc deca. - URL relatives (
/es/servicios/) o sense protocol. Han de ser absolutes. - Apuntar a URL que no són la definitiva: que redirigeixen, retornen 404, porten noindex o tenen la canònica en una altra pàgina.
- Totes les pàgines apunten a la portada de l'altre idioma en lloc de la seva traducció. És l'error clàssic d'un selector d'idioma mal muntat.
- Hreflang només a la portada. Es declara pàgina a pàgina, no una vegada per a tot el lloc.
- Redirigir automàticament segons la IP o l'idioma del navegador. Googlebot rastreja sobretot des dels Estats Units i sense capçalera
Accept-Language, de manera que pot no arribar mai a les altres versions. Millor un avís que suggereixi canviar d'idioma que una redirecció forçosa.
Com comprovar el teu hreflang
- Obre el codi font d'una pàgina en cada idioma i cerca
hreflang. El bloc ha de ser el mateix a totes. - Obre cada
href: ha de respondre amb un 200 directe, sense redirecció. - Comprova que cada versió es llista a si mateixa i que la seva canònica és la seva pròpia URL.
- A Search Console, inspecciona una URL de cada idioma per confirmar que està indexada i que la canònica que tria Google és la seva. Search Console ja no té un informe específic d'hreflang, de manera que el resultat es mira a Rendiment: filtra per país i consulta quina pàgina apareix per a cada cerca. Si no coneixes prou l'informe, el tens a com usar Google Search Console pas a pas.
Google aplica els canvis quan ha tornat a rastrejar totes les versions del grup, així que no esperis veure-ho l'endemà.
Si prefereixes que ho revisem nosaltres, l'hreflang forma part de les comprovacions de SEO tècnic de la plataforma, i pots començar per una anàlisi inicial gratuïta de la teva web.
Preguntes freqüents
Hreflang millora el posicionament?
No directament. No fa que una pàgina pugi; fa que Google mostri la versió de l'idioma o país adequat. L'efecte es nota en què l'usuari arriba a la pàgina que entén i no marxa.
Necessito hreflang si la meva web només està en català i castellà?
És recomanable. Amb dos idiomes ja hi ha dues versions de cada pàgina, i hreflang confirma a Google que són equivalents i quina correspon a cada idioma.
És obligatori x-default?
No. És opcional, però convé posar-lo per decidir tu què veu qui no encaixa amb cap dels teus idiomes.
Hreflang substitueix l'etiqueta canonical?
No, es complementen. Canonical assenyala la URL principal entre duplicats; hreflang relaciona versions d'idiomes diferents. Cada versió ha de tenir la seva pròpia canònica i el grup hreflang complet.
Puc fer servir hreflang entre dominis diferents?
Sí. Les versions no han d'estar al mateix domini: una .cat i una .com es poden declarar alternatives, sempre que totes dues s'enllacin mútuament.
En resum
Hreflang és poc codi i molta disciplina: codis ISO correctes, URL absolutes i definitives, el mateix bloc a totes les versions i enllaç de tornada sempre. Si una web multiidioma ensenya l'idioma equivocat a Google, el primer que cal mirar és la reciprocitat. Vols saber com està la teva? Demana l'anàlisi inicial gratuïta.