Hreflang: guía completa de SEO internacional

Cómo planificar las versiones por idioma y región, implementar las anotaciones hreflang recíprocas y comprobar que cada URL sirve a la audiencia prevista.

Hreflang es un atributo HTML que indica a los buscadores para qué idioma y región está pensada cada versión de una página. Google usa este dato para mostrar al usuario la versión del contenido que corresponde a su idioma y a su ubicación.

Sin hreflang, Google intenta adivinar por su cuenta la versión correcta, y a menudo se equivoca: un usuario que habla ruso recibe la página en inglés y un usuario alemán ve la versión francesa. Esto reduce el CTR, aumenta la tasa de rebote y cuesta conversiones.

Hreflang une las versiones de idioma con enlaces recíprocos: cada página debe apuntar explícitamente a todas las demás.
Hreflang afecta a qué versión de la página se muestra al usuario, pero no a las posiciones de forma directa. Google no penaliza su ausencia, pero sin él pierdes relevancia en los resultados de búsqueda.

Qué es hreflang

Cómo hreflang conecta las versiones multilingües de un sitio web.

El atributo hreflang se introdujo en 2011: Google lo creó para resolver el problema del contenido duplicado en los sitios internacionales. Si una página /about existe como /en/about, /de/about y /fr/about, Google no debería tratarlas como duplicados, porque cada una sirve a una audiencia distinta.

2011

Año de introducción

Google introdujo hreflang para los sitios multilingües

179+

Códigos de región

Códigos ISO 3166-1 alpha-2 admitidos por Google

100 %

Reciprocidad

Todas las versiones de la página deben enlazarse entre sí

≤ 10 ms

Impacto en la velocidad

Un hreflang bien implementado no ralentiza el sitio

Hreflang solo lo admiten Google y Yandex. Bing usa la metaetiqueta Content-Language y las cabeceras HTTP, pero trabaja con la estructura de URL y la segmentación geográfica a través de Webmaster Tools. Si tu audiencia incluye usuarios de habla rusa, hreflang sigue siendo necesario para que Yandex funcione bien.

Cuándo usar hreflang

No todos los sitios multilingües necesitan hreflang: conviene entender cuándo el atributo resuelve un problema real.

Situación¿Necesita hreflang?Notas
Un idioma, distintos países (en-US, en-GB)SíContenido distinto (precios, ortografía, promociones)
Distintos idiomas (en, de, fr)SíCaso de uso principal de hreflang
Un idioma, una regiónNoNo hace falta repetir el enlace a la propia página
Contenido idéntico en todas las versiones de idiomaNoUsa canonical en su lugar
Traducción parcial (70 % o más del contenido)SíIncluso las traducciones parciales necesitan marcado
Traducción automática sin revisarNoGoogle puede tratarlo como spam
Si el contenido de dos versiones de la página es completamente idéntico (por ejemplo, /en-us/ y /en-gb/ sin diferencias), es mejor usar canonical en lugar de hreflang.

Sintaxis y formatos

Hreflang usa códigos de dos estándares: ISO 639-1 para el idioma e ISO 3166-1 alpha-2 para la región. El formato es language o language-REGION.

html
<!-- Language only -->
<link rel="alternate" hreflang="ru" href="https://example.com/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/" />

<!-- Language + region -->
<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="fr-FR" href="https://example.com/fr/" />
<link rel="alternate" hreflang="fr-CA" href="https://example.com/fr-ca/" />

<!-- x-default: page for users without a matching locale -->
<link rel="alternate" hreflang="x-default" href="https://example.com/" />

La región en hreflang se escribe siempre en mayúsculas (en-GB, fr-CA) y el idioma en minúsculas (en, fr). Muchas implementaciones usan minúsculas en todo: Google entiende ambas formas, pero seguir el formato canónico es una buena práctica.

CódigoSignificado
ruRuso (cualquier región)
enInglés (cualquier región)
en-USInglés de Estados Unidos
en-GBInglés del Reino Unido
de-ATAlemán de Austria
zh-HansChino simplificado
zh-HantChino tradicional
x-defaultPágina para región o idioma no definidos

Métodos de implementación

Hreflang se puede implementar de tres formas. La elección depende de la tecnología y de la escala del sitio.

1. Etiqueta HTML en la sección head

El método más común. Las etiquetas <link rel="alternate" hreflang="..."> se añaden al <head> de cada página. Y lo más importante: todas las versiones de la página deben enlazar a todas las demás versiones, incluida ella misma.

html
<!-- Page /en/about — links to ALL versions -->
<head>
  <link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
  <link rel="alternate" hreflang="ru" href="https://example.com/about/" />
  <link rel="alternate" hreflang="de" href="https://example.com/de/about/" />
  <link rel="alternate" hreflang="x-default" href="https://example.com/en/about/" />
  <link rel="canonical" href="https://example.com/en/about/" />
</head>

2. Cabecera HTTP Link

Para los PDF, las imágenes y otros recursos que no son HTML se usan cabeceras HTTP. Este método también funciona en cualquier página, pero requiere configurar el servidor.

nginx
# Nginx: add hreflang via HTTP headers
add_header Link '</en/about/>; rel="alternate"; hreflang="en", </about/>; rel="alternate"; hreflang="ru", </de/about/>; rel="alternate"; hreflang="de"';

3. Sitemap XML

La opción óptima para sitios grandes (más de 10 000 páginas). Todas las relaciones hreflang se describen en el sitemap: así se reduce el exceso de HTML y se centraliza la gestión.

xml
<?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://example.com/en/about/</loc>
    <xhtml:link rel="alternate" hreflang="en"
                href="https://example.com/en/about/"/>
    <xhtml:link rel="alternate" hreflang="ru"
                href="https://example.com/about/"/>
    <xhtml:link rel="alternate" hreflang="de"
                href="https://example.com/de/about/"/>
    <xhtml:link rel="alternate" hreflang="x-default"
                href="https://example.com/en/about/"/>
  </url>
</urlset>
No mezcles los métodos: si hreflang está implementado en el HTML, no lo añadas también al sitemap. Google procesará ambas fuentes, y eso puede generar conflictos.

x-default: página de selección de idioma

El valor x-default designa la página para los usuarios cuyo idioma o región no coincide con ninguna de las alternativas declaradas. Google muestra esta versión cuando no existe ningún hreflang que coincida.

  • Página de selección de idioma: el usuario llega a /choose-language/ y elige su versión
  • Versión principal del sitio: normalmente la versión en inglés o la que Google debería mostrar por defecto
  • Página de inicio: si el sitio tiene varios idiomas, x-default apunta a /
x-default no es obligatorio, pero Google recomienda encarecidamente añadirlo. Sin él, los usuarios sin un idioma coincidente reciben la versión que casualmente aparezca en el índice.

Canonical + hreflang

Canonical y hreflang resuelven problemas distintos, pero funcionan juntos. La regla es sencilla: canonical apunta siempre a sí misma (canonical autorreferencial) cuando la página tiene hreflang.

html
<!-- CORRECT: canonical points to self + hreflang covers all versions -->
<link rel="canonical" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="ru" href="https://example.com/about/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/about/" />

<!-- WRONG: canonical points to a different language version -->
<link rel="canonical" href="https://example.com/ru/about/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />

Si el canonical de la página en inglés apunta a la versión rusa, Google tratará la página en inglés como un duplicado y no la incluirá en el índice. Por eso, hreflang sin un canonical autorreferencial prácticamente no sirve de nada.

Errores habituales

Según datos de auditorías, alrededor del 60 % de los sitios con hreflang tiene al menos un error crítico. Estos son los más comunes.

Error 1: faltan los enlaces recíprocos

El problema más común. La página A enlaza a la página B mediante hreflang, pero la página B no enlaza de vuelta a la A. Google ignora ese hreflang: sin reciprocidad no es válido.

Error 2: códigos de idioma incorrectos

  • hreflang="en_US" con guion bajo en lugar de guion: código no válido
  • hreflang="english": una palabra en lugar de un código ISO
  • hreflang="zh" en lugar de hreflang="zh-Hans" o hreflang="zh-Hant": el chino requiere indicar el sistema de escritura
  • hreflang="ru-RU" en lugar de hreflang="ru": código de región innecesario para un idioma sin dialectos

Error 3: hreflang en páginas no indexables

Si una página está bloqueada en robots.txt o marcada con noindex, su hreflang no sirve de nada. Google no procesa hreflang en páginas que no puede indexar.

Error 4: redirecciones automáticas por idioma

Algunos sitios redirigen a los usuarios según el idioma del navegador: un visitante ruso pide /about/ y es redirigido a /ru/about/. Google ve una redirección 301 y no puede procesar bien hreflang. Solución: servir el contenido sin redirigir y cambiar de versión con JavaScript o cookies.

Error 5: hreflang que apunta a 404 o a redirecciones

Hreflang debe apuntar a las URL finales y canónicas. Los enlaces que pasan por redirecciones o llevan a páginas 404 invalidan el atributo para esa versión.

Herramientas de verificación

HerramientaQué compruebaCoste
Google Search ConsoleErrores de hreflang en el informe de Segmentación internacionalGratis
Herramienta de hreflang de Aleyda SolisValidez de las etiquetas de una página y reciprocidad de los enlacesGratis
Comprobador de hreflang de TechnicalSEOComprobación por lotes y exportación de erroresGratis / de pago
Screaming FrogRastreo completo con análisis de hreflangDe pago
Ahrefs Site AuditErrores de hreflang dentro de la auditoría SEODe pago
Semrush Site AuditInforme específico de hreflangDe pago

Preguntas frecuentes

¿Influye hreflang en el posicionamiento?
No. Hreflang no es un factor de posicionamiento directo. Afecta a qué versión de la página se muestra a un usuario concreto, pero no a su posición en la SERP. Aun así, una implementación correcta mejora indirectamente las métricas: baja la tasa de rebote y suben el tiempo en el sitio y las conversiones, porque los usuarios ven la versión que les corresponde.
¿Necesita hreflang cada página del sitio?
Solo las páginas que tienen equivalentes en otros idiomas. Las páginas de servicio (inicio de sesión, pago, rutas de la API), las páginas con noindex y las que no tienen equivalente en otro idioma no necesitan hreflang.
¿Qué pasa si hreflang apunta a una URL con redirección 301?
Google intentará seguir la redirección, pero el resultado es impredecible. Algunos analizadores de hreflang se detienen en la URL intermedia. Apunta siempre a la URL canónica final, sin redirecciones.
¿Puedo usar hreflang solo en el sitemap, sin añadirlo al HTML?
Sí. Incluso es el enfoque preferido en sitios grandes. Google admite oficialmente ambos métodos. Lo importante es no usar los dos a la vez en las mismas páginas.
¿Cuánto tarda Google en procesar un hreflang nuevo?
Normalmente de unos días a unas semanas, según la frecuencia de rastreo del sitio. Para acelerarlo, añade a Google Search Console un sitemap con hreflang y solicita la reindexación de las páginas clave.

Check it with SpiderHead

Free and local: run the audit on your own machine.

Try it