Saltar al contenido
SCRAWL
SEO técnicoFaisal Y

Guía de implementación hreflang: HTML, cabeceras y sitemap

Hreflang indica a los buscadores qué URL mostrar por idioma o región. Cómo implementarlo en HTML, cabeceras o sitemap, qué hace x-default y por qué fallan en silencio los retornos rotos.

Tres URLs localizadas conectadas por enlaces alternate hreflang incluido x-default.
Cluster de alternas hreflang
Usar la herramienta gratis
Generador de tags hreflang
Arma un cluster por grupo de páginas: una URL por idioma o región, x-default opcional, y exporta HTML, cabeceras o XML.

Hreflang indica a los buscadores qué URL corresponde a cada idioma o región cuando el mismo contenido (o plantillas equivalentes) existe en varios sitios. No traduce páginas, no sustituye rel=canonical ni arregla duplicados por sí solo. Responde a una pregunta más estrecha: para este tema, qué URL preferimos para usuarios en Francia frente a usuarios en el Reino Unido.

Cuando hreflang está mal o incompleto, rara vez verás un aviso claro en Search Console. Rankea la plantilla equivocada en el país equivocado, o ningún locale consolida relevancia. Esta guía cubre implementación en HTML, cabeceras HTTP y sitemaps XML, el papel de x-default y los errores que invalidan un cluster. Para generar bloques antes del deploy, usa el Generador de hreflang. Para auditar URLs en vivo, el Comprobador de hreflang.

Páginas localizadas en un cluster con enlaces recíprocos y x-default

Qué es un cluster hreflang

Un cluster es el conjunto de URLs que son alternas de locale del mismo contenido (o del mismo tipo de plantilla, p. ej. cada ficha de producto). Cada URL del cluster debe:

  1. Referenciar todas las demás, incluida ella misma (autorreferencia).
  2. Mantener reciprocidad: si A lista B, B debe listar A con los mismos códigos.
  3. Usar etiquetas IETF válidas (ISO 639-1 + región ISO 3166-1 opcional — en-GB, no en-UK ni en_GB).

Google documenta hreflang en HTML, cabeceras o sitemap. La sintaxis cambia; el set lógico debe ser coherente.

| Método | Dónde vive | Cuándo encaja |

|--------|------------|---------------|

| HTML <link rel="alternate" hreflang> | <head> | El CMS inyecta tags por plantilla |

| Cabecera HTTP Link | Respuesta del servidor | CDN o reglas de servidor |

| Sitemap xhtml:link | Archivo XML | Sitios grandes, headless, generación por lotes |

Implementación en HTML

Forma habitual: una línea por alterna en el head:

<link rel="alternate" hreflang="en-US" href="https://example.com/us/producto/" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/uk/producto/" />
<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/produit/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />

Cada URL localizada lleva el bloque completo, no solo las líneas de su idioma. La página US incluye en-GB y fr-FR apuntando a UK y Francia, más su propia línea en-US. Pegar solo dos tags es el fallo más común.

Usa URLs absolutas con https://. Rutas relativas (/fr/pagina) fallan al resolver y en muchos exports de sitemap.

Cabeceras HTTP Link

Las mismas alternas pueden ir en cabecera Link:

Link: <https://example.com/us/producto/>; rel="alternate"; hreflang="en-US", <https://example.com/uk/producto/>; rel="alternate"; hreflang="en-GB"

Útil cuando el <head> es frágil pero el edge puede añadir cabeceras. Las reglas del cluster no cambian: set completo, autorreferencia, reciprocidad, códigos válidos.

Evita publicar el mismo set en head y cabecera sin intención clara. Elige una fuente de verdad.

Tres canales para el mismo cluster: HTML, cabecera Link y sitemap

Implementación en sitemap XML

En sitios grandes, hreflang en sitemap saca miles de alternas de plantillas individuales. Cada <url> incluye <loc> e hijos xhtml:link:

<url>
  <loc>https://example.com/us/producto/</loc>
  <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/us/producto/" />
  <xhtml:link rel="alternate" hreflang="en-GB" href="https://example.com/uk/producto/" />
  <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/" />
</url>

Declara xmlns:xhtml="http://www.w3.org/1999/xhtml" en urlset. Cada URL localizada suele ser un bloque <url> con el mismo set de xhtml:link. Hreflang solo en sitemap sigue exigiendo reciprocidad lógica.

No sustituye canonical correcto en cada URL. Canonical e hreflang resuelven problemas distintos.

x-default

`x-default` es el valor de respaldo para quien no encaja en otro hreflang del cluster. Opciones habituales:

  • Página selector de idioma en la raíz.
  • Tu mercado principal cuando otros locales son añadidos.
  • Inglés global cuando existen URLs en-US y en-GB aparte.

Google recomienda x-default con targeting por país o idioma. Omitirlo no es error duro, pero es un hueco frecuente.

Códigos de locale que pasan validación

Hreflang usa BCP 47, no nombres de país ni IDs de CMS:

  • Solo idioma: en, fr, de.
  • Idioma + región: en-GB, es-MX, pt-BR.
  • Script: zh-Hans, zh-Hant.

Corrige antes de publicar:

| Error | Correcto |

|-------|----------|

| en-UK | en-GB |

| en_GB | en-GB |

| GB-en | en-GB |

| english | en |

Google ignora en silencio códigos mal formados.

Retornos y autorreferencia

Autorreferencia: la URL US debe incluir hreflang="en-US" apuntando a sí misma.

Retorno: la URL francesa debe listar US y UK con los mismos códigos que esas páginas usan. Si US lista Francia pero la página FR omite US, Google puede ignorar todo el cluster.

Por eso ayuda una hoja: una fila por URL, columnas por locale, generación programática. Editar una plantilla sin actualizar las demás rompe la reciprocidad en días.

Elegir HTML, cabecera o sitemap

No hay ganador universal.

  • HTML se inspecciona fácil (código fuente, comprobador).
  • Cabeceras encajan con edge cuando el head no.
  • Sitemaps escalan cuando cada SKU tiene decenas de locales.

Tras publicar, comprueba URLs con el comprobador de hreflang. El generador valida forma antes del deploy; no ve cachés del CMS.

Errores más allá de la sintaxis

Hreflang entre páginas no equivalentes. Conecta traducciones o variantes regionales del mismo contenido, no home con un post porque ambos tienen versión en francés.

Etiquetar solo el idioma “principal”. Todas las URLs locale participan por igual.

Mezcla http/https o hosts distintos. Alinea hreflang con tu host canónico.

Migrar sin reconstruir clusters. Cambios de dominio o rutas /en/ huerfanan alternas. Regenera, redirige y vuelve a comprobar.

Flujo que usamos

  1. Inventario de plantillas equivalentes.
  2. Tabla — filas URLs, columnas locales, celdas con URLs absolutas.
  3. Generar con el generador (o CMS desde la misma tabla).
  4. Publicar el mismo día en todas las plantillas del cluster si es posible.
  5. Verificar cada tipo de plantilla en vivo con el comprobador.
  6. Repetir tras actualizaciones de plugins de idioma.

CSV url, lang-code, group encaja con el modo bulk del generador para corregir códigos y x-default antes de copiar HTML, cabeceras o XML.

Hreflang es tedioso porque la corrección es en grafo: cada nodo debe apuntar a todos con etiquetas consistentes. Trátalo como datos estructurados: genera desde datos, valida en vivo y arregla reciprocidad antes de teorizar sobre rankings.

hreflangseo internacionalseo técnicositemap

Preguntas frecuentes

¿Hreflang garantiza que rankee la versión correcta del país?

No. Es una señal fuerte sobre qué URL encaja con un locale. Google sigue mirando relevancia, enlaces y contexto. Clusters rotos pueden ignorarse por completo.

¿Puedo usar hreflang entre dominios distintos?

Sí, si cada dominio es una versión de locale deliberada. Cada URL del cluster sigue necesitando el set recíproco completo. Los errores entre dominios son frecuentes: comprueba en vivo tras publicar.

¿HTML, cabecera Link o sitemap?

Elige un método principal por URL que tu CMS mantenga bien. Google acepta los tres. Mezclar sets duplicados sin fuente de verdad clara complica auditorías.

¿Es obligatorio x-default?

Google lo recomienda con varios países o idiomas. Es la URL de respaldo cuando ningún otro hreflang encaja, a menudo un selector de idioma o la home principal.

¿Qué rompe hreflang con más frecuencia?

Retornos ausentes, códigos inválidos (en_UK en lugar de en-GB), URLs relativas y páginas que listan alternas pero no reciben el mismo set de vuelta.

Artículos relacionados