También disponible en: English · Português · Français · العربية
Generador y comprobador de hreflang
Genera las etiquetas link de un conjunto de páginas traducidas y revisa el conjunto que ya tienes según las reglas que los buscadores aplican de verdad.
Qué es una etiqueta hreflang
Cuando una página existe en varios idiomas, cada versión necesita poder decirlo. Eso es una etiqueta hreflang: un elemento link que nombra un idioma y la URL de la versión escrita en él. Si el conjunto completo va en todas las versiones, un buscador puede enseñarle a un lector español la página en español en lugar de adivinarlo por el texto.
El valor es un código de idioma y, opcionalmente, una región detrás. Google lo dice sin rodeos: el primer código es el idioma en formato ISO 639-1, seguido de un segundo código opcional para la región en formato ISO 3166-1 Alpha 2. Así, es es español en cualquier parte, es-MX es español para lectores de México y pt-BR es portugués para lectores de Brasil. Existe además un valor reservado, x-default, para la versión que se muestra cuando no encaja ninguna otra.
La regla que se le escapa a casi todo el mundo es la frase siguiente de esa misma documentación: no se puede poner el código de país solo. La primera posición es siempre un idioma. Parece un formalismo y es el error más caro del SEO internacional, por un motivo que se puede medir.
Cómo se usa
- Pega lo que tengas, o escríbelo. Las etiquetas link valen tal cual, en cualquier orden de atributos. También vale una lista sencilla de una línea por versión con el código y la URL, en el orden que prefieras.
- Lee la columna del medio. Dice qué significa cada código, no si se ha podido interpretar. Ahí es donde un código puesto como país aparece siendo el idioma de otro.
- Copia el bloque generado en todas las páginas del conjunto. El mismo bloque, sin tocarlo, en todas. Enumera todas las URL incluida la suya, que es justo lo que piden la autorreferencia y los enlaces recíprocos.
El error que nunca llega a tus informes
Poner un código de país donde va un idioma es el error clásico de hreflang, y casi todos los artículos lo tratan como uno solo. Son dos, y solo uno de ellos te lo comunica alguien.
Coge los 249 códigos de país de la norma ISO 3166-1 y pregunta cuáles son además códigos de idioma ISO 639-1 válidos. Para 140 la respuesta es que no: hreflang con jp, cn o us no es ningún idioma, así que se descarta y Search Console te dirá que la etiqueta no vale. Esa es la mitad ruidosa, y se acaba arreglando.
Los otros 109 sí son códigos de idioma. Se interpretan bien. Nada los rechaza, nada los denuncia, y en 75 de esos casos el idioma que nombran no tiene nada que ver con el país que el autor tenía en la cabeza. Una página marcada br no es brasileña, es bretona, una lengua del oeste de Francia. Marcada ca no es canadiense, es catalana. Marcada se no es sueca sino sami septentrional; marcada sv sí es sueca, lo cual es una lástima si querías El Salvador. A Taiwán le toca tw, que es twi, hablado en Ghana. A Chipre le toca cy, que es galés.
Todos esos son anotaciones válidas para audiencias reales, así que las etiquetas funcionan perfectamente. Lo único que pasa es que describen un conjunto de páginas al que nadie pretendía llegar, y no hay ningún estado de error que te avise. La mitad de este fallo que puedes encontrar es la mitad inofensiva.
Para eso está la columna del medio de la tabla de arriba. Esta herramienta no te acusa de nada cuando ve un código suelto, porque no puede saber qué querías decir: ar es de verdad árabe, y este sitio publica en esa lengua. Se limita a decirte qué idioma has escrito, al lado de la URL en la que lo has escrito, y deja darse cuenta a la única parte que sabe la respuesta.
Límites honestos y cómo se ha comprobado
Esto funciona en tu navegador, así que no puede ir a buscar las demás páginas de tu conjunto para confirmar que llevan etiquetas equivalentes. Eso es una lectura entre dominios distintos y ninguna herramienta de cliente puede prometerlo con honestidad. Lo que sí hace es quitarte la necesidad: como el bloque generado enumera todas las URL incluida la de la propia página, pegarlo sin cambios en todas cumple las dos reglas con las que más se tropieza. Google es tajante sobre lo que pasa si no se cumplen. Cada versión debe enumerarse a sí misma además de a todas las demás, y si dos páginas no se apuntan mutuamente las etiquetas se ignoran.
Hay dos cosas que a propósito no se tratan como errores. Una son las mayúsculas: BCP 47 hace que la caja de las subetiquetas no signifique nada, así que en-us funciona exactamente igual que en-US, y las herramientas que lo marcan se están inventando una regla. Aquí sale como una nota sobre la forma habitual de escribirlo, nada más. La otra es una subetiqueta de escritura de cuatro letras como Hant, que se acepta por su forma y no se contrasta con ningún registro, porque el formato documentado por Google es un idioma y una región opcional.
Las tablas de idiomas y países no están escritas a mano aquí. Se generan a partir de los mismos dos conjuntos de datos que hay detrás de las páginas de códigos ISO 639 e ISO 3166 de este sitio, así que lo que acepta este comprobador y lo que imprimen esas páginas no pueden separarse. El 75 es una medición sobre ellos: para cada coincidencia se le pregunta a CLDR tanto si en ese país se habla ese idioma como si ese idioma pertenece a ese país, y solo se cuenta cuando ambas respuestas son que no. Con una sola prueba salen tres de más, porque el fiyiano se habla de verdad en Fiyi, el marshalés en las Islas Marshall y el noruego en Noruega. El motor lleva 761 comprobaciones, entre ellas un barrido que confirma que ninguna de las 109 coincidencias levanta ni un error ni un aviso.
¿Por qué es gratis?
Aquí no hace falta ningún servidor. Es una consulta a dos tablas y un puñado de reglas, todo ello corriendo en la pestaña que ya tienes abierta, así que no hay coste que repercutir ni cuenta que crear.
Lo que pegues no se sube, ni se guarda, ni se registra. En una herramienta así entran URL sin publicar continuamente, y eso conviene decirlo en lugar de darlo por supuesto.