Hreflang: guía práctica

SEO internacional 11 de septiembre de 2026·11 min de lectura

Hreflang tiene una propiedad incómoda: cuando está mal, no avisa. No hay penalización, no hay error rojo, no hay caída visible atribuible. Las anotaciones simplemente se descartan y tus mercados empiezan a competir entre ellos sin que nadie sepa por qué.

Qué es y qué no es

Hreflang le dice a Google qué otras versiones de una página existen para otros idiomas o regiones. Eso es todo.

Conviene ser explícito con lo que no es, porque se le atribuyen poderes que no tiene:

  • No es una directiva de indexación. No fuerza a Google a indexar nada.
  • No mejora el posicionamiento por sí misma. No es un factor de ranking.
  • No sustituye al canonical. Son cosas distintas y, cuando se contradicen, el resultado es peor que no tener ninguna de las dos.
  • No resuelve contenido duplicado entre idiomas distintos, porque el contenido en dos idiomas no es duplicado para empezar.

Lo que sí hace, y es valioso: evita que tu versión mexicana y tu versión española se canibalicen en la SERP, y aumenta la probabilidad de que el usuario aterrice en la versión que le corresponde.

Los once errores, por frecuencia

Este es el orden en que aparecen en las auditorías, no el orden en que los manuales los explican.

  • 1. Faltan las etiquetas de retornoEl fallo dominante, con diferencia. Hreflang es una declaración mutua: si A declara B y B no declara A, el par no existe. Google descarta la relación entera sin decir nada.
  • 2. Apuntar a URL que redirigenClásico después de una migración que nadie volvió a auditar. La anotación debe apuntar a la URL final, no a una que redirige.
  • 3. Apuntar a URL que devuelven 404Igual de común y también invisible sin un rastreo.
  • 4. Conflicto con el canonicalUna página que se canonicaliza a otra URL mientras declara hreflang le está diciendo a Google dos cosas incompatibles. El canonical gana y el hreflang se pierde.
  • 5. Códigos de región inventadosNo existe en-UK: el código de país del Reino Unido es GB. Los códigos de idioma son ISO 639-1 y los de región ISO 3166-1 Alpha-2, sin excepciones creativas.
  • 6. Confundir idioma con regiónes es el idioma español. es-MX es español en México. Usar mx como si fuera un idioma no significa nada.
  • 7. Falta la autorreferenciaCada página debe incluirse a sí misma en su propio conjunto. Es fácil de olvidar y rompe la validación.
  • 8. Sin x-defaultGoogle se queda sin instrucción para los usuarios que no encajan en ningún idioma declarado.
  • 9. URL relativasLas anotaciones tienen que ser absolutas y con protocolo. Las relativas se ignoran.
  • 10. Mezclar métodos de implementaciónHead, cabeceras HTTP y sitemap a la vez. Dos equipos, dos implementaciones, declaraciones contradictorias.
  • 11. Segmentar por región sin necesidades-MX, es-AR, es-CO y es-ES con contenido idéntico multiplican el mantenimiento sin aportar nada. Separa por región solo cuando el contenido difiere de verdad.
Sobre el punto 11, que cuesta dinero en silencio

Es el error más caro de los que no rompen nada. Una sola sección en es posiciona en España, México, Colombia, Argentina y el mercado hispano de Estados Unidos a la vez. Montar una versión por país multiplica el coste de producción, divide la autoridad entre URL que compiten y obliga a mantener cinco veces el mismo contenido.

Separa por región cuando el contenido tenga que ser distinto —precios, disponibilidad, regulación, marca— y no antes.

Dos casos. En el válido, la página en español declara la inglesa y la inglesa declara la española, con flechas en ambos sentidos: Google empareja las dos versiones. En el roto, solo la página en español declara a la inglesa, la página inglesa no declara nada, y la flecha aparece tachada: Google descarta el par completo.
El error dominante, y el que no deja rastro en ningún informe.

Cómo auditarlo de verdad

Revisar hreflang página a página no escala y no encuentra el error principal, porque las etiquetas de retorno solo se ven comparando dos páginas a la vez. El método que funciona es construir la matriz:

  1. Rastrea cada mercado por separado

    Con Screaming Frog o equivalente, extrayendo las anotaciones hreflang de cada URL.

  2. Construye la matriz de declaraciones

    Una fila por URL, una columna por idioma declarado. Lo que buscas son las celdas asimétricas: A declara B, B no declara A.

  3. Comprueba el estado de cada destino

    Cada URL declarada debe devolver 200. Las que redirigen o dan 404 salen aquí.

  4. Cruza con los canonicals

    Ninguna página que declare hreflang debería canonicalizarse a otra URL.

  5. Valida los códigos

    Contra las listas ISO, no contra la intuición. en-UK parece razonable y no existe.

En un sitio de tres mil URL esto no se hace a mano, que es exactamente por qué lo tengo automatizado: el rastreo y la comparación corren solos y lo que llega a una persona es la lista de asimetrías.

Una nota sobre qué esperar

Arreglar hreflang rara vez produce un salto de tráfico espectacular. Lo que produce es que dejes de competir contigo mismo y que el usuario correcto aterrice en la página correcta, lo que se nota más en conversión que en sesiones.

Si alguien te vende una corrección de hreflang como si fuera a duplicar el tráfico orgánico, desconfía. Es trabajo de higiene: barato, necesario y poco espectacular. Los saltos de tráfico vienen de otro sitio, normalmente de tener contenido suficiente en el mercado.

Preguntas

Una anotación que le dice a Google qué versiones de una página existen para otros idiomas o regiones. No es una directiva de indexación ni mejora el posicionamiento por sí misma: sirve para que Google muestre la versión correcta al usuario correcto y para que tus versiones no compitan entre sí. Es una declaración mutua, y ahí está la mayor parte de los problemas.
Que falten las etiquetas de retorno. Si la página en español declara la inglesa pero la inglesa no declara la española, Google descarta el emparejamiento completo. Sin aviso y sin error evidente en Search Console: las anotaciones simplemente dejan de tener efecto.
No es obligatorio, pero conviene. Indica qué versión mostrar cuando ningún idioma declarado encaja con el usuario. Sin él, Google decide por su cuenta y la decisión no siempre es la que te conviene. En cualquier implementación seria debería estar.
Cualquiera funciona. Lo importante es elegir uno y no mezclarlos: dos métodos conviviendo es como se introducen declaraciones contradictorias, normalmente porque dos equipos implementaron cada uno el suyo sin hablar. Para HTML, el head es lo más simple de auditar.