¿Tu hreflang está funcionando o solo parece que sí?
Esta es la pregunta que más sitios multiidioma evitan hacerse. Si tu web tiene versiones en varios idiomas —español, inglés, catalán, cualquier combinación— es probable que hayas configurado las etiquetas hreflang, marcado la tarea como completada y pasado a otro asunto. El problema es que más del 60% de los sitios con hreflang presentan al menos un error de implementación según análisis con Screaming Frog, y Google ignora silenciosamente estas etiquetas defectuosas sin generar ninguna alerta visible en Search Console.
El resultado práctico de un hreflang roto es que los usuarios llegan a la versión incorrecta de tu sitio, que Google indexa versiones duplicadas innecesariamente, y que la autoridad de ranking no se distribuye correctamente entre las variantes lingüísticas. Son problemas reales con impacto medible en tráfico y conversiones, y todos son evitables con una implementación técnica correcta.
Esta guía cubre los tres métodos de implementación disponibles, los diez errores más frecuentes —con explicación de por qué ocurren y cómo corregirlos—, y un proceso de verificación que puedes aplicar inmediatamente.
Qué es hreflang y qué hace exactamente
Hreflang es el atributo del elemento <link> en HTML que indica a los motores de búsqueda las versiones alternativas de una página para diferentes idiomas o regiones. La sintaxis básica es:
<link rel="alternate" hreflang="lang_code" href="URL_absoluta" />
Cuando Google rastrea una página con estas anotaciones, construye un “cluster” de páginas relacionadas y aprende que todas son versiones equivalentes del mismo contenido en distintos idiomas. A partir de ese momento, intenta mostrar a cada usuario la versión más apropiada según su configuración de idioma y ubicación geográfica.
La distinción crítica es que hreflang es una señal, no una directiva. Como documenta Google Search Central: “Las anotaciones hreflang son una sugerencia para Google, no una directiva. Google puede ignorar implementaciones incorrectas y determinar de forma independiente qué contenido mostrar.” Esto significa que una implementación defectuosa no produce errores visibles: simplemente no tiene efecto, y Google decide unilateralmente qué versión mostrar.
Gary Illyes de Google, uno de los principales portavoces técnicos del buscador, lo describe así en hreflang.org: “Las etiquetas hreflang no funcionan como señales de ranking algorítmico directas, pero aportan valor sustancial dentro de los clusters de contenido: en un cluster, un grupo de páginas similares en distintos idiomas comparten la misma autoridad de ranking.”
Cuándo usar hreflang
Hreflang está indicado cuando tienes contenido en múltiples idiomas o variantes regionales del mismo idioma. Los casos típicos:
- Sitio en español e inglés con la misma audiencia objetivo
- Sitio en inglés con variantes regionales (en-US, en-GB, en-AU)
- Sitio en español con versión latinoamericana y española (es-ES, es-MX)
- Sitio trilingüe como el de Ighenatt, con versiones en español, inglés y catalán (es, en, ca)
Hreflang no está indicado si tus páginas en distintos idiomas cubren contenido significativamente diferente, si solo tienes una parte del sitio traducida, o si las páginas no tienen una equivalencia real de contenido.
Los tres métodos de implementación
Existen tres formas técnicas de implementar hreflang, cada una con sus ventajas y limitaciones:
| Método | Dónde se declara | Mejor para | Limitaciones |
|---|---|---|---|
| HTML head tags | <head> de cada página | Sitios pequeños o medianos (< 1000 URLs por locale) | Requiere modificar cada página individualmente; carga el HTML |
| XML Sitemap | Archivo sitemap.xml | Sitios grandes (> 1000 URLs); cualquier framework con generación de sitemap | Requiere que el sitemap esté correctamente indexado por Google |
| HTTP headers | Respuesta del servidor | PDFs y documentos no-HTML | Solo aplicable a recursos no-HTML; requiere acceso a configuración del servidor |
Método 1: HTML head tags
El método más directo. Dentro del elemento <head> de cada página del cluster, incluyes una etiqueta <link> por cada versión alternativa, incluyendo la propia página:
<head>
<!-- Self-referencing tag (obligatorio) -->
<link rel="alternate" hreflang="es" href="https://ighenatt.es/recursos/seo-tecnico/hreflang-implementacion/" />
<!-- Versión inglesa -->
<link rel="alternate" hreflang="en" href="https://ighenatt.es/en/resources/seo-tecnico/hreflang-implementacion/" />
<!-- Versión catalana -->
<link rel="alternate" hreflang="ca" href="https://ighenatt.es/ca/recursos/seo-tecnico/hreflang-implementacion/" />
<!-- Fallback para idiomas no cubiertos -->
<link rel="alternate" hreflang="x-default" href="https://ighenatt.es/recursos/seo-tecnico/hreflang-implementacion/" />
</head>
Este bloque debe aparecer idéntico en las tres páginas del cluster (la española, la inglesa y la catalana), porque Google construye el cluster desde cualquier punto de entrada. Si una página no tiene las etiquetas completas, la bidireccionalidad se rompe.
Método 2: XML Sitemap
Para sitios con miles de URLs localizadas, modificar el HTML de cada página es inviable y puede perjudicar el crawl budget. La alternativa es declarar las relaciones hreflang en el sitemap XML.
Primero, añade el namespace xhtml al elemento urlset:
<?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">
Después, dentro de cada bloque <url>, incluye las etiquetas <xhtml:link> para todas las versiones del cluster:
<url>
<loc>https://ighenatt.es/recursos/seo-tecnico/hreflang-implementacion/</loc>
<xhtml:link rel="alternate" hreflang="es"
href="https://ighenatt.es/recursos/seo-tecnico/hreflang-implementacion/"/>
<xhtml:link rel="alternate" hreflang="en"
href="https://ighenatt.es/en/resources/seo-tecnico/hreflang-implementacion/"/>
<xhtml:link rel="alternate" hreflang="ca"
href="https://ighenatt.es/ca/recursos/seo-tecnico/hreflang-implementacion/"/>
<xhtml:link rel="alternate" hreflang="x-default"
href="https://ighenatt.es/recursos/seo-tecnico/hreflang-implementacion/"/>
</url>
La regla de bidireccionalidad aplica igualmente: si en el sitemap declaras que la URL española apunta a la inglesa, el bloque <url> de la URL inglesa también debe apuntar a la española. En la práctica, esto significa que cada URL del cluster aparece tres veces en el sitemap (una por locale), y cada entrada incluye las etiquetas para las tres versiones.
Método 3: HTTP response headers
Este método está pensado exclusivamente para recursos no-HTML como PDFs o documentos descargables, donde no es posible modificar el <head>. Se configura a nivel de servidor web o CDN mediante el encabezado Link:
Link: <https://ighenatt.es/guia-tecnica-seo.pdf>; rel="alternate"; hreflang="es",
<https://ighenatt.es/en/seo-technical-guide.pdf>; rel="alternate"; hreflang="en"
En Nginx, la configuración correspondiente sería:
location ~* \.pdf$ {
add_header Link '<https://ighenatt.es/en/seo-technical-guide.pdf>; rel="alternate"; hreflang="en"';
}
Para la mayoría de sitios web estándar, este método no es necesario. Es relevante en proyectos de documentación técnica o sitios que sirven contenido en formato PDF con audiencias multilingües.
Los 10 errores más frecuentes en hreflang
El análisis de implementaciones con Screaming Frog revela un patrón consistente: los errores se concentran en los mismos puntos técnicos. Conocerlos por adelantado es la forma más eficiente de evitarlos.
1. Missing return tags (falta de bidireccionalidad)
El error más frecuente. Ocurre cuando la página A incluye una etiqueta hreflang apuntando a la página B, pero la página B no tiene una etiqueta recíproca apuntando a A. Como documenta Google: “Si la página X enlaza a la página Y, la página Y debe enlazar de vuelta a la página X. Los enlaces recíprocos ausentes hacen que las anotaciones se ignoren o no se interpreten correctamente.”
Corrección: Asegúrate de que el bloque de etiquetas hreflang es idéntico en todas las páginas del cluster, incluyendo las referencias a todas las variantes.
2. Ausencia de self-referencing tag
Cada página debe incluir una etiqueta hreflang apuntándose a sí misma, además de las etiquetas que apuntan a las otras versiones. Una página con versión española que solo incluye las etiquetas para inglés y catalán tiene este error.
Corrección: Incluye siempre la etiqueta con el idioma de la página actual y la URL canónica de esa misma página.
3. x-default ausente o mal configurado
x-default es altamente recomendable si quieres una implementación completa. Define qué versión mostrar a usuarios cuyo idioma no está cubierto por ninguna etiqueta específica. Sin x-default, Google toma esta decisión unilateralmente.
Corrección: Añade hreflang="x-default" apuntando a la versión más universal de tu contenido (normalmente la versión en inglés o la página principal de selección de idioma).
4. Códigos de idioma inválidos
El formato correcto es BCP 47: código de idioma en minúsculas, guión, código de región en mayúsculas. Los errores más comunes son en_US (guión bajo en lugar de guión), UK aislado (no existe como código de idioma; debe ser en-GB), o ESP en lugar de es-ES.
Corrección: Verifica en la lista oficial de códigos BCP 47. Para solo idioma sin región: es, en, ca. Para idioma + región: es-ES, es-MX, en-GB, en-US.
5. Tags apuntando a URLs con redirects
Si la URL en una etiqueta hreflang responde con un 301 o 302, Google no sigue ese redirect para el propósito del hreflang. La etiqueta debe apuntar directamente a la URL canónica final.
Corrección: Rastrea con Screaming Frog todas las URLs referenciadas en tus etiquetas hreflang y corrige las que devuelven códigos 3xx.
6. Tags apuntando a páginas con status no-200
Etiquetas que referencian URLs con 404, 410 o cualquier status distinto de 200 se ignoran. Esto ocurre con frecuencia en migraciones donde se eliminan páginas sin actualizar las etiquetas hreflang en las versiones restantes.
Corrección: Auditoría periódica de todas las URLs en etiquetas hreflang para detectar respuestas no-200.
7. Conflicto canonical vs. hreflang
Si una página tiene una etiqueta canonical apuntando a otra URL (no a sí misma), y al mismo tiempo tiene etiquetas hreflang, Google priorizará la señal canonical y potencialmente ignorará el hreflang. Como indica Google, el 30-40% de las etiquetas canonical con señales conflictivas son ignoradas.
Corrección: Las etiquetas canonical deben ser self-referencing (apuntar a la propia URL) en las páginas con hreflang. Revisa que no existan canonicals cruzados entre variantes lingüísticas.
8. Implementación inconsistente entre métodos
Algunos sitios tienen hreflang en HTML head y también en el sitemap, con datos diferentes en cada lugar. Esto genera señales contradictorias. Si usas ambos métodos, los datos deben ser idénticos; idealmente, usa un solo método consistentemente.
Corrección: Elige un método y aplícalo de forma coherente en todo el sitio. Si tienes ambos, asegúrate de que los datos coincidan exactamente.
9. Trailing slash inconsistente
https://ejemplo.com/pagina/ y https://ejemplo.com/pagina son URLs diferentes para Google. Si las etiquetas hreflang usan un formato y las URLs canónicas usan otro, Google puede tratar los pares como páginas no relacionadas.
Corrección: Define una política de trailing slash consistente para todo el sitio y aplícala sin excepciones en las URLs de todas las etiquetas hreflang.
10. URLs relativas en lugar de absolutas
Hreflang requiere URLs completamente cualificadas (fully-qualified), es decir, con protocolo y dominio incluidos. Una URL relativa como /recursos/seo-tecnico/hreflang-implementacion/ no es válida.
Corrección: Siempre usa la URL completa: https://ighenatt.es/recursos/seo-tecnico/hreflang-implementacion/.
Proceso de verificación paso a paso
Una implementación de hreflang solo está completa cuando está verificada. Este proceso cubre los puntos críticos:
Paso 1 — Auditoría de bidireccionalidad con Screaming Frog
Rastrea el sitio completo y accede a la pestaña Hreflang. Filtra por “Non-Reciprocal”. Cualquier URL en ese filtro tiene el error de return tag ausente. Exporta la lista y corrígela.
Paso 2 — Verificación manual y herramientas hreflang
Valida la implementación inspeccionando las etiquetas rel="alternate" y x-default en el código fuente o mediante un rastreo completo con Screaming Frog. Confirma que todas las URLs referenciadas devuelven HTTP 200 y aparecen en tus sitemaps XML. Para validación por URL específica, usa hreflang.org. Para verificación indirecta basada en rastreo, usa la herramienta de Inspección de URL de Search Console o los informes de Cobertura para detectar errores de indexación.
Paso 3 — Test de URLs específicas con hreflang.org checker
La herramienta en hreflang.org permite verificar una URL concreta y ver todos los pares detectados, incluyendo alertas sobre bidireccionalidad y códigos de idioma. Úsala para validar páginas nuevas antes de publicarlas.
Paso 4 — Comprobación de status HTTP de URLs referenciadas
Extrae todas las URLs mencionadas en tus etiquetas hreflang y verifica que todas respondan con 200. Screaming Frog puede hacer esto con la función “List Mode”.
Paso 5 — Verificación de consistencia canonical/hreflang
Para cada página con hreflang, comprueba que la etiqueta canonical apunta a la misma URL que el self-referencing hreflang. Discrepancias aquí son señal de conflicto.
Implementación en frameworks modernos
En un sitio Astro como el nuestro en Ighenatt, las etiquetas hreflang se generan programáticamente en el layout base. El patrón correcto es construir el objeto localizedSlugs usando los helpers de URL centralizados y pasarlo al componente de layout que renderiza las etiquetas en el <head>. Esto garantiza que la bidireccionalidad es automática: cuando el layout incluye las etiquetas para ES, EN y CA, cada una de las tres páginas del cluster recibe el bloque completo con referencias a las otras dos.
Para sitios con miles de páginas localizadas —el umbral sugerido es 1000 URLs por locale—, la alternativa más escalable es el sitemap XML. El sitemap con namespace xhtml permite declarar todas las relaciones hreflang en un único archivo que Google rastrea periódicamente, sin aumentar el tamaño del HTML de cada página.
Hreflang en el contexto del SEO técnico general
Hreflang es uno de los componentes del SEO técnico internacional, pero no opera de forma aislada. Su efectividad depende de que otras señales técnicas estén correctamente configuradas: las etiquetas canonical deben ser coherentes con las anotaciones hreflang, las URLs deben responder con 200, el sitemap debe estar enviado a Search Console, y la estructura de URLs debe seguir una lógica consistente.
Un sitio con hreflang perfecto pero con problemas de crawl budget puede ver sus etiquetas ignoradas porque Google no rastrea todas las páginas del cluster con la frecuencia necesaria. Un sitio con hreflang correcto pero con canonicals conflictivos llega al mismo resultado. Las señales técnicas funcionan como sistema: si una pieza falla, las demás no compensan.
Por eso, la forma más eficiente de abordar estos problemas es una auditoría técnica que evalúe todos los componentes de forma integrada, identificando qué señales generan conflictos y en qué orden corregirlos.
Para una perspectiva más amplia, consulta la guía de SEO técnico o los problemas de indexación en Google para entender cómo el rastreo afecta a la efectividad de las anotaciones hreflang.