La etiqueta hreflang le dice a Google qué URL es la misma página en otro idioma o para otro país. Cada versión enumera todas las versiones, incluida ella misma, con URLs completas. El valor es un código de idioma con un país opcional: es, es-ES o es-MX. El valor x-default señala la página para el resto de usuarios, y la etiqueta canonical de cada versión apunta a una página en su mismo idioma, normalmente a sí misma. Te lo enseñamos con el código real de polytested.com, que publicamos en cuatro idiomas.
Así lo hacemos en polytested.com
Este es el encabezado de nuestra página «Cómo probamos» tal como lo envía nuestro servidor:

- La etiqueta canonical de la página en español apunta a la propia página en español, nunca a la versión inglesa.
- Cada idioma publicado tiene su enlace hreflang, también la propia página:
en,de,fryes. - x-default lleva a la página en inglés, nuestra versión por defecto para quien lee en un idioma que no cubrimos.
- Todas las URLs son completas, con
https://y dominio. Los slugs cambian según el idioma: /how-we-test, /de/so-testen-wir, /fr/notre-methode, /es/como-probamos. Hreflang conecta páginas, no URLs parecidas.
Las cuatro versiones llevan el mismo conjunto de enlaces, que se repite en nuestro sitemap en español. Esta es la entrada de la misma página el 17 de octubre de 2026, con saltos de línea añadidos:
<url>
<loc>https://polytested.com/es/como-probamos</loc>
<lastmod>2026-10-13</lastmod>
<xhtml:link rel="alternate" hreflang="en" href="https://polytested.com/how-we-test"/>
<xhtml:link rel="alternate" hreflang="de" href="https://polytested.com/de/so-testen-wir"/>
<xhtml:link rel="alternate" hreflang="fr" href="https://polytested.com/fr/notre-methode"/>
<xhtml:link rel="alternate" hreflang="es" href="https://polytested.com/es/como-probamos"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://polytested.com/how-we-test"/>
</url>Encabezado y sitemap salen de la misma función y de la misma lista de traducciones publicadas, así que no pueden contradecirse; si usas los dos métodos, genéralos desde una sola fuente. Que Next.js, nuestro framework, escriba hrefLang con mayúscula no importa: los atributos HTML no distinguen mayúsculas, y Google tampoco en los valores de hreflang.
Qué responde cada etiqueta
- Canonical: entre páginas duplicadas en un mismo idioma, ¿cuál es la URL principal?
- Hreflang: ¿qué URL es esta misma página en otro idioma o para otra región?
- x-default: ¿qué URL mostrar a alguien cuyo idioma no coincide con ninguna versión?
Lo que hreflang aporta al SEO es concreto: ayuda a Google a mostrar a cada usuario la versión en su idioma o país. Google puede encontrar a veces las versiones por su cuenta, pero recomienda indicárselas, por ejemplo cuando el mismo contenido tiene pequeñas variantes por país o cuando todo el sitio está traducido.
Las tres etiquetas son indicaciones, no órdenes. Google puede elegir otra URL canónica y detecta el idioma de cada página por su contenido visible, no por hreflang ni por el atributo lang.
x-default: qué es y adónde debe apuntar
x-default es un valor reservado. Google lo usa cuando la configuración del navegador del usuario no coincide con ningún idioma ni región de tu lista, y recomienda usarlo para indicar esa página de respaldo. Lo presentó en 2013 pensando en los selectores de idioma y en las páginas principales que redirigen según la ubicación, y según su documentación funciona mejor en una página de selección de idioma. También puede ser, sin más, tu versión principal. Lo que conviene saber sobre hreflang="x-default":
- No lleva código de idioma. Según Google, no hace falta: esa página es para quien no encaja en ningún idioma de tu sitio, así que su idioma da igual.
- Puede repetir una URL de la lista. Nuestra página inglesa es a la vez
enyx-default. Google hace lo mismo con su documentación: el 17 de octubre de 2026, la versión en español de su página sobre versiones localizadas enviaba x-default a la página en inglés. - Va en todas las versiones, porque el conjunto de enlaces debe ser el mismo en todas, y su destino debe responder 200.
- No sustituye a
es. x-default es para quien no lee ninguno de tus idiomas. Un hispanohablante de un país que no tengas en la lista debería encontrar tu versión generales.
| Tu sitio | Destino de x-default |
|---|---|
| Tiene una página para elegir idioma o país | Esa página de selección |
| Tiene una versión principal, como el inglés en nuestro caso | Esa versión, aunque ya tenga su propia línea en |
Nuestro código solo añade x-default si existe la versión en inglés; una página publicada solo en alemán no lo lleva. Y según Google, marcar con hreflang solo una parte del sitio no es un problema.
¿El canonical de la página en español debe apuntar a la inglesa?
No. Si usas hreflang, Google pide que indiques una página canónica en el mismo idioma, o el mejor sustituto posible solo cuando no existe una en ese idioma. Una traducción no es un duplicado: según Google, las versiones localizadas de una página solo se consideran duplicadas si su contenido principal no está traducido. Si la página en español declara canónica la inglesa, le pides a Google que descarte la española, y el enlace hreflang hacia ella ya no conecta nada.
El consejo contrario sigue circulando. Viene de una recomendación de Google de 2010 para sitios que solo traducían la plantilla, y Google la retiró en 2011.
Dos detalles más:
- Cada etiqueta, por separado. Google no usa para elegir la URL canónica una etiqueta
rel="canonical"que lleve tambiénhreflang,lang,mediaotype. Escribe el canonical y los enlaces hreflang en líneas distintas. - Versiones por país casi iguales. Si tus páginas
es-ESyes-MXapenas se diferencian, Google puede agruparlas bajo una sola URL canónica: hreflang no garantiza que se indexe cada versión, y Search Console muestra los datos de la canónica. Y si solo traduces los menús, esas páginas son duplicados.
Las reglas que Google comprueba
- Cada versión se enumera a sí misma y a todas las demás. El conjunto de enlaces es el mismo en todas.
- Los enlaces van en las dos direcciones. Si dos páginas no se apuntan entre sí, Google ignora las etiquetas de ese par, pero sigue usando los pares que sí se responden.
- URLs completas, con protocolo:
https://polytested.com/es/como-probamos, no/es/como-probamos. Las versiones pueden estar en dominios distintos, por ejemplo un.esy un.mx. - Basta con un método. Etiquetas en el encabezado HTML, encabezados HTTP
Linko sitemap: para Google son equivalentes, y usar los tres a la vez no aporta nada en la Búsqueda. El encabezado HTTP sirve sobre todo para archivos que no son HTML, como los PDF. - Solo URLs indexables y canónicas. Una página con noindex no puede formar parte del grupo. Enlaza URLs finales, no redirecciones ni páginas que no existen; las herramientas de rastreo lo marcan como error.
- Un encabezado limpio. Google deja de leer el elemento
headen cuanto encuentra algo que no pertenece a él, como un iframe o una imagen: coloca tus etiquetas antes. Y no combines hreflang con otro atributo, comomedia, en una misma etiquetalink.
En un sitio grande, Google acepta que omitas algunos idiomas en algunas páginas y procesa igualmente las que se apuntan entre sí. Lo importante es enlazar cada idioma nuevo con el original en las dos direcciones. Su ejemplo: si un sitio en .fr añade versiones para México (.mx) y España (.es), importa más enlazar cada una con el .fr que enlazarlas entre sí.
Códigos: es, es-ES, es-MX o es-419
El valor es un código de idioma ISO 639-1 y, si hace falta, un guion y un código de país ISO 3166-1 alfa-2. Google solo admite códigos de esas dos normas, nunca deduce el idioma de un país y no distingue mayúsculas: es-mx y es-MX valen lo mismo.
Según cómo esté organizado tu sitio:
- Una sola versión en español para todos:
es. Es lo que hacemos nosotros. - España y Latinoamérica por separado:
es-ESpara España yespara Latinoamérica, que sirve también al resto de hispanohablantes, por ejemplo en Estados Unidos. - Una página por país:
es-ES,es-MX,es-ARy los que necesites, más unesgeneral. Google recomienda esa URL genérica cuando tienes varias versiones por país de un mismo idioma, y permite que sea una de las páginas de país. Esa página lleva entonces dos líneas, por ejemploes-MXyes. - Estados Unidos:
es-US; Puerto Rico tiene su propio código de país,es-PR.
Que falte el es general es un error frecuente. En dos muestras que tomamos en octubre de 2026, 18 de 29 empresas de Alemania, Austria y Suiza con páginas en español y 5 de 18 grandes sitios internacionales usaban solo códigos de país. Con solo es-ES y es-MX, un lector de Colombia o de Uruguay no encaja en ninguna línea, y ya no eres tú quien decide qué versión recibe.
¿Y es-419? Como etiqueta de idioma es válida: la norma BCP 47 (RFC 5646) la usa como ejemplo de español para la región 419 de la ONU, Latinoamérica y el Caribe, y la IANA la registró en 2005 como «Latin American Spanish». Esa región reúne 52 países y territorios, Brasil y Puerto Rico incluidos, pero no Estados Unidos ni España. Aun así, Google cita precisamente es-419 como código que no admite en hreflang: 419 es un número de región de la ONU, no un código de país. Curiosamente, la propia página de Google que lo dice enlaza en su encabezado una versión es-419, y DeepL ofrece ES-419 como idioma de destino. Puedes traducir a un español latinoamericano neutro, pero en hreflang usa es o códigos de país.
Errores típicos con los códigos
Muchos valores incorrectos parecen razonables. La columna central sigue los nombres de Unicode CLDR 46, el registro de la IANA y la documentación de Google.
| Valor | Qué significa | ¿Sirve en hreflang? |
|---|---|---|
es-419 | español latinoamericano | No, Google no lo admite |
es-LA | español para Laos | No para Latinoamérica: LA es Laos |
es-SP, es-CE | regiones que no existen | No |
es_ES | formato de locale de software, con guion bajo | No, el separador es un guion |
es-IC, es-EA | Canarias; Ceuta y Melilla | No están entre los códigos de país que admite Google: usa es-ES |
es-EU | EU es un código reservado | No, Google lo ignora |
ca, eu, gl | catalán, euskera, gallego | Sí, son idiomas propios |
es-CA | español para Canadá | Sí, pero no es catalán |
- El guion bajo es de las configuraciones regionales del software: nuestro sitio escribe
og:localecomoes_ESpara Open Graph, donde es correcto, pero en hreflang va un guion. - Los códigos reservados como EU, UN o UK no tienen efecto en la Búsqueda de Google. Por eso
en-UKestá mal: el Reino Unido esen-GB. - Un país solo no vale. El primer código siempre es el idioma: en el ejemplo de Google,
beno es Bélgica sino bielorruso, y del mismo modoares árabe, no Argentina. Yeues euskera, no la Unión Europea.
Cuándo merece la pena una página por país
Una página es-MX que solo cambia la etiqueta respecto a la de España no aporta nada. Las versiones por país tienen sentido cuando el contenido cambia de verdad:
- Moneda. Según la lista ISO 4217 que publica SIX, España usa el euro; México, Argentina, Colombia y Chile, sus propios pesos (MXN, ARS, COP, CLP); Perú, el sol (PEN), y Ecuador y Puerto Rico, el dólar estadounidense.
- Trato. Según el Diccionario panhispánico de dudas, «vosotros» se usa en la mayor parte de España, pero no en América ni en Canarias o Andalucía occidental, donde se dice «ustedes». En una versión para todos, evita «vosotros», como hacemos nosotros.
- Vocabulario. El Diccionario de la lengua española marca «ordenador» como propio de España y da «computadora» y «computador» como equivalentes. Las búsquedas cambian igual; cómo elegir palabras clave SEO para cada mercado lo explicamos aparte.
- Formatos. La misma cifra y la misma hora se escriben distinto según el país (tabla siguiente).
- Normas locales. Devoluciones, impuestos, envíos y avisos legales cambian de un país a otro. No es asesoramiento legal: comprueba en cada país qué tienes que indicar.
| Código | Moneda del país | Número 12345,5 | Hora 15:30 |
|---|---|---|---|
es-ES | EUR | 12.345,5 | 15:30 |
es-MX | MXN | 12,345.5 | 3:30 p.m. |
es-AR | ARS | 12.345,5 | 3:30 p. m. |
es-US | USD | 12,345.5 | 3:30 p.m. |
Son ajustes por defecto de los programas, no normas oficiales, pero muestran lo rápido que una página para España resulta ajena en México.
El dominio también envía una señal. Google trata un dominio de país como .es o .mx como indicio de que el sitio se dirige a ese país, salvo una lista de excepciones que considera genéricas, entre ellas .co, el dominio de Colombia. Si usas un .es para una versión es dirigida a todos los hispanohablantes, hreflang dice «todos» y el dominio dice «España». Comparamos dominios de país, subdominios y subdirectorios en nuestra guía de SEO internacional.
Páginas sin traducir, paginación y filtros
Cuando una traducción no está publicada, su enlace hreflang no aparece y su URL devuelve un error 404. Nunca mostramos el texto en inglés bajo una dirección en español: sería un duplicado de la página inglesa, y un enlace hreflang hacia ella apuntaría al idioma equivocado. El enlace aparece en cuanto se publica la traducción; mientras tanto, se puede usar el traductor del navegador, que para Google no crea una versión en otro idioma.
Esta misma guía sirve de ejemplo. El 17 de octubre de 2026, antes de publicarse esta versión en español, el encabezado de la versión inglesa solo enumeraba inglés, alemán y x-default:
<link rel="canonical" href="https://polytested.com/blog/hreflang-canonical-tags-x-default"/>
<link rel="alternate" hrefLang="en" href="https://polytested.com/blog/hreflang-canonical-tags-x-default"/>
<link rel="alternate" hrefLang="de" href="https://polytested.com/de/blog/hreflang-x-default-canonical-dach"/>
<link rel="alternate" hrefLang="x-default" href="https://polytested.com/blog/hreflang-canonical-tags-x-default"/>La segunda página de un listado no contiene los mismos artículos que la segunda página en otro idioma. Por eso nuestras páginas de listado paginadas llevan un canonical hacia sí mismas y ningún enlace hreflang. Las vistas filtradas llevan noindex, follow: no añaden páginas al índice, pero los enlaces que contienen se siguen.
Etiquetas hreflang en WordPress y Shopify
Muchos errores no se escriben a mano: salen de la configuración del CMS. Según la documentación y, en Polylang, el código fuente:
- WPML añade hreflang automáticamente y, por defecto, sin país: el español sale como
es. Si quieres un país, lo escribes tú en el campo hreflang del idioma, y WPML no puede avisarte de un valor no válido. - Polylang parte de la configuración regional y solo quita el país cuando no hay ambigüedad. Con un único idioma español escribe
es; con dos, como español de España y de México, escribees-ESyes-MXsin ningúnesgeneral. Puedes añadirlo con el filtropll_rel_hreflang_attributes. - Shopify genera las etiquetas por defecto a partir de los mercados y los idiomas: un código con país, como
fr-fr, o solo el idioma, comode, y x-default hacia el dominio principal. Solo lo hace para mercados con dominio, subdominio o subcarpeta propios. Si las gestionas con un tema o una app, desactiva las automáticas en Tienda online > Preferencias, sección «Imagen de redes sociales y SEO».
Son datos de la documentación y del código fuente consultados en octubre de 2026, no pruebas en instalaciones propias. Tras cada cambio de idiomas, dominios o mercados, abre el código fuente de una página y busca «hreflang».
Cómo comprobar tus etiquetas hreflang
El informe «Segmentación internacional» de Search Console ya no está disponible, pero Google sigue admitiendo y usando las etiquetas hreflang. Para revisarlas:
- La herramienta de inspección de URLs de Search Console muestra la URL «Declarada por el usuario como canónica» y la «Seleccionada por Google como canónica». Si no coinciden en una página traducida, revisa primero su canonical.
- Una herramienta de rastreo comprueba enlaces de vuelta, códigos y destinos que redirigen, devuelven 404 o llevan noindex. Site Audit de Semrush tiene un informe de SEO internacional, y Screaming Frog avisa de enlaces hreflang hacia URLs que no responden 200.
- Los generadores sirven para unas pocas páginas estáticas. Google menciona el de Aleyda Solis y el comprobador de Merkle, y aclara que no los mantiene ni los revisa.
- El código fuente de cada versión, con Ctrl+U en la mayoría de navegadores, no solo el de la página por la que empezaste. Casi siempre, un grupo roto tiene un enlace de vuelta que falta en la página que nadie miró.
¿Y Bing? Llegó a describir hreflang como una señal mucho más débil que content-language, pero en su blog de diciembre de 2025 lo recomienda para indicar idioma y región. Declara además el idioma con el atributo lang del elemento html y, si puedes, con un encabezado HTTP Content-Language; el W3C desaconseja hacerlo con una etiqueta meta http-equiv.
Lista de comprobación
- Cada versión se declara canónica a sí misma.
- Cada versión enumera todas las demás y a sí misma, con URLs completas y enlaces en las dos direcciones.
- Una sola versión en español lleva
es, noes-ES. - Si hay páginas por país, una de ellas, o una página general, lleva además
es. - Ningún
es-419,es-LA,es_ESni país suelto. x-defaultapunta a tu versión principal o a una página para elegir idioma, y aparece en todas las versiones.- Hreflang solo apunta a páginas indexables que responden 200.
- No rediriges automáticamente según el idioma que supones: Google lo desaconseja, porque Googlebot suele rastrear desde Estados Unidos y no envía el encabezado Accept-Language.
- El atributo
langdel elementohtmlcoincide con el idioma del texto.
Hreflang solo conecta las versiones. Cada una tiene que responder a lo que se busca en su mercado; para ver con quién compites allí, empieza por las palabras clave de tu competencia.
