hreflang: así lo configuramos en 12 idiomas y 5 errores comunes

Por SEOgrinder · Publicado · Actualizado · 10 min de lectura

Respuesta corta: hreflang es una anotación que le dice a Google qué páginas son versiones de idioma o de región del mismo contenido, para que la Búsqueda lleve a cada persona a la que le corresponde. Cada versión debe nombrarse a sí misma y a todas las demás, y cada pareja de páginas debe enlazarse de vuelta; si no, las etiquetas pueden ignorarse. Abajo verás cómo configura seogrinder.com hreflang para doce idiomas y cinco errores de hreflang sacados de la documentación de Google.

¿Para qué sirve hreflang y cuándo lo necesitas?

Google explica la idea en su página Tell Google about localized versions of your page: si tienes varias versiones de una página para distintos idiomas o regiones y se lo cuentas a Google, ayudas a la Búsqueda a llevar a los usuarios a la versión más adecuada. En el original: «help Google Search point users to the most appropriate version of your page by language or region».

Google menciona tres situaciones en las que lo recomienda:

  • El contenido principal se queda en un solo idioma y solo se traduce la plantilla, es decir, la navegación y el pie de página.
  • Hay pequeñas variaciones regionales de un contenido parecido en un mismo idioma, por ejemplo inglés para Estados Unidos, Reino Unido e Irlanda.
  • El contenido está traducido por completo, por ejemplo una versión en alemán y otra en inglés de cada página.

Google puede encontrar las versiones alternativas por su cuenta, pero dice que normalmente es mejor indicarlas de forma explícita. Una página traducida no es un duplicado: las versiones localizadas «are only considered duplicates if the main content of the page remains untranslated» (Google), es decir, solo cuentan como duplicadas si el contenido principal sigue sin traducir.

Hay dos cosas que hreflang no es. No es la vía por la que Google reconoce el idioma de una página: Google escribe que «doesn't use hreflang or the HTML lang attribute to detect the language of a page» (Google), y su página sobre sitios multilingües añade que para eso usa el contenido visible. Y tampoco es una promesa de posicionamiento: Google describe un único propósito, mostrar a cada persona que busca la versión que le corresponde.

Cómo conecta seogrinder.com doce idiomas

Esta sección describe el blog de seogrinder.com tal como lo encontramos el 5 de noviembre de 2026. La página de inicio / no lleva etiquetas hreflang. Cada artículo es una página propia en un solo idioma. Comprueba las etiquetas por tu cuenta:

curl -sS https://seogrinder.com/es/blog/checklist-seo-auditoria | grep '<link rel="alternate" hreflang'

El resultado son 13 líneas, y son las mismas en las doce versiones de ese artículo:

<link rel="alternate" hreflang="en" href="https://seogrinder.com/en/blog/seo-audit-checklist">
<link rel="alternate" hreflang="ar" href="https://seogrinder.com/ar/blog/qaimat-tadqiq-seo">
<link rel="alternate" hreflang="de" href="https://seogrinder.com/de/blog/seo-audit-checkliste">
<link rel="alternate" hreflang="es" href="https://seogrinder.com/es/blog/checklist-seo-auditoria">
<link rel="alternate" hreflang="fr" href="https://seogrinder.com/fr/blog/checklist-audit-seo-gratuite">
<link rel="alternate" hreflang="hi" href="https://seogrinder.com/hi/blog/seo-audit-checklist-hindi">
<link rel="alternate" hreflang="it" href="https://seogrinder.com/it/blog/checklist-audit-seo">
<link rel="alternate" hreflang="ja" href="https://seogrinder.com/ja/blog/seo-chekkurisuto">
<link rel="alternate" hreflang="ko" href="https://seogrinder.com/ko/blog/seo-chekeuliseuteu-jeomgeom">
<link rel="alternate" hreflang="nl" href="https://seogrinder.com/nl/blog/seo-audit-checklist-uitvoeren">
<link rel="alternate" hreflang="pl" href="https://seogrinder.com/pl/blog/checklista-seo-audyt">
<link rel="alternate" hreflang="pt" href="https://seogrinder.com/pt/blog/checklist-de-auditoria-seo">
<link rel="alternate" hreflang="x-default" href="https://seogrinder.com/en/blog/seo-audit-checklist">

Esto es lo que muestra el bloque:

  • Un solo método. Las etiquetas están en el <head> del HTML. Estas páginas no envían hreflang en una cabecera HTTP, y el sitemap.xml no tiene entradas xhtml:link. Google considera equivalentes los tres métodos y no ve ninguna ventaja en usarlos todos a la vez.
  • Códigos de idioma sencillos. Doce códigos, sin regiones, porque de cada idioma hay exactamente una versión del artículo.
  • Cada página se nombra a sí misma. En la versión en español, la línea es es su propia dirección. Las doce versiones llevan las mismas líneas.
  • Etiquetas simples. Están en el <head>, un <link> por versión, sin atributos adicionales. Google pide un <head> bien formado y advierte contra mezclar hreflang con atributos como media en una misma etiqueta.
  • El canonical apunta a la propia página. Cada versión nombra su propia dirección como canonical, no la inglesa, lo cual encaja con lo que dice Google: las versiones traducidas no son duplicados.
  • Una dirección distinta por idioma y ninguna redirección automática. /es/blog/checklist-seo-auditoria tiene un slug en español. Google recomienda direcciones distintas por idioma en lugar de cookies o ajustes del navegador, y desaconseja redirigir a los visitantes según el idioma que se les supone. Una petición a la página en inglés con Accept-Language: de devuelve 200 y se queda ahí (comprobado el 5 de noviembre de 2026). Además, cada artículo tiene un menú de idiomas con enlaces normales a las demás versiones.

Cómo está construido. Cada archivo de artículo nombra su tema en una línea group. El código del blog reúne todos los archivos con el mismo group, imprime un <link> por cada miembro (primero el inglés y luego por código de idioma) y pone x-default en la versión inglesa. Un idioma sin archivo no recibe línea, así que un tema que existe solo en inglés y alemán lleva tres líneas: en, de y x-default. Google admite conjuntos incompletos: «you can omit some languages on some pages; Google will still process the ones that point to each other» (Google).

Cómo lo contamos. Este bucle lee todas las direcciones de artículos del sitemap y cuenta las líneas hreflang de cada página:

for u in $(curl -sS https://seogrinder.com/sitemap.xml | grep -o 'https://seogrinder.com/[a-z][a-z]/blog/[^<]*'); do
  curl -sS "$u" | grep -c '<link rel="alternate" hreflang'
done | sort | uniq -c

El 5 de noviembre de 2026 imprimió 408 13: 408 páginas con 13 líneas (doce idiomas más x-default). Después, un pequeño script descargó esas mismas 408 páginas y comparó las etiquetas: cada página se nombra a sí misma, cada dirección citada responde 200 y nombra de vuelta a la página, y x-default es la dirección inglesa. Nuestra comprobación del blog (check:blog) verifica estas reglas en cada página de artículo cada vez que cambiamos el blog.

¿Para qué sirve x-default?

Google describe x-default como «recommended for specifying the fallback page for users whose language settings don't match any of your site's localized versions» (Google): la página de reserva para quienes tienen un idioma que no coincide con ninguna de tus versiones. No es obligatorio.

Google añade que cualquier página puede llevar ese valor, pero que está «designed for language selector pages and so it will work best with those». Para los artículos no tenemos una página de selección de idioma, así que nuestra página de reserva es la versión inglesa del mismo artículo; en las páginas de índice del blog es /en/blog. Es una decisión nuestra, no una regla.

Errores frecuentes: 5 errores de hreflang según la documentación de Google

La página de Google tiene una sección «Common Mistakes» con tres entradas, y sus directrices indican otros dos requisitos con «must». Son los cinco de abajo. Google no dice con qué frecuencia ocurre cada uno. Solo dos tienen una consecuencia declarada: los enlaces de vuelta que faltan (las etiquetas se ignoran) y los códigos de región reservados (esa parte se ignora). En los demás, la página solo enuncia la regla.

1. Enlaces de vuelta que faltan

Si la página X nombra a la página Y, la página Y tiene que nombrar a la página X. La regla, con palabras de Google: «If two pages don't both point to each other, the tags will be ignored» (Google). Google da el motivo: nadie, desde otro sitio, debe poder declararse versión alternativa de tu página. La solución es imprimir el mismo bloque de enlaces en todas las versiones, desde una única fuente. Si cuesta mantener el conjunto completo, Google permite omitir algunos idiomas en algunas páginas, pero dice que los idiomas añadidos después deberían enlazar en ambos sentidos con el original o con el dominante.

2. Una versión que no se nombra a sí misma

La directriz para todos los métodos: «Each language version must list itself as well as all other language versions» (Google). Con el método HTML significa un enlace por variante, «including itself», y el mismo conjunto en todas las versiones. Google no dice qué ocurre sin esa autorreferencia, así que trátalo como un error y añade la línea.

3. Códigos de idioma no válidos

La primera parte del valor es un idioma en formato ISO 639-1, seguido, si quieres, de una región. Google escribe: «Specifying the region alone is not valid». En su ejemplo de Bélgica, be es incorrecto porque es el código del bielorruso; los correctos son de-BE, nl-BE y fr-BE. Los códigos que no figuran en esas normas, como es-419, no se admiten (los códigos de escritura como zh-Hans sí). Las mayúsculas y minúsculas dan igual, pero la región se escribe en mayúsculas según la norma.

4. Códigos de región no válidos

La región debe ser un código ISO 3166-1 Alpha 2 asignado oficialmente. Con los códigos reservados para otra cosa, «Google Search ignores that part of the annotation». Google cita EU, UN y UK como códigos sin efecto. Para el Reino Unido el código es GB, como en el propio ejemplo de Google, en-GB.

5. Direcciones relativas o incompletas

«Alternate URLs must be fully-qualified, including the transport method (http/https)» (Google). El ejemplo de Google: https://example.com/foo, no //example.com/foo ni /foo.

Cómo comprobar hreflang

A mano: ejecuta el comando curl de arriba en una de tus páginas y mira si la página se nombra a sí misma. Después ejecútalo en cada dirección del resultado y busca la primera página; esa es la prueba de los enlaces de vuelta. Google también enumera herramientas de depuración de terceros y dice que «are not maintained or checked by Google».

Con SEOgrinder, que es nuestra propia herramienta y la construimos nosotros: analiza una página, abre la pestaña «Página en Google» y busca la tarjeta «Idiomas (hreflang)». Comprueba los códigos, la autorreferencia, x-default, si los destinos responden y si enlazan de vuelta. Cuando todo está bien muestra una sola línea; si no, enumera cada comprobación con su resultado, y los problemas pasan a la lista de tareas.

ErrorQué muestra SEOgrinder (ejemplo de redacción)
1. Enlaces de vuelta que faltan«2 destinos no enlazan de vuelta»
2. Sin autorreferencia«La página no se referencia a sí misma»
3 y 4. Códigos no válidos«1 código de idioma no válido» (el idioma y la región se comparan con las normas que cita Google)
5. Direcciones relativasSin línea propia: SEOgrinder resuelve una dirección relativa contra la página antes de comprobarla, así que busca este error en el código fuente

Dos límites. Descarga como máximo diez destinos por página; en nuestras páginas con 13 entradas comprueba diez y lo dice («10 de 13 entradas descargadas y comprobadas»). Y juzga la página que introduces; para un sitio entero, recorre las direcciones en un bucle, como arriba.

Preguntas frecuentes

¿Necesito hreflang si cada idioma tiene su propia dirección?

No es obligatorio. Google puede encontrar las versiones sin hreflang, pero dice que normalmente es mejor indicarlas de forma explícita.

¿Mejora hreflang mi posicionamiento?

La página de Google no lo afirma. Describe el propósito como llevar a los usuarios a la versión más adecuada según el idioma o la región. Nadie puede prometer una posición.

¿Cuál de los tres métodos debo usar?

Para Google son equivalentes, y usar varios a la vez no aporta ninguna ventaja. Google señala que las etiquetas HTML sirven para sitios sin sitemap o sin control de las cabeceras, y que la cabecera sirve para archivos que no son HTML, como los PDF. Nosotros usamos las etiquetas HTML.

Tu siguiente paso

Ejecuta el comando curl en una de tus páginas y comprueba que se nombra a sí misma y que un destino enlaza de vuelta. Después analiza la página con SEOgrinder, abre «Página en Google», corrige la primera línea de la tarjeta «Idiomas (hreflang)» que señale un problema y pulsa «Comprobar de nuevo». Para ver dónde encaja hreflang entre ocho grupos de comprobaciones, consulta nuestro checklist SEO.

Sigue leyendo

Más artículos del blog