Una vez perdí una tarde sólida por hreflang. Un cliente tenía un sitio en inglés y francés, dividido /en/ y /fr/, y sus páginas francesas simplemente no se clasificaban en Francia: Google siguió apareciendo en la versión en inglés para los buscadores franceses. El marcado parecía correcto. Estaba en el encabezado, los códigos estaban ahí, las URL resueltas. Resultó que el problema era que las páginas en inglés apuntaban a las francesas pero las páginas en francés no apuntaban hacia atrás. Hreflang tiene que ser recíproco y Google estaba desechando todo el clúster porque faltaban las etiquetas de retorno. Nada en el navegador me lo decía. Sin errores, sin advertencias, solo páginas que silenciosamente no se clasifican donde deberían.
Eso es hreflang en pocas palabras. El concepto es simple: decirles a los motores de búsqueda qué idioma y versión regional de una página mostrar qué usuarios. La ejecución es un campo minado de códigos ISO, convenciones de carcasa, reglas de reciprocidad y una etiqueta alternativa que la mitad de Internet olvida. Construyo y mantengo sitios multilingües con bastante frecuencia, en toda la documentación de Toolz.dev, WP Adminify's y varios proyectos de Laravel y React, que quería una herramienta que generara las etiquetas y detectara los errores antes de enviarlos. Ese es el Generador Hreflang, y esta guía es todo lo que desearía haber sabido esa tarde.
Para el concepto más que para la herramienta, comience con etiquetas hreflang explicadas, que es el centro de este tema y enlaza con los artículos en x-predeterminado, errores comunes de hreflang, y configuraciones de marco para Siguiente.js y WordPress.
TL;Dr: las etiquetas Hreflang indican a los motores de búsqueda qué versión de idioma/región de una página atender a cada usuario, utilizando el
rel="alternate" hreflang="x"anotación. Los códigos siguen ISO 639-1 (idioma) e ISO 3166-1 (región), por lo que el Reino Unido lo esGB, noUK. Las etiquetas deben ser recíprocas (cada página enlaza hacia atrás) y debe incluir unx-defaultretroceder. El generador genera etiquetas válidas como enlaces HTML, entradas de mapas de sitio XML o un encabezado HTTP, valida cada código, detecta duplicados y ejecuta 100% en su navegador.
¿qué son las etiquetas hreflang y cuándo las necesitas?
Una etiqueta hreflang es una anotación que dice " hay otra versión de esta página para un idioma y región específicos, y aquí está su URL." La sintaxis es <link rel="alternate" hreflang="fr-CA" href="https://example.com/fr-ca/" />, donde fr-CA significa francés tal como se habla en Canadá. Cuando Google comprende estas relaciones, puede enviar la página de francés canadiense a un hablante de francés en Canadá y la página de inglés de EE. UU. a alguien en los Estados Unidos, en lugar de adivinar o establecer por defecto cualquier versión que haya rastreado primero.
Necesita hreflang siempre que tenga sustancialmente el mismo contenido en más de un idioma, o el mismo idioma dirigido a más de una región. Un blog que existe sólo en inglés no lo necesita. Un sitio de marketing SaaS traducido a seis idiomas lo necesita absolutamente. El caso intermedio (un idioma, varias regiones, como tiendas separadas de EE. UU. y el Reino Unido, ambas en inglés) es donde hreflang es más valioso y más pasado por alto, porque las páginas parecen duplicadas para Google a menos que las declare explícitamente como variantes regionales.
La recompensa es doble. En primer lugar, la versión correcta se ubica en el mercado correcto, lo que aumenta los clics y la conversión porque los usuarios obtienen precios, monedas y frases que se ajustan a ellos. En segundo lugar, hreflang desactiva el problema del contenido duplicado: en lugar de que sus páginas regionales casi idénticas compitan y se canibalicen entre sí, Google las trata como un grupo de alternativas y elige el mejor ajuste por consulta.
¿Por qué los códigos hacen tropezar a todos?
Porque siguen estándares, no intuición, y los estándares tienen casos marginales.
Los valores son etiquetas de idioma BCP 47, definidas en RFC 5646, y el propio Google' documentación de versiones localizadas es la autoridad sobre qué subconjunto acepta.
La parte del idioma es un código ISO 639-1: dos letras, minúsculas, como en, fr, de, ja. La parte de región opcional es un código ISO 3166-1 alfa-2: dos letras, mayúsculas, como US, GB, DE. Júntalos con un guión y obtendrás en-US investigaciones operacionales de-DE. Las convenciones que muerden a la gente:
- los Reino Unido lo es
GB, noUK.UKno es un código ISO 3166-1 válido yen-UKes una operación no operativa. - El idioma es lo primero y es obligatorio; La región es opcional y no puede ser independiente. No puedes apuntar
USpor sí solo, no existe el hreflang exclusivo de región. Siempre es un idioma, opcionalmente limitado por región. - América Latina utiliza un código ONU M49,
es-419, porque abarca muchos países en lugar de uno. Este código de región de tres dígitos es válido y útil para "Variedad española, latinoamericana." - El chino a menudo necesita una subetiqueta de escritura, como
zh-Hant(tradicional) ozh-Hans(Simplificado), porque la forma escrita importa más que el país.
El generador valida todo esto. Comprueba cada código con la forma esperada, normaliza la carcasa (lenguaje minúscula, región mayúscula, secuencia de títulos) y le advierte cuando una subetiqueta no es un idioma o región ISO reconocida, por lo que en-UK se marca antes de que desperdicie un rastro.
¿cómo uso el generador Hreflang?
La herramienta se basa en una lista de versiones de idiomas y una selección de formato de salida.
Paso 1: agrega tus versiones. Cada fila es un código de idioma/región más la URL completa de esa versión. Una lista de selección rápida ofrece los códigos comunes (en-US, es-419, zh-Hant, x-default, y más) para que no tengas que recordar la carcasa exacta. Agregue una fila por versión.
Paso 2: incluya un valor predeterminado de x. Agrega una fila con el código x-default apuntando a su URL alternativa. Esta es la versión que se ofrece a los usuarios cuyo idioma no ha dirigido explícitamente, a menudo una página de selección de idioma o su página de inicio principal.
Paso 3: elige un formato. Cambiar entre HTML <link> etiquetas para el encabezado de la página, xhtml:link entradas para un mapa del sitio XML o un HTTP Link encabezado para archivos que no son HTML. A medida que lo edita, el generador valida cada código y URL, detecta códigos duplicados y muestra una tabla de estado por fila para que pueda ver de un vistazo qué entradas son válidas.
Paso 4: copie e implemente recíprocamente. Copie el resultado y, esta es la parte que importa, agregue el mismo conjunto completo de etiquetas a cada URL del grupo, incluida una entrada autorreferencial. Luego confirme la configuración con el informe de orientación internacional en la Consola de búsqueda de Google.
Todo se ejecuta en el lado del cliente, por lo que su estructura de URL, que puede exponer toda su arquitectura internacional, nunca sale del navegador. Ese es el mismo modelo de privacidad detrás de cada herramienta del sitio, cubierta en el Guía de privacidad de datos.
¿Cómo se ve la salida en cada formato?
Aquí hay un ejemplo trabajado más que una descripción. Una tienda que vende en EE. UU., Reino Unido, Francia y América Latina, con una página de selección de idioma como alternativa. Entran cinco filas:
| hreflang | URL |
|---|---|
x-default |
https://example.com/ |
en-US |
https://example.com/us/ |
en-GB |
https://example.com/uk/ |
fr-FR |
https://example.com/fr/ |
es-419 |
https://example.com/latam/ |
Tenga en cuenta dos cosas sobre ese conjunto antes de la salida. en-US y en-GB ambos son ingleses y difieren sólo según el mercado, como es el caso para el que existe hreflang y el caso en el que la mayoría de los sitios omiten. Y es-419 es el código de región ONU M49 para América Latina, que la herramienta acepta como válido en lugar de marcar, porque una región de tres dígitos es legal en una etiqueta de idioma aunque no sea un código ISO 3166-1 alfa-2.
Etiquetas de enlace HTML, pentru pagina <head>:
<link rel="alternate" hreflang="x-default" href="https://example.com/" />
<link rel="alternate" hreflang="en-US" href="https://example.com/us/" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/uk/" />
<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/" />
<link rel="alternate" hreflang="es-419" href="https://example.com/latam/" />
Ese bloque exacto continúa en las cinco páginas, sin cambios. No " los otros cuatro" en cada página: las cinco, incluida la propia entrada de la página '. Eso es lo que hace que las anotaciones sean recíprocas.
Entradas de mapas de sitio XML, donde la herramienta envuelve el mismo conjunto en a <url> elemento y utiliza la URL de su página como <loc>:
<url>
<loc>https://example.com/us/</loc>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/" />
<xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/us/" />
<xhtml:link rel="alternate" hreflang="en-GB" href="https://example.com/uk/" />
<xhtml:link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/" />
<xhtml:link rel="alternate" hreflang="es-419" href="https://example.com/latam/" />
</url>
El generador te recuerda la pieza que vive fuera del bloque que puede producir: el <urlset> el elemento necesita el espacio de nombres xhtml declarado, o todos xhtml:link la entrada se ignora mientras el archivo aún se valida como mapa del sitio.
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
Encabezado de enlace HTTP, un valor de encabezado único para archivos sin <head> para editar, como un PDF:
Link: <https://example.com/>; rel="alternate"; hreflang="x-default", <https://example.com/us/>; rel="alternate"; hreflang="en-US", <https://example.com/uk/>; rel="alternate"; hreflang="en-GB", <https://example.com/fr/>; rel="alternate"; hreflang="fr-FR", <https://example.com/latam/>; rel="alternate"; hreflang="es-419"
Es una larga línea por diseño: una única Link encabezado que contiene valores separados por comas. En nginx eso es uno add_header Link "..."; directiva; en Apache uno Header set Link "...". Dividiéndolo entre varios Link los encabezados también funcionan, pero mantenerlos como un valor hace obvio que el conjunto está completo.
¿qué significan las advertencias del generador 's?
La herramienta separa los errores que impiden que se emita una entrada de las advertencias, que la dejan pasar pero marcan algo que debes mirar. La distinción es importante porque la mayoría de los errores de hreflang son marcas legales que no significan nada.
| mensaje | Lo que lo desencadenó | Qué hacer |
|---|---|---|
| No es una etiqueta de idioma válida | El valor no coincide language[-Script][-REGION] |
Utilice primero un código de idioma, una región opcional o el literal x-default |
| La subetiqueta de idioma no es un código ISO 639-1 común | Lenguaje bien formado pero no reconocido | Compruébelo con ISO 639-1; la etiqueta se emite de cualquier manera |
| La subetiqueta de región no es un código ISO 3166-1 común | Región bien formada pero no reconocida | Esto es lo que atrapa en-UK, donde GB es correcto |
| Hreflang duplicado | El mismo código aparece dos veces en el conjunto | Eliminar uno; dos entradas para un código es una contradicción |
| No hay conjunto de valores predeterminados x | El conjunto no tiene fila alternativa | Agregue uno que apunte a una página de selección o a su versión principal |
| hreflang funciona en clústeres | Sólo una URL en el conjunto | Agregue las versiones en otros idiomas; un clúster de una entrada no hace nada |
| hreflang debe ser recíproco | Siempre mostrado | Implemente el bloque idéntico a cada URL del grupo |
El último siempre se muestra de forma más que condicional, porque es el fallo que ninguna herramienta del lado del cliente puede detectar. La reciprocidad es una propiedad de las otras páginas, no del conjunto que tienes delante, por lo que el generador establece la regla en lugar de pretender verificarla. Cada otra advertencia aquí es algo que realmente puede verificar.
Tenga en cuenta también que los códigos se normalizan en lugar de rechazarse en la carcasa: EN-gb se convierte en en-GB, zh-hant se convierte en zh-Hant. Las etiquetas de idioma coinciden sin sensibilidad a las mayúsculas y minúsculas, por lo que la carcasa es convencional, pero la salida consistente hace que se pueda leer una diferencia entre dos páginas.
¿Qué formato de salida debo elegir?
Google acepta tres métodos de implementación y el correcto depende de su pila y número de páginas.
| sistema | mejor para | Compensación |
|---|---|---|
HTML <link> etiquetas |
La mayoría de los sitios; control directo por página | Agrega peso a cada página's cabeza; debe estar en cada página |
Mapa del sitio XML xhtml:link |
Sitios grandes; mantiene limpio el HTML | Requiere mantener el mapa del sitio; más lento para que Google lo procese |
HTTP Link encabezado |
Archivos que no son HTML como PDF | Necesita configuración del servidor; más difícil de auditar |
Pentru un site tipic, Etiquetas de enlace HTML son los más sencillos: los ve en la fuente, son fáciles de depurar y todos los marcos pueden renderizarlos. Para grandes sitios con cientos de variantes lingüísticas, poniendo hreflang en el Mapa del sitio XML mantiene los encabezados de su página ajustados y centraliza las anotaciones en un solo archivo (recuerde agregar xmlns:xhtml="http://www.w3.org/1999/xhtml" al <urlset> elemento que la herramienta te recuerda). El Encabezado HTTP el método es un nicho pero esencial para recursos que no son HTML, como PDF, donde no hay un encabezado para colocar una etiqueta de enlace.
Elijas lo que elijas, utiliza sólo un método por conjunto de páginas. Mezclar etiquetas HTML y entradas de mapas de sitio para las mismas URL puede enviar señales contradictorias a Google. Si ya está generando un mapa del sitio, el formato de mapa del sitio tool's se ubica directamente en la salida del Generador de mapas del sitio XML.
¿qué es x-default y por qué importa?
x-default es el valor hreflang que especifica una página alternativa para cualquier usuario cuyo idioma o región no haya dirigido explícitamente. Si su sitio tiene versiones en inglés, francés y alemán, y llega alguien que navega en japonés x-default le dice a Google dónde enviarlos, generalmente una página de inicio neutral o una página que les permite elegir un idioma.
Es opcional en el sentido de que hreflang funciona sin él, pero Google recomienda incluirlo y lo trato como obligatorio en la práctica. Sin un valor predeterminado de x, los usuarios no coincidentes obtienen la versión que Google adivina que es la más cercana, que a menudo es solo su página más rastreada en lugar de una elección deliberada.
Para la parte de la herramienta 's: un conjunto sin x-default la fila genera una advertencia en lugar de un error, por lo que aún puedes copiar la salida, pero te lo habrán dicho. Agregue la fila y el respaldo se emitirá en cualquiera de los tres formatos que haya seleccionado, en la misma posición en cada página. Dónde señalarlo y los errores que lo hacen inútil se tratan en el guía predeterminada X.
¿por qué hreflang debe ser recíproco?
Este es el que me costó una tarde, así que tiene su propia sección. Las anotaciones de Hreflang deben ser recíprocas. Si la página A declara la página B como su alternativa francesa, la página B debe declarar la página A a cambio. Google sólo confía en la relación cuando ambas partes la confirman. Si falta la etiqueta de devolución, Google ignora la anotación por completo, en silencio y sin errores en la página.
La forma limpia de satisfacer esto es colocar el conjunto completo e idéntico de etiquetas hreflang en cada página del grupo, incluida una entrada autorreferencial (la página apunta a sí misma). Entonces en tu en-US página, incluye etiquetas para en-US, en-GB, fr-FR, de-DEy x-default - y exactamente el mismo bloque aparece en el en-GB página, el fr-FR página, etc. Cada página del clúster lleva el mapa completo. Se siente redundante, pero es lo que hace que las anotaciones sean recíprocas y es lo que Google espera.
Es por eso que generar las etiquetas es solo el primer paso. El generador hreflang gratuito produce el bloque completo para que lo reutilice en todo el clúster y le recuerda la reciprocidad en sus advertencias, pero la disciplina de implementación (el mismo bloque, cada página) está en usted. Haga eso bien y los códigos sean correctos, y hreflang funciona de manera silenciosa y confiable. Enfréntate y falla con la misma tranquilidad. Para el contexto más amplio de ensamblar una pila técnica de SEO, recopilé las utilidades relacionadas en el descripción general del kit de herramientas para desarrolladores web.
¿Cómo pruebo que hreflang está funcionando?
Después de implementar, verifique con el Informe de focalización internacional (históricamente llamado informe hreflang) en Google Search Console. Enumera errores como " sin etiquetas de retorno" y "códigos de idioma desconocidos" en todo su sitio, lo cual es mucho más rápido que revisar las páginas una por una. Un rastreo con una herramienta de auditoría SEO también confirmará que cada página lleva el conjunto recíproco completo.
Los errores que veo con más frecuencia, en orden aproximado de frecuencia: faltan etiquetas de retorno (el fracaso de reciprocidad anterior), sin x-predeterminado, usando UK en vez de GB u otros códigos que no sean ISO, etiquetas solo de región que intentan apuntar a un país sin idioma, URL relativas donde hreflang requiere unos absolutos, y mezclando métodos de implementación para las mismas páginas. Cada uno de ellos produce un marcado que parece plausible y no hace nada.
los generador de etiquetas Hreflang está diseñado para detectar los que una máquina puede detectar (códigos con formato incorrecto, subetiquetas desconocidas, duplicados, URL no absolutas y el valor predeterminado x faltante) y para recordarle los que no puede imponerle, es decir, la reciprocidad. El catálogo completo, con el síntoma que cada uno produce, está dentro 12 errores comunes de hreflang. Si está conectando hreflang a una compilación multilingüe más grande, el generador de metaetiquetas maneja el resto de su encabezado por página y el Guía de herramientas de codificación completa el flujo de trabajo del desarrollador.
¿qué casos límite deberías planificar?
Una vez que se implementan los conceptos básicos, surgen un puñado de situaciones con la frecuencia suficiente para planificarlas. Las etiquetas canónicas y hreflang deben estar de acuerdo. Cada página 's canónico debe apuntar a sí mismo, no a una versión de idioma diferente: si su página en francés se canonicaliza a la en inglés, le está diciendo a Google que elimine la página en francés por completo, lo que cancela el hreflang que acaba de agregar. Mantenga los canónicos autorreferenciales dentro de un grupo de idiomas y deje que hreflang describa las relaciones entre grupos; hreflang vs canónico funciona a través de las combinaciones.
La lengua y el país son ejes independientes. Es perfectamente válido tenerlo en-US, en-GBy en-CA todo en inglés pero dirigido a diferentes países, e igualmente válido tener fr-CA y en-CA ambos apuntan a Canadá en diferentes idiomas. No asuma una página por país o una por idioma; está mapeando las combinaciones específicas que realmente ofrece su sitio.
Las barras diagonales y los protocolos finales deben coincidir con sus URL reales. hreflang apunta a URL exactas, entonces https://example.com/fr/ y https://example.com/fr son objetivos diferentes. Utilice la forma canónica e indexable de cada URL, la misma que enviaría en un mapa del sitio, para que la anotación se resuelva en una página en vivo en lugar de una redirección. Una redirección en un objetivo hreflang no es fatal, pero agrega un salto y una posibilidad de que la señal se debilite, por lo que vale la pena ser exacta.
Preguntas frecuentes
¿Qué es una etiqueta hreflang?
Una etiqueta hreflang indica a los motores de búsqueda qué idioma y versión regional de una página mostrar a un usuario determinado. Utiliza rel="alternate" hreflang="x" anotación, donde x es un código de idioma (opcionalmente con una región), por lo que a un hispanohablante en México se le puede servir su página es-MX en lugar de la inglesa. Hreflang ayuda a los sitios internacionales a evitar problemas de contenido duplicado y clasificar la página correcta en cada mercado.
¿Cuál es el formato Hreflang correcto?
El valor es un código de idioma ISO 639-1, seguido opcionalmente por una región como código ISO 3166-1 alfa-2, por ejemplo en, en-GB o pt-BR. El idioma viene primero y la región es opcional; no se puede apuntar a una región sola. Tenga en cuenta que los estándares difieren de las abreviaturas cotidianas: el Reino Unido es GB, no el Reino Unido.
¿Qué significa x-default en hreflang?
x-default Especifica la página de respaldo para usuarios cuyo idioma o región no has orientado explícitamente. Por lo general, es su página de inicio o una página de selector de idioma. Google recomienda incluir una X-default en cada conjunto de hreflang, por lo que los visitantes inigualables se envían a algún lugar sensato en lugar de una versión de idioma aleatoria.
¿Dónde debo poner las etiquetas hreflang?
Puede implementar hreflang en tres lugares: como enlace rel="alternate" etiquetas en el encabezado HTML, como xhtml:entradas de enlace en su mapa del sitio XML, o como encabezado de enlace HTTP (útil para archivos que no son HTML como PDF). Elija un método y aplíquelo constantemente; mezclarlos para las mismas páginas puede enviar señales contradictorias. Esta herramienta genera los tres.
¿Las etiquetas hreflang tienen que ser recíprocas?
Sí. Si la página A declara la página B como su alternativa francesa, la página B debe declarar la página A a cambio. Google ignora las anotaciones hreflang que no están confirmadas por etiquetas de retorno en las páginas a las que apuntan. El enfoque más sencillo es incluir el conjunto completo e idéntico de entradas hreflang, incluida una autorreferencial, en cada página del grupo.
¿Pueden las etiquetas hreflang arreglar contenido duplicado en todas las regiones?
Hreflang no elimina el contenido duplicado, pero le dice a Google que las páginas similares son variantes regionales o de idioma entre sí en lugar de duplicados para filtrar. Esto ayuda a que la versión correcta se clasifique en cada mercado en lugar de que las páginas se canibalicen entre sí. Para páginas genuinamente idénticas, combine hreflang con etiquetas canónicas correctas que cada uno se señalan a sí mismos.
¿Cómo pruebo que hreflang está funcionando?
Utilice el informe de Segmentación internacional (o hreflang) en Google Search Console, que enumera errores como etiquetas de retorno faltantes y códigos de idioma desconocidos. También puede rastrear el sitio con una herramienta de auditoría de SEO para confirmar que cada página lleva el conjunto recíproco completo. Las correcciones pueden tardar en reflexionar, ya que Google debe volver a rastrear todas las páginas del grupo.
¿Mis datos se mantienen privados?
Sí. Las etiquetas se generan completamente en su navegador con JavaScript simple. Las URL y la estructura del sitio nunca se transmiten, registran ni almacenan, y el generador sigue funcionando sin una conexión de red una vez que se ha cargado la página.



