Índice de contenido
¿Tienes o quieres tener un sitio web en varios idiomas? Entonces quédate un rato por aquí, porque este post te interesa.
Google lleva ya muchos años en los que no termina de dar con la tecla a la hora de entender y gestionar correctamente un mismo contenido cuando éste se encuentra en diferentes versiones idiomáticas.
Y a día de hoy, las etiquetas hreflang son lo mejor que tienen. Un usuario lo sugirió como idea hace unos 15 años y bueno, no había nada mejor, así que el 28 de septiembre de 2010 anunciaron que empezaban a usarlas.
Pero vamos, que no les entusiasman. Son algo liosas de implementar y gestionar. Tanto por el lado del sitio web como parece ser de Google. Aquí puedes ver a Gary Illyes reconociéndolo (una vez más) hace tan solo unos meses en LinkedIn:
‘El hreflang es molesto. No lo niego. Sigo estando muy abierto a encontrar algo menos molesto, pero tiene que funcionar tanto para sitios pequeños como para gigantes, ofreciendo al menos la misma cantidad de información. Avísame si tienes ideas.’
En todo caso es lo mejor que tenemos, así que vamos a intentar sacarles todo el jugo posible para mejorar el SEO de nuestras web multilenguaje ¿no?
Pues vamos allá, empecemos por el principio.
¿Qué son las etiquetas hreflang?
Las etiquetas hreflang son un método para indicar a Google que el contenido de una página en un sitio web se encuentra disponible también en otros idiomas, ya sea en ese mismo sitio web o en otro.
Entonces ¿Para qué sirven dichas etiquetas a nivel SEO? Bueno, pues para que, al margen de que el buscador por sí solo sea capaz de detectar el idioma de un contenido, sepa que ciertas páginas son ‘hermanas’.
Es decir, pasaría a ver por ejemplo 4 páginas como en la siguiente imagen,
A verlas como en ésta otra, que parece que no pero la cosa cambia bastante:
Este detalle puede beneficiarte a nivel SEO de diferentes maneras. Para empezar, haciéndole más fácil a Google saber qué versión de tu contenido mostrar a cada usuario según su localización e idioma, pero también en otros aspectos como evitar posibles problemas de contenido duplicado.
Es muy probable que viendo la imagen de arriba hayas pensado ‘Pero un momento… ¿el inglés de EEUU y el de UK no son inglés al fin y al cabo?’.
Bueno… depende. Hablemos ahora no sólo de idiomas, si no también de REGIONES.
Códigos de idioma y región
Pues sí, podemos encontrarnos con el caso en que no nos baste únicamente con indicar que tenemos un contenido en un idioma. Y es que no es lo mismo el español de España que el de Argentina. Mira por ejemplo el significado del verbo ‘coger’ en cada uno de esos países…
Eso mismo pasa con el español de México, pero es que también pasa con el inglés de EEUU y UK y pueden darse más casos similares.
Además, no todo es el texto en sí mismo. Pueden variar precios o condiciones en un e-commerce que venda en dos países diferentes por mucho que compartan idioma, sin ir más lejos. Será especialmente importante que Google tenga claro qué versión debe mostrar al usuario también en esos casos.
Es en todas esas situaciones donde necesitaremos indicar no sólo el idioma de una página, si no también la región del mismo.
En cualquier caso, puedes encontrar el listado completo de idiomas admitidos por el buscador en las listas por las que se rigen: el formato standard ISO 639-1 para los idiomas y el ISO 3166-1 Alpha 2 para las regiones.
Así pues, un contenido en español para España sería ‘es-ES’, para Argentina ‘es-AR’ y para México ‘es-MX’. siempre y cuando tuviéramos 3 páginas, una para cada país. En caso de tener sólo una, bastaría con poner ‘ES’.
Hasta aquí la teoría. Bueno… al menos la del ‘concepto’ de qué son las etiquetas hreflang. Vamos ahora a la otra, la de cómo puedes utilizarlas correctamente en tu sitio web.
Métodos de implementación
A la hora de implementar todo esto en nuestra web, Google nos da tres alternativas: etiquetas HTML, sitemaps y encabezados HTTP.
Etiquetas en el encabezado HTML
Suele ser la más utilizada, por lo que sea. Seguramente porque muchas veces hay plugins que lo hacen de esta forma automáticamente por nosotros (por suerte) o por que parece un poco la opción ‘por defecto’.
Como seguramente sabes, cualquier página web hecha con HTML se compone de dos partes muy diferenciadas. El <head>, que es la primera parte del código donde se ponen etiquetas y demás que son importantes pero no verá el usuario, y el <body> que es donde se coloca todo el código y texto que SÍ será visible para cualquiera que cargue la página.
Bien, pues las etiquetas hreflang van en el <head>. Esto es básico y si no no servirán de nada.
La otra parte fundamental es que TODAS las versiones idiomáticas de un contenido deben enlazarse entre sí y a sí mismas. Si no, tampoco servirán de nada. Y te pongo un ejemplo.
Si tenemos un contenido en inglés y en francés, esto estaría bien,
En cambio esto otro no nos serviría para nada,
La razón es sencilla. Imagina que yo cojo un artículo del New York Times, lo traduzco al español y con un hreflang apuntándoles digo que su publicación es una versión en inglés de mi contenido.
Sería muy fácil que el buscador dijera ‘¡Hombre, el New York Times en español tenemos aquí! ¡Arriba con ese posicionamiento!’.
No cuela.
Así que, o el diario me apunta a mí también para ‘validar’ esa teoría, o no sirve de nada mi hreflang. Se omite. De ahí la importancia de la reciprocidad.
En cuanto a la estructura del código HTML, tienes que incluir siempre los siguientes atributos: el ‘lang_code’ que viene a ser el código del país o país+región que hemos comentado antes, y el enlace de la página que le corresponde. Así:
<link rel="alternate" hreflang="es-ES" href="https://ejemplo.com/es/" />
Con lo que el código de una página en inglés que tiene versiones para España y para México sería:
<link rel="alternate" hreflang="en" href="https://ejemplo.com/" />
<link rel="alternate" hreflang="es-ES" href="https://ejemplo.com/es/" />
<link rel="alternate" hreflang="es-MX" href="https://ejemplo.com/mx/" />
<link rel="alternate" hreflang="x-default" href="https://ejemplo.com/" />
¿Has visto ese enlace final que no indica ningún país si no ‘X-DEFAULT’? No es obligatorio pero sí muy recomendable. Indica qué versión tiene que mostrar Google en caso de que no tengas el idioma que el usuario necesitaría. Lo introdujeron un par de años más tarde.
En el caso de arriba, por ejemplo ¿Dónde debería ir un francés si no tienes la web en francés? Según ese X-DEFAULT, a la versión inglesa.
Como digo, NO es obligatorio pero SÍ es muy recomendable. Tenlo en cuenta.
Mapas del sitio XML
La segunda opción que tenemos para indicar las hreflang, en este caso desde fuera del código de las propias páginas, son los sitemaps (o mapas del sitio). Probablemente, la alternativa más sencilla al gestionarlo todo desde un único archivo.
De los sitemaps ya hablé brevemente en la guía sobre rastreo e indexación, pero son básicamente unos archivos en los que podemos listar las páginas que queremos que Google tenga en cuenta, para que las encuentre lo más fácilmente posible.
Bien, pues ahora ya sabes que además de listar dichas páginas, también puedes indicarle aquí al buscador las versiones idiomáticas que pueda tener cada una.
El procedimiento a nivel técnico y cosas a tener en cuenta es prácticamente idéntico al que hemos explicado en la alternativa HTML, pero aquí hay que poner previamente el elemento ‘<loc>’ para indicar cada URL y las entradas secundarias ‘xhtml:link’ para listar las alternativas idiomáticas. Puedes ver un ejemplo a continuación:
<?xml version=»1.0″ encoding=»UTF-8″?>
<urlset xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» xmlns=»http://www.sitemaps.org/schemas/sitemap/0.9″ xmlns:xhtml=»http://www.w3.org/1999/xhtml» xsi:schemaLocation=»http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd»>
<url>
<loc>https://www.example.com</loc>
<lastmod>${formattedDate}</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
<xhtml:link rel=»alternate» hreflang=»en-us» href=»https://www.example.com»/>
<xhtml:link rel=»alternate» hreflang=»en-ca» href=»https://ca.example.com»/>
<xhtml:link rel=»alternate» hreflang=»en-gb» href=»https://uk.example.com»/>
</url>
</urlset>
Como digo, poco más a comentar ya que el resto se mantiene inalterable: indicar país y posibles regiones, autoenlazarse, mantener la reciprocidad de enlazado entre páginas y añadir si es posible el x-default.
Encabezados HTTP (para archivos no HTML)
Esta última alternativa es la más rara, y es que los encabezados HTTP suelen ser unos grandes desconocidos. Son directrices que podemos mandar a Google (u otros agentes) pero desde el servidor. Antes de que vean siquiera el código o contenido de la página en cuestión.
Son tan desconocidos por norma general entre otras cosas porque son ‘invisibles’ a no ser que tires de herramientas como esta extensión Chrome.
¿Y por qué ibas a preferir esta opción por encima de las otras? Bueno, a lo mejor no tienes otra. Pongamos el caso en que tienes subido un PDF en diferentes idiomas. Sí, puedes indicar las hreflang desde el sitemap como acabamos de ver, pero no desde el código HTML.
Ahí, esta alternativa desde los encabezados puede ganar enteros. Debes para ello usar el encabezado ‘Link:’ y en el resto aplicaría lo mismo que en los otros casos. Luciría algo así:
Link: <https://ejemplo.com/file.pdf>; rel=»alternate»; hreflang=»es»,
<https://ca.ejemplo.com/file.pdf>; rel=»alternate»; hreflang=»ca»,
<https://it.ejemplo.com/file.pdf>; rel=»alternate»; hreflang=»it»
Es muy probable que sea la última de tus opciones, pero está bien saber que está ahí como último recurso.
Errores más comunes con hreflang y cómo evitarlos
Ok, ya sabemos qué son las etiquetas hreflang, por qué puede ser interesante aplicarlas en nuestro sitio web a nivel SEO y las diferentes alternativas que tenemos para ello.
Vamos a listar ahora a modo de resumen los principales fallos a evitar cuando lo hagas.
No incluir enlaces recíprocos
Ya lo hemos comentado pero es que es básico, si no se enlazan entre sí las diferentes versiones se omitirán. Y aquí me explico bien de todas maneras para que quede claro.
En el caso que tengamos dos idiomas es fácil. Se han de enlazar entre ellos, ya que si sólo lo hace uno es como si no hubieras puesto nada. Pero ¿Qué pasa si tengo 4 idiomas y sólo falla la reciprocidad en uno de ellos?
Pues que se ignora ese vínculo en concreto, el resto se tienen en cuenta. Sería algo como la siguiente imagen:
Así que ojo con este tema. Venga va, más cosas.
Uso incorrecto de códigos de idioma o región
Esto si has estado atento cuando comentaba que los códigos han de seguir unos estándares internacionales concretos es un poco de sentido común, pero no está de más remarcarlo tampoco.
¿Qué quiere decir esto? Que según el estándar que usa Google, el código del español es ‘ES’. Y ya.
Por tanto, si te equivocas al teclear o no te documentas correctamente y tú pones que el idiomas es ‘ESP’… pues no te va a servir de nada ese hreflang.
Así que por si acaso, yo te lo dejo aquí todo enlazadito otra vez aunque ya lo haya puesto arriba:
Enlazar a las páginas incorrectas
Esto sí que no lo hemos dicho hasta ahora, aunque también es un poco de cajón. NO enlaces a las páginas que no tocan.
Me he encontrado casos en lo que se indica que:
- La versión en X idioma de una URL es una página que ya no existe (o nunca existió).
- O que llevan a otras que redirigen a otras.
- O que tienen un canonical a otra.
- O que son páginas no rastreables y/o no indexables.
- O que en realidad son otro contenido totalmente diferente.
- …
Enlaza siempre a la URL correcta. Es decir, mismo contenido pero en otro idioma, URL canónica, rastreable, indexable y con Status Code 200 (que funcione y sea navegable sin redirigir a ningún sitio, vaya).
Falta de implementación en ciertas tipologías de página
Por último, asegúrate que las etiquetas están configuradas en todas las tipologías de tu web.
Entendemos por tipología los diferentes tipos de página que puedas tener, por ejemplo:
- Home
- Categoría
- Ficha de producto
- Página de servicio
- Post del blog
- …
Puede pasar (y pasa) que se implementen las hreflang en todas menos una de ellas, o sólo en una… o que desaparezcan de varias por arte de magia al lanzar una actualización en la web por cualquier otro motivo que nada tiene que ver. Estate alerta.
Para controlar esto, llegué a hacer hace unos años cuando estaba de interno en el marketplace de Drinks&Co un Google Sheets con el que consultaba periódicamente que estaban todas las etiquetas, apuntando a las URL’s correctas y que lo hacían además en todos los dominios de los diferentes países que tenía la empresa, mira:
Tú puedes usar una hoja de cálculo similar u otras herramientas, como las que veremos ahora.
Cómo crear etiquetas hreflang
Si pones ‘hreflang generator’ en Google te van a salir un montón de webs con herramientas gratuitas, la verdad, pero te quiero dejar un par por aquí ya que las he utilizado en alguna ocasión y puedo confirmarte que funcionan bien y salen unas hreflang bien configuradas.
Hreflang-Generator (Sistrix)
Eliges el dominio donde está la versión que quieras, el idioma, la posible región y como mucho si va a ser el x-default. Y añades tantas versiones como necesites.
Copias y pegas en el <head> de la página en cuestión. Fácil y para toda la familia.
Este código a continuación serviría para mi blog si lo tuviera también traducido al búlgaro (por qué no, exótico) y tuviera otro dominio .ar especialmente localizado para Argentina:
Puedes encontrar la herramienta aquí: https://app.sistrix.com/en/hreflang-generator
Hreflang Tags Generator Tool (Aleyda Solís)
Funciona igual que la anterior, pero con dos características adicionales.
- Puedes subir hasta 50 URL’s de golpe a través de un archivo .csv para ahorrarte algo de tiempo.
- Te genera las etiquetas en formato HTML o para sitemap. Lo que más te guste.
Y desde luego va como un tiro también. De hecho, la herramienta aparece listada como recurso en la documentación oficial del buscador. Ahí es nada.
Puedes encontrarla aquí: https://www.aleydasolis.com/english/international-seo-tools/hreflang-tags-generator/
Validadores de etiquetas hreflang
Y una vez puestas ¿Cómo nos podemos asegurar que una URL tiene correctamente implementadas las etiquetas multiidioma hfrelang? O mejor aún ¿Cómo sabemos si una web que estamos auditando las tiene ya? Pues por ejemplo con…
Screaming Frog
Cómo no, la herramienta suprema de todo SEO, Screaming Frog, es una buena alternativa. Pero cuidado, tienes que configurarla bien previamente. Y te digo cómo con tres sencillas cosas a marcar antes de empezar el rastreo.
Lo primero, que rastree las etiquetas hreflang, porque por defecto no lo hace. En la pestaña ‘Rastreo’, marca la casilla desmarcada de aquí:
Después, en la pestaña ‘Extracción’, marca la casilla de ‘Encabezados HTTP’. Aunque sea, por si acaso. Ya hemos visto que es una de las tres maneras posibles de implementar estas etiquetas, así que nos queremos asegurar de todo.
Por último, indica que el programa renderice todo el JavaScript que puedan tener las páginas para asegurarte de ver todo el contenido, y no sólo el del HTML inicial. No es la solución ideal implementarlo así, sin entrar ahora en más detalles en este tema, pero se puede dar el caso.
Así que, aunque sea para asegurarte que están y decirle a quien toque que lo cambie, investiga.
Una vez hecho eso, dale a rastrear. Podrás ver las etiquetas encontradas y hacia donde apuntan en su pestaña correspondiente:
Validador de etiquetas hreflang de Dentsu (antes Merkle)
La otra opción que te recomiendo por ahora es gratuita y online. La puedes encontrar en este enlace:
➡️ https://technicalseo.com/tools/hreflang/
Tan fácil como introducir la URL que quieras, escoger el rastreador que te gustaría probar (te recomiendo por defecto Googlebot Mobile) y darle a ‘TEST URL’.
Te dirá al momento si la URL probada tiene el hreflang de autorreferencia, el resto de idiomas/regiones listados y si estos son recíprocos.
Ah y si hay algún error te dirá cuál. Maravillosa herramienta aunque, eso sí, hay que probar de una en una las páginas que necesites validar.
Conclusiones finales
¿Son las etiquetas hreflang la solución definitiva para el SEO internacional? No, no te voy a mentir. Ni a Google le gustan demasiado como hemos visto.
Pero son lo mejor que tenemos. Y por tanto hay que tenerlas, y hay que tenerlas bien.
Son una herramienta destacada para cualquier sitio web que tenga presencia en múltiples idiomas o regiones. No la única, ni la mejor, pero sí una destacada.
No sólo ayudan a ofrecer una experiencia de usuario más personalizada al mostrar el contenido adecuado para cada usuario, sino que también nos pueden ayudar a evitar problemas de contenido duplicado y a maximizar la relevancia de las páginas para diferentes audiencias.
Así que espero que este artículo te haya ayudado a entenderlas mejor y saber cuándo y cómo aplicarlas. Y si tienes cualquier comentario, ya sabes que son más que bienvenidos siempre. Ya sea en este mismo artículo o a través de X o LinkedIn.
Si el post te ha parecido útil, o crees que puede serle útil a otras personas, te agradeceré cualquier compartido que le des en redes sociales o enlaces que le puedas poner. Y si tienes una web (o la idea de tener una) y crees que te puedo echar una mano, puedes contactarme por aquí y lo hablamos.
Un abrazo y nos vemos en el próximo artículo 🙂
Consultor SEO desde 2014, a lo largo de mi carrera he liderado el SEO de grandes webs tanto a nivel agencia como inhouse y actualmente freelance.
Divulgador y ponente, también colaboro desde hace años como profesor en varios máster SEO, así como en masterclasses y cursos para diferentes plataformas.