Definición
Hreflang es el atributo con el que le dices a Google que una página tiene versiones equivalentes en otros idiomas o para otros países, y cuál corresponde a cada uno.
<link rel="alternate" hreflang="es-ES" href="https://ejemplo.com/es/producto/">
<link rel="alternate" hreflang="es-MX" href="https://ejemplo.com/mx/producto/">
<link rel="alternate" hreflang="en" href="https://ejemplo.com/en/product/">
<link rel="alternate" hreflang="x-default" href="https://ejemplo.com/">
Resuelve dos problemas a la vez. Muestra la versión correcta: quien busca desde México ve la página mexicana. Y evita que las versiones se traten como contenido duplicado: una web en español para España y para México tiene textos casi idénticos, y hreflang le dice a Google que son variantes deliberadas, no copias.
Es de las cosas más fáciles de implementar mal de todo el SEO técnico.
Las tres reglas que no se pueden saltar
1. Reciprocidad. Si A dice que B es su versión inglesa, B tiene que decir que A es su versión española. Todas las versiones deben referenciarse entre sí, incluida a sí mismas. Si falta una referencia de vuelta, Google ignora el grupo entero. No parcialmente: entero.
2. Códigos correctos. El idioma en formato ISO 639-1 y el país opcional en ISO 3166-1 alpha-2. es-ES, en-GB, pt-BR. El orden es idioma-país, nunca al revés. Y el país solo no vale: hreflang="ES" no existe.
3. URLs absolutas y canónicas. Con protocolo y dominio completos, y apuntando a la URL canónica de cada versión. Una hreflang que apunta a una URL que a su vez tiene canónica a otra parte manda señales contradictorias.
El x-default
<link rel="alternate" hreflang="x-default" href="https://ejemplo.com/">
Indica qué versión mostrar cuando ninguna encaja. Es para el usuario de Japón cuando solo tienes español, inglés y francés. Suele apuntar a la versión internacional o a un selector de idioma.
No es obligatorio y conviene ponerlo: sin él, Google elige por su cuenta.
Dónde se declara
Tres opciones, y hay que elegir una:
- En el
<head>de cada página. Lo más común y lo más fácil de depurar. - En las cabeceras HTTP. Necesario para ficheros que no son HTML, como un PDF.
- En el sitemap. La mejor opción cuando hay muchas páginas y muchos idiomas: se declara todo en un sitio y no hay que meter veinte etiquetas en cada página.
Mezclar métodos es una fuente de contradicciones. Elige una y sé consistente.
Ejemplo práctico
En esta web no hay hreflang, y explicar por qué es más útil que un ejemplo inventado.
El sitio está entero en español de España, dirigido a un público español. Una sola versión, un solo idioma. Poner hreflang aquí no aportaría nada y solo añadiría una fuente de errores.
Lo digo porque es un patrón que veo a menudo: webs de un solo idioma con etiquetas hreflang mal puestas "por si acaso", que no ayudan y a veces confunden.
Dónde sí haría falta, y es el caso realista en el que pensaría: si el diccionario se tradujera al inglés. Ahí tendría 134 términos × 2 idiomas = 268 páginas emparejadas, y ese emparejamiento no se puede mantener a mano. La única forma sensata sería generarlo automáticamente al compilar, a partir de la relación entre el término en español y su traducción — igual que hoy se genera solo el sitemap.
Esa es la regla que aplicaría: si el hreflang no se genera solo, se romperá. Con dos idiomas y veinte páginas aguantas a mano; con dos idiomas y trescientas, no. La reciprocidad es exactamente el tipo de cosa que una persona olvida y un script no.
Errores comunes
- Falta de reciprocidad. El más frecuente con diferencia, y anula el grupo entero.
- Códigos inventados.
es-LApara Latinoamérica no existe;en-UKtampoco (esen-GB). - Poner el país sin idioma.
- URLs relativas. Tienen que ser absolutas.
- Apuntar a URLs que redirigen o que no son canónicas.
- Contradecir la canónica. Cada versión debe ser canónica de sí misma.
- Confundir idioma con país. Alguien en Estados Unidos puede buscar en español. El idioma es lo principal; el país, un matiz.
- Usarlo para páginas que no son equivalentes. Tienen que ser el mismo contenido en otro idioma, no páginas distintas.
Cuándo usarlo
Solo cuando tengas versiones equivalentes de las mismas páginas en varios idiomas, o variantes regionales del mismo idioma (España y México, con precios y condiciones distintos).
Si tienes una web en un idioma, no lo necesitas. Si tienes contenido distinto para cada país —no traducciones, sino contenidos diferentes—, tampoco: eso son páginas independientes.
Search Console tiene un informe de segmentación internacional que te avisa de los errores de reciprocidad. Es el primer sitio donde mirar si lo has implementado.