Ir al contenido principal

¿Qué es hreflang? La guía completa de etiquetas de idioma para SEO internacional

Aprende qué es hreflang, por qué importa para el SEO internacional y cómo implementarlo correctamente.

Hreflang Generator Team

¿Qué es Hreflang?

Hreflang es un atributo HTML que indica a los motores de búsqueda qué versión de idioma y región de una página debe mostrarse a los usuarios en ubicaciones específicas. Introducido por Google en 2011, el atributo hreflang se coloca dentro de elementos <link> y crea una señal que ayuda a los motores de búsqueda a comprender la relación entre páginas que comparten el mismo contenido pero se dirigen a diferentes idiomas o regiones.

El atributo sigue un formato sencillo: hreflang="en" para inglés, hreflang="es" para español, o hreflang="en-GB" para inglés dirigido específicamente a usuarios del Reino Unido. Cuando se implementa correctamente, hreflang garantiza que un usuario hispanohablante en México vea la versión es-MX de tu página en los resultados de búsqueda en lugar de la versión en inglés o la versión dirigida a España.

Sin hreflang, los motores de búsqueda deben adivinar qué versión de tu contenido mostrar a cada audiencia. Esa suposición conduce a que aparezcan las páginas incorrectas en los resultados de búsqueda, señales de contenido duplicado que diluyen tu posicionamiento y usuarios frustrados que aterrizan en contenido en un idioma que no comprenden.

Por qué Hreflang es importante para el SEO internacional

El SEO internacional es la práctica de optimizar tu sitio web para que los motores de búsqueda puedan identificar a qué países e idiomas se dirige tu contenido. Hreflang es el mecanismo principal para comunicar esta segmentación a Google y Yandex. Bing utiliza un enfoque diferente (la meta etiqueta content-language), pero hreflang sigue siendo el estándar dominante.

Existen tres razones clave por las que hreflang es esencial para cualquier sitio web multilingüe o multirregional:

Códigos de idioma vs códigos de región

Los valores de hreflang siguen el estándar ISO 639-1 para códigos de idioma y el estándar opcional ISO 3166-1 Alpha-2 para códigos de región.

Códigos solo de idioma se dirigen a hablantes de un idioma independientemente de su ubicación:

Códigos de idioma-región se dirigen a hablantes de un idioma en un país específico:

El código de región es siempre opcional. Si solo tienes una versión en inglés, usa en. Si tienes versiones separadas para EE.UU. y Reino Unido, usa en-US y en-GB. Nunca uses un código de región solo sin un prefijo de idioma: hreflang="US" no es válido y será ignorado por los motores de búsqueda.

Un error frecuente es usar códigos incorrectos. Por ejemplo, uk es el código ISO 639-1 para ucraniano, no para el Reino Unido. El código correcto para inglés británico es en-GB. De igual manera, jp no es válido; el código de idioma correcto para japonés es ja, y el código de país para Japón es JP, resultando en el código combinado ja-JP.

Entendiendo x-default

El valor x-default es un atributo especial de hreflang que designa una página de respaldo. Cuando un motor de búsqueda no puede hacer coincidir el idioma o la región de un usuario con ninguno de los valores hreflang disponibles, sirve la página x-default en su lugar.

<link rel="alternate" hreflang="x-default" href="https://example.com/en/" />

Deberías configurar x-default para la página que proporcione la mejor experiencia a los usuarios cuyo idioma no está cubierto explícitamente. Normalmente es tu versión en inglés o una página con selector de idioma. Las reglas clave para x-default son:

Sin un x-default, los motores de búsqueda no tienen orientación sobre qué mostrar a los usuarios de regiones no compatibles. Esto puede resultar en un comportamiento impredecible donde Google elige la versión que considera más relevante, que puede no ser la experiencia que pretendes ofrecer.

Cómo los motores de búsqueda utilizan Hreflang

Google procesa hreflang como una señal, no como una directiva. Esta distinción es importante: a diferencia de noindex (que Google generalmente obedece), hreflang es una sugerencia que Google pondera junto con otras señales como la ubicación del usuario, la configuración de idioma de búsqueda, el idioma real del contenido de la página y los patrones de enlaces internos.

Esto es lo que hace Google cuando encuentra hreflang:

  1. Rastrea y descubre todas las páginas listadas en el conjunto de hreflang
  2. Valida la reciprocidad -- verifica que la página A que apunta a la página B también tiene la página B apuntando de regreso a la página A
  3. Comprueba la accesibilidad de las URLs -- confirma que todas las URLs enlazadas son rastreables y devuelven códigos de estado 200
  4. Evalúa la coherencia -- compara las señales de hreflang con las etiquetas canonical, las entradas del sitemap y el contenido de la página
  5. Aplica la señal en el momento de la consulta para cambiar los resultados de búsqueda a la localización más relevante para el usuario

Si alguno de estos pasos de validación falla, Google puede ignorar el hreflang por completo para las páginas afectadas. Por eso la implementación correcta es tan importante: un solo enlace roto en la cadena puede invalidar todo el conjunto.

Yandex sigue un proceso similar pero está menos documentado. Bing no soporta oficialmente hreflang, confiando en su lugar en la meta etiqueta content-language y el atributo lang en el elemento <html>, aunque informes sugieren que Bing sí procesa parcialmente las señales de hreflang.

Métodos de implementación

Existen tres formas de implementar hreflang. Debes usar solo un método por página para evitar señales contradictorias. Si usas múltiples métodos y no coinciden, los motores de búsqueda no sabrán en cuál confiar.

Método 1: Elementos link HTML en el head

Coloca etiquetas <link rel="alternate"> en la sección <head> de cada página del conjunto.

<head>
  <link rel="alternate" hreflang="en" href="https://example.com/en/page/" />
  <link rel="alternate" hreflang="es" href="https://example.com/es/page/" />
  <link rel="alternate" hreflang="de" href="https://example.com/de/page/" />
  <link rel="alternate" hreflang="x-default" href="https://example.com/en/page/" />
</head>

Cuándo usar este método: Ideal para sitios con un número pequeño a mediano de páginas (menos de unos cientos) donde tienes control directo sobre el head HTML. Es el enfoque más común y el más fácil de depurar porque las etiquetas son visibles en el código fuente de la página.

Ventaja: Sencillo de implementar, fácil de inspeccionar, funciona con cualquier configuración de hosting.

Desventaja: Aumenta el peso de la página. Un sitio con 20 versiones de idioma añade 21 etiquetas <link> (20 idiomas + x-default) a cada página, lo cual puede ser significativo para páginas sensibles al rendimiento.

Método 2: Cabeceras HTTP

Usa cabeceras Link en la respuesta HTTP. Esto es particularmente útil para recursos no HTML como PDFs.

Link: <https://example.com/en/page/>; rel="alternate"; hreflang="en",
      <https://example.com/es/page/>; rel="alternate"; hreflang="es",
      <https://example.com/de/page/>; rel="alternate"; hreflang="de",
      <https://example.com/en/page/>; rel="alternate"; hreflang="x-default"

Cuándo usar este método: Necesario para documentos no HTML (PDFs, imágenes) que tienen variantes de idioma. También útil cuando no puedes modificar el head HTML (por ejemplo, en algunas configuraciones de CMS).

Ventaja: Funciona para cualquier tipo de contenido, no solo HTML.

Desventaja: Más difícil de auditar porque las cabeceras no son visibles en el código fuente renderizado de la página. Requiere configuración a nivel de servidor.

Método 3: Sitemap XML

Añade anotaciones hreflang dentro de tu sitemap XML usando el elemento xhtml:link dentro de cada entrada <url>.

<?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/page/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/page/" />
    <xhtml:link rel="alternate" hreflang="es" href="https://example.com/es/page/" />
    <xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/page/" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/en/page/" />
  </url>
  <url>
    <loc>https://example.com/es/page/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/page/" />
    <xhtml:link rel="alternate" hreflang="es" href="https://example.com/es/page/" />
    <xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/page/" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/en/page/" />
  </url>
</urlset>

Cuándo usar este método: Ideal para sitios grandes con miles de páginas. Los datos de hreflang residen en el sitemap en lugar de en cada página, lo que facilita la gestión programática y mantiene el peso de la página al mínimo.

Ventaja: Escala bien, mantiene el HTML limpio, puede ser generado por herramientas de compilación o plugins de CMS.

Desventaja: Google debe rastrear y procesar el sitemap antes de que el hreflang surta efecto. Los cambios pueden tardar más en propagarse que las etiquetas en la página.

¿Cuándo deberías usar Hreflang?

Necesitas hreflang cuando tu sitio tiene alguna de las siguientes características:

No necesitas hreflang cuando:

Conceptos erróneos comunes sobre Hreflang

Concepto erróneo: Hreflang mejora directamente el posicionamiento. Realidad: Hreflang no aumenta tu posicionamiento. Indica a los motores de búsqueda qué versión mostrar en cada mercado. Tu posicionamiento sigue dependiendo de la calidad del contenido, los backlinks y otras señales SEO tradicionales.

Concepto erróneo: Solo necesitas hreflang en la página de inicio. Realidad: Hreflang debe implementarse en cada página que tenga un equivalente en otro idioma o región. Si tu página /en/about/ tiene una versión en español en /es/about/, ambas páginas necesitan etiquetas hreflang apuntando entre sí y a sí mismas.

Concepto erróneo: Google lo resolverá sin hreflang. Realidad: Aunque Google usa señales como el atributo lang y el idioma del contenido de la página para detectar el idioma, estas son señales más débiles. Sin hreflang explícito, Google frecuentemente muestra la versión de idioma incorrecta en los resultados de búsqueda, especialmente para sitios con estructuras de URL similares entre idiomas.

Concepto erróneo: Hreflang reemplaza la etiqueta canonical. Realidad: Hreflang y canonical tienen propósitos diferentes y deben usarse juntos. La etiqueta canonical indica a los motores de búsqueda cuál URL es la copia maestra para fines de indexación. Hreflang indica alternativas de idioma y región. Cada versión localizada debe tener un canonical autorreferencial que apunte a sí misma, no a otra versión. Consulta nuestra guía sobre hreflang vs canonical para una explicación detallada.

Concepto erróneo: Puedes usar hreflang con URLs relativas. Realidad: Todas las URLs en atributos hreflang deben ser absolutas (comenzando con https://). Las URLs relativas son ignoradas silenciosamente por los motores de búsqueda, lo que significa que tu implementación de hreflang simplemente no funcionará.

Próximos pasos

Ahora que entiendes qué es hreflang y cómo funciona, puedes:

Related tools