Generador de hreflang: monta la malla de tus versiones de idioma
Lista las versiones de la misma página, elige el formato y llévate el bloque listo: tags en el head, cabecera HTTP o sitemap XML, con x-default y una nota que señala dónde la malla tiene fugas. Gratis, sin registro, y nada sale de tu navegador.
- - Versiones
- - Idiomas
- - Tags generadas
- - Tamaño del bloque
Bloque listo
Qué entró en la nota
- Códigos de idioma válidos-
- URLs absolutas-
- Ningún código repetido-
- Ninguna URL repetida-
- Todo en https-
- x-default declarado-
- Al menos dos versiones-
- Barra final consistente-
Avisos
Todo corre en tu navegador: la lista no sale de aquí, no se visita ninguna URL y nada se guarda. La nota mide lo que está bajo tu control, que es la forma de los códigos y de las URLs. No comprueba si el otro extremo apunta de vuelta ni si las páginas existen, porque eso exigiría una llamada de red.
Para quién es esta página: para quien tiene el mismo contenido en más de un idioma y necesita declararlo sin romper la reciprocidad. Si lo que buscas son las demás etiquetas del head de una sola página, como title, description, canónica y Open Graph, el sitio es el generador de meta tags. Si el tema son los datos estructurados, que son otro formato y otra función, ve al generador de schema FAQ. Y si la duda es sobre el rastreo del sitio entero, el camino es el generador de robots.txt. Aquí el alcance es uno solo: el enlace entre las versiones de idioma de la misma página.
El hreflang es la única marca del head cuya unidad no es la página
Casi toda etiqueta de SEO describe la página en la que está. El hreflang describe un grupo. Dice que esa dirección en español, esa en inglés y esa en portugués son la misma página en idiomas distintos, y le pide al buscador que entregue la versión correcta a cada persona. El efecto no es ganar posición: es cambiar qué dirección aparece en la posición que ya tienes, y evitar que tus propias versiones compitan entre sí como si fueran contenido repetido.
De ahí viene la regla que hunde a la mayoría de las implementaciones: el bloque tiene que ser recíproco y contenerse a sí mismo. Cada versión lleva la lista entera, incluida la suya. Cuando la versión en inglés apunta a la española pero la española no apunta de vuelta, el par no se confirma y se descarta en silencio. Por eso este generador no produce el bloque de una sola página: recibe el grupo y devuelve el bloque que vale para todas, idéntico en cada una. Pegar lo mismo en todas partes es el comportamiento correcto, no un atajo.
Cómo usarlo
- Escribe una línea por versión, con el código y la URL separados por un espacio. Incluye la versión que estás editando: también va en la lista.
- Revisa los códigos. El primer valor es el idioma en dos letras minúsculas, y la región es opcional, en dos letras mayúsculas, después del guion. El generador corrige el guion bajo y las mayúsculas, y avisa cuando lo hace.
- Elige el formato de salida: tags en el head para la mayoría de los casos, cabecera HTTP para archivos que no son HTML, sitemap XML para sitios grandes.
- Elige qué versión responde por el x-default, que es quien atiende al público que no coincide con ningún idioma de la lista.
- Revisa la nota y los avisos, pulsa copiar y aplica el bloque en todas las URLs de la lista, sin editar nada entre una y otra.
Cómo funciona: qué mide la nota
La nota va de 0 a 100 y es la suma de ocho comprobaciones, cada una correspondiente a una forma conocida de romper la malla. Todas son de todo o nada, a propósito: el hreflang no tiene término medio útil, porque un código inválido no se lee a medias, simplemente no se lee.
Dos comprobaciones suelen sorprender. La de la barra final existe porque muchos servidores tratan la dirección con y sin barra como páginas distintas: cuando la mitad de la lista la lleva y la otra mitad no, la mitad de los pares apunta a una redirección, y un hreflang que cae en una redirección no cuenta. La de URL repetida existe porque la misma página no puede responder por dos idiomas: los dos pares se anulan y el buscador descarta ambos.
Ejemplo trabajado (reproduce el resultado por defecto)
El ejemplo ya cargado es una página de precios en tres idiomas, con el x-default apuntando a la versión en inglés. Leyendo el panel, número por número:
- 3 versiones y 3 idiomas: español, inglés y portugués, cada uno con su región.
- 4 tags generadas. Son las tres versiones más la línea de x-default, que se suma a las otras en vez de sustituir a una.
- Nota 100, franja A, con las ocho comprobaciones en verde y solo los dos recordatorios de siempre en la lista de avisos: el de la autorreferencia y el de la reciprocidad, que la herramienta no puede comprobar desde este lado.
Ahora cambia, en la segunda línea, el código en-US por en-UK, que es el error más frecuente del atributo. Sin tocar nada más, el panel responde: la comprobación de códigos válidos cae a 0 de 22, la nota baja a 78, la franja pasa de A a B y aparece el aviso de la trampa de región explicando que Reino Unido es GB. Las otras siete comprobaciones siguen en verde y el número de tags sigue siendo 4: la malla no se derrumba, muestra exactamente cuánto costó ese código.
Cambia ahora el formato a sitemap XML y mira la salida: son tres bloques de URL, uno por versión, y cada uno lista las mismas cuatro tags. Es la malla completa, con la reciprocidad escrita por construcción, en un solo archivo. Es exactamente así como se monta el sitemap de este blog para sus versiones en portugués, inglés y español.
Cómo interpretar cada número
La nota responde si el bloque está listo para pegar, no si el hreflang va a funcionar. Mide la forma, que es la parte bajo tu control; lo que decide el resultado es la reciprocidad completa, y de eso solo el buscador tiene la vista entera.
El recuento de versiones frente al de idiomas revela un caso común: cinco versiones y dos idiomas significa el mismo idioma en varias regiones, como es-ES y es-MX. Es legítimo, y conviene revisar si el contenido cambia de verdad entre ellas. Si es el mismo texto para los dos países, muchas veces una sola versión, sin región, funciona mejor.
El recuento de tags es el número de versiones más uno cuando existe x-default. Si sale igual al número de versiones, el x-default no entró, y la comprobación correspondiente lo dice.
Los avisos no descuentan nota por sí solos: explican el descuento que ya hicieron las comprobaciones, y dos de ellos aparecen siempre, incluso con nota perfecta, porque son las dos cosas que ninguna herramienta que corre en el navegador puede verificar por ti.
Límites conocidos
La herramienta comprueba la forma, no la existencia. No visita las URLs, no confirma que la página del otro lado apunte de vuelta y no lee la canónica de cada versión, porque todo eso exigiría una llamada de red y rompería la promesa de que tu lista no sale del navegador. Después de publicar, compruébalo con la inspección de URL en Search Console o con un rastreador del sitio: ahí es donde aparece la falta de reciprocidad.
También conviene saber lo que el hreflang no hace. No traduce nada, no crea ninguna versión y no mejora la posición. Una página traducida a máquina y sin revisión sigue siendo contenido flojo con la marca correcta. Y si tus versiones viven en dominios distintos, el atributo funciona igual, siempre que todos sean tuyos y se mantenga la reciprocidad entre ellos.
Por último, el soporte varía entre buscadores. Google usa el atributo como señal, no como orden: puede ignorar tu indicación cuando otras señales de la página la contradicen, y la canónica es la más fuerte de ellas. Otros buscadores ponderan idioma y región a su manera. Una marca bien hecha aumenta la probabilidad de que aparezca la versión correcta, no garantiza que aparezca siempre.
Del bloque pegado al test en el aire
Declarar el idioma es el principio. Después viene la pregunta de siempre, que es qué pasa con quien llega:
- Monta el resto del head de la página en el generador de meta tags, y confirma que la canónica de cada versión apunte a sí misma.
- Mira cómo se dibuja tu resultado en la búsqueda, con el punto exacto del corte, en el simulador de SERP.
- Antes de decidir si una versión de la página convierte más que otra, mira cuánto tráfico exige el test en la calculadora de tamaño de muestra.
- Con el test en marcha, lee el veredicto en la calculadora de significancia estadística en vez de cerrarlo el primer día bueno.
- Para entender cómo tratan las respuestas de IA lo que publicas en cada idioma, usa el checklist de preparación GEO.
Preguntas frecuentes
- ¿Qué hace el hreflang en la práctica?
- Le dice al buscador que dos o más URLs son la misma página en idiomas o países distintos, para que cada persona reciba la versión correcta. El hreflang no cambia la posición: cambia qué dirección aparece en la posición que ya tienes. Alguien que busca desde México sigue encontrando la misma página, solo que en español en lugar de inglés. Sin el atributo, tus propias versiones pueden competir entre sí como contenido casi duplicado, y la que aparece es la que el buscador considere más fuerte, que no siempre es la del idioma de quien buscó.
- ¿De verdad tengo que listar la propia página en el bloque?
- Sí, y esa es la regla que más se incumple. Cada página del grupo lleva la lista entera, incluida ella misma, lo que se llama autorreferencia. Eso es lo que permite al buscador confirmar que todas las versiones coinciden sobre el grupo. Un bloque que solo apunta a las otras versiones deja el conjunto sin confirmar y suele descartarse entero, sin ningún aviso. Este generador produce un único bloque justamente por eso: la misma copia va en todas las versiones, y cada una se lista a sí misma.
- ¿El x-default es obligatorio?
- No es obligatorio, pero resuelve un problema que aparece pronto. Señala la versión que atiende a quien no coincide con ningún idioma de la lista: alguien en Alemania, con el navegador en alemán, en un sitio que solo tiene portugués, inglés y español. Sin x-default el buscador elige por su cuenta. Lo más habitual es apuntar a la versión en inglés, o a una página selectora de idioma cuando existe. Un detalle que confunde a mucha gente: el x-default no sustituye a la etiqueta de su propia versión, se suma a ella, y por eso la salida tiene una tag más que el número de versiones.
- ¿Puedo usar solo el código de país, como br o uk?
- No. El primer valor es siempre el idioma, en la sigla de dos letras de la ISO 639-1, y la región es opcional y va después. hreflang igual a br no es Brasil, es bretón, el idioma de la Bretaña francesa. hreflang igual a uk no es Reino Unido, es ucraniano. Reino Unido es GB. Lo cruel es que los dos valores son sintácticamente válidos, así que ningún validador de HTML protesta y no aparece error en ninguna parte: la página simplemente se sirve al público equivocado, y el problema se descubre cuando alguien pregunta por qué nunca llegó el tráfico de un mercado.
- Tags en el head, cabecera HTTP o sitemap: ¿cuál elijo?
- Los tres son equivalentes para el buscador, y la decisión es operativa. Las tags en el head son lo más simple cuando controlas la plantilla de la página. La cabecera HTTP es la única opción para archivos que no son HTML, como un PDF publicado en dos idiomas. El sitemap es lo más eficiente en sitios grandes: la malla entera vive en un archivo, no se toca el HTML de ninguna página y es mucho más fácil de revisar en bloque. Elige uno y usa solo ese. Declararlo en tres sitios no suma nada y multiplica la probabilidad de que uno quede desactualizado y contradiga a los otros.
- ¿Cuántas versiones caben en el bloque?
- No hay límite práctico en el atributo, y los sitios globales funcionan con decenas de versiones. Lo que crece es el coste: la malla completa implica una tag por versión en cada página, así que treinta idiomas son treinta tags en el head de treinta páginas. Ahí el sitemap deja de ser una preferencia y pasa a ser una decisión de arquitectura, porque mantener treinta plantillas de head sincronizadas a mano es justo donde la malla se rompe. Si tu número de versiones pasó de diez, genera el formato sitemap y trátalo como un archivo de configuración, no como HTML escrito a mano.
- ¿Funciona el hreflang si la canónica no coincide?
- No funciona, y esa combinación es la segunda causa más común de una malla ignorada. Cada URL del bloque tiene que ser la misma que esa página declara como canónica. Si la versión en español tiene la canónica apuntando a la inglesa, estás diciendo dos cosas contradictorias: que es una versión de idioma independiente y que es una copia de la inglesa. Ante la contradicción, el buscador sigue la canónica y tira el hreflang. La regla práctica: canónica autorreferente en cada versión, y el hreflang apuntando exactamente a esas canónicas.
- ¿Lo que escribo aquí se guarda en algún sitio?
- No. Todo corre en JavaScript dentro de tu navegador: la lista se lee, el bloque se monta y la nota se calcula en tu máquina, sin ninguna llamada de red, y nada se guarda ni se registra. La herramienta tampoco visita las URLs que indicas, lo que significa que comprueba la forma de las direcciones y no la existencia de las páginas. Eso importa cuando el sitio todavía no está publicado y la lista revela un lanzamiento en otro mercado. Puedes comprobarlo abriendo la pestaña de red mientras escribes: no sale ninguna petición.
Sigue leyendo
Para entender qué cambia entre optimizar para la búsqueda y optimizar para la conversión, sigue por CRO y SEO, qué cambia en cada uno, mira la guía de GEO en 2026 y aprende a montar bloques citables en FAQ para citación por IA.