Si tu empresa tiene la web en varios idiomas o en varias versiones del mismo idioma, tarde o temprano te encontrarás con un problema: Google muestra la página en español a un usuario de París o la versión mexicana a un cliente de Madrid. La etiqueta hreflang sirve para evitarlo. En esta guía verás qué es, cuándo hace falta, cómo se escribe con cada uno de los tres métodos disponibles, qué errores la invalidan y cómo comprobar que funciona.
En este artículo
Hreflang es un atributo que indica a los buscadores qué versión de una página corresponde a cada idioma y, si hace falta, a cada país. Cuando una misma página existe en español, francés e italiano, hreflang conecta las tres y le dice a Google: estas URL son equivalentes, muestra a cada usuario la que encaja con su idioma y su ubicación.
Es importante entender lo que hace y lo que no hace. Hreflang no mejora el posicionamiento por sí mismo ni hace que una página entre en el índice. Es una señal, no una orden: Google la tiene en cuenta junto con otras, como el contenido de la página, el dominio o los enlaces. Lo que sí consigue es que la versión correcta aparezca en el lugar de la versión equivocada, y eso se nota en el porcentaje de clics y en la conversión.
Necesitas hreflang en estas situaciones:
No la necesitas si tu web solo existe en un idioma y se dirige a un único mercado. Tampoco tiene sentido en páginas que no tienen equivalente en otros idiomas: un artículo publicado solo en español no lleva hreflang hacia ninguna parte.
Un caso intermedio frecuente en empresas españolas: la web completa está en español y solo una parte, por ejemplo las fichas de producto, está traducida al francés. En ese caso, hreflang se aplica únicamente a las páginas que tienen pareja.
El valor de hreflang se compone de un código de idioma y, opcionalmente, un código de país:
Así, es significa español para cualquier país, es-ES español para España y es-MX español para México. El orden es siempre idioma y después país. No se puede indicar solo un país: ES sin idioma no es válido.
Existe además un valor especial, x-default. Indica la página que debe mostrarse cuando ninguna versión encaja con el usuario: por ejemplo, la página de selección de idioma o la versión internacional en inglés. No es obligatoria, pero sí muy recomendable cuando tienes varias versiones por país.
Es el método más habitual. En la sección head de cada página añades una línea por cada versión, incluida la propia página. Ejemplo para la página de inicio de una empresa con versiones en español, francés e italiano:
<link rel="alternate" hreflang="es-ES" href="https://www.tuempresa.es/" />
<link rel="alternate" hreflang="fr-FR" href="https://www.tuempresa.es/fr/" />
<link rel="alternate" hreflang="it-IT" href="https://www.tuempresa.es/it/" />
<link rel="alternate" hreflang="x-default" href="https://www.tuempresa.es/" />Ese mismo bloque, idéntico, debe aparecer en las tres páginas: en la española, en la francesa y en la italiana. Las URL tienen que ser absolutas, con protocolo y dominio completos, y deben responder con un código 200, sin redirecciones.
Ventajas: es fácil de revisar con solo mirar el código fuente y la mayoría de los CMS tienen extensiones que lo generan. Inconveniente: con muchos idiomas, el head crece y cada página tarda algo más en descargarse.
Los PDF, las fichas técnicas descargables y otros archivos que no son HTML no tienen una sección head. Para ellos, hreflang se envía en la cabecera HTTP de la respuesta del servidor, con el campo Link:
Link: <https://www.ejemplo.com/ficha-tecnica.pdf>; rel="alternate"; hreflang="es",
<https://www.ejemplo.com/fr/fiche-technique.pdf>; rel="alternate"; hreflang="fr",
<https://www.ejemplo.com/it/scheda-tecnica.pdf>; rel="alternate"; hreflang="it"Este método lo configura el equipo técnico en el servidor (Apache, Nginx o el CDN que uséis) y es útil sobre todo para empresas industriales que publican catálogos y documentación en varios idiomas. Si un distribuidor de Lyon busca la ficha de tu producto, la cabecera ayuda a que Google le muestre la versión francesa del PDF.
Su punto débil es la verificación: no se ve en el código de la página y hay que comprobarlo con herramientas que lean las cabeceras.
La tercera opción es declarar las versiones en el sitemap XML. Cada URL incluye la lista de sus alternativas:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://www.ejemplo.com/es/servicios/</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://www.ejemplo.com/es/servicios/" />
<xhtml:link rel="alternate" hreflang="fr" href="https://www.ejemplo.com/fr/services/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.ejemplo.com/es/servicios/" />
</url>
<url>
<loc>https://www.ejemplo.com/fr/services/</loc>
<xhtml:link rel="alternate" hreflang="es" href="https://www.ejemplo.com/es/servicios/" />
<xhtml:link rel="alternate" hreflang="fr" href="https://www.ejemplo.com/fr/services/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.ejemplo.com/es/servicios/" />
</url>
</urlset>Cada versión aparece como un bloque url propio y repite la lista completa. Este método mantiene limpio el HTML y es el más práctico para sitios grandes, como un e-commerce con miles de fichas. A cambio, el sitemap tiene que generarse de forma automática y actualizarse cada vez que se publica o se retira una página.
Los tres métodos tienen el mismo valor para Google. Lo importante es elegir uno solo y aplicarlo de forma completa y coherente. Combinarlos no aporta nada y multiplica el riesgo de contradicciones: si el head dice una cosa y el sitemap otra, Google puede ignorar ambas.
Una orientación práctica:
La excepción razonable es precisamente esa: usar el head para las páginas y las cabeceras para los PDF, porque cada método cubre un tipo de recurso distinto y no se solapan.
Hreflang funciona por parejas confirmadas. Si la página española apunta a la francesa, la francesa tiene que apuntar a la española. Es la reciprocidad, también llamada enlace de retorno. Sin ella, Google descarta la relación, porque cualquiera podría declarar desde su web que es la versión francesa de la tuya.
La segunda regla es la autorreferencia: cada página se incluye a sí misma en su propia lista. La versión italiana declara su URL italiana con hreflang it-IT, además de las demás.
En la práctica, ambas reglas se cumplen solas si el bloque de hreflang es idéntico en todas las versiones de una página. Los problemas aparecen cuando alguien traduce una página nueva y se olvida de actualizar las anteriores, o cuando una versión cambia de URL y las otras siguen apuntando a la dirección antigua.
Si quieres revisar cómo está configurada tu web antes de abrir un nuevo mercado, nuestro equipo de SEO internacional hace esta comprobación de forma sistemática.
Para una empresa española que vende también en México, el caso típico es tener dos versiones casi idénticas del mismo texto. Cambian la moneda, algún término (ordenador frente a computadora, móvil frente a celular), los plazos de entrega y los datos de contacto. Sin hreflang, Google suele elegir una de las dos como principal y mostrarla en ambos países.
La solución es declarar es-ES para la versión española y es-MX para la mexicana. Si además quieres cubrir el resto de países hispanohablantes sin crear una versión para cada uno, añade una URL con es a secas: será la que Google muestre a un usuario de Colombia o de Argentina.
Un consejo: adapta de verdad los textos. Dos páginas que solo se diferencian en el símbolo de la moneda son una señal débil, y Google puede agruparlas igualmente. Cuanto más clara sea la diferencia de contenido, mejor funciona la etiqueta.
Las empresas españolas que exportan a Francia se encuentran a menudo con clientes en la Bélgica francófona. El esquema es el mismo: fr-FR para Francia y fr-BE para Bélgica. Tiene sentido separar las dos versiones si cambian los distribuidores, las condiciones comerciales o la normativa aplicable. Si el texto y la oferta son idénticos, una sola versión con fr suele bastar.
Con el italiano ocurre algo parecido: it-IT para Italia; it-CH para la Suiza de habla italiana (el Tesino y parte de los Grisones). Allí cambian la moneda (francos suizos), los impuestos y, a menudo, la logística, porque Suiza no forma parte de la UE.
Un detalle que muchos pasan por alto: Bélgica y Suiza son países multilingües. Una versión fr-BE no cubre a los usuarios belgas que buscan en neerlandés, y una it-CH no llega a la Suiza de habla alemana. Si esos públicos te interesan, necesitarán sus propias versiones y sus propias etiquetas.
Hreflang funciona igual con cualquier estructura: dominios de país (tuempresa.fr, tuempresa.it), subdominios (fr.tuempresa.com) o subdirectorios (tuempresa.com/fr/). Lo que cambia es cuánto trabajo le toca a la etiqueta.
Con un ccTLD como .fr, el propio dominio ya indica el país. Con un subdirectorio dentro de un .com, el país solo se deduce del contenido y de hreflang, así que la etiqueta tiene más peso. Y si tu web principal está en un .es y creas una carpeta /fr/, Google recibe dos señales que se contradicen en parte: el dominio dice España y hreflang dice Francia.
Elegir la estructura es una decisión que va más allá de la técnica. La explicamos en detalle en el artículo sobre ccTLD, subdominio o subdirectorio.
Hreflang y la etiqueta canonical se complementan, pero se confunden a menudo. La regla es sencilla: cada versión de idioma es canónica de sí misma. La página francesa no debe llevar un canonical que apunte a la española, porque le estarías diciendo a Google que la francesa es una copia y que no la indexe. En ese caso, hreflang deja de funcionar.
El otro punto es la calidad de la traducción. Hreflang conecta páginas equivalentes, pero no compensa un texto traducido de forma automática y sin revisar. Si el usuario francés llega a una página que no suena francesa, se va, y esa señal sí afecta al posicionamiento. Lo tratamos en la guía sobre cómo traducir una página web sin perder tráfico.
Para el mercado francés en concreto, en web en francés explicamos cómo trabajamos los textos con redactores nativos de nuestro equipo en Lille.
La comprobación tiene tres niveles:
Hreflang es una pieza pequeña de código con un efecto muy concreto: que cada cliente vea la versión de tu web pensada para él. Para que funcione, recuerda cinco puntos:
Si estás preparando la entrada en Italia o en Francia, la configuración de hreflang forma parte del trabajo técnico que hacemos antes de publicar los contenidos. Puedes ver cómo trabajamos en nuestra página de SEO internacional o escribirnos directamente.
Hreflang es un atributo HTML que indica a Google qué versión de una página corresponde a cada idioma y, opcionalmente, a cada país. Sirve para que un usuario de Francia vea la versión francesa de tu web y uno de España la española, en lugar de que el buscador elija una sola versión para todos. No mejora el posicionamiento por sí mismo: ayuda a que la página correcta aparezca en el mercado correcto, lo que suele mejorar los clics y la conversión.
No es obligatorio, pero es muy recomendable cuando tienes la misma página en varios idiomas y casi imprescindible cuando tienes variantes del mismo idioma para países distintos, como es-ES y es-MX o fr-FR y fr-BE. Sin la etiqueta, Google puede considerar esas páginas duplicadas y mostrar una sola en todos los países. Si tu web está en un único idioma y se dirige a un único mercado, no la necesitas.
El valor x-default indica la página que Google debe mostrar cuando ninguna de las versiones declaradas encaja con el idioma o el país del usuario. Suele usarse para una página de selección de idioma o para la versión internacional principal. Por ejemplo, si tienes versiones para España, Francia e Italia, un usuario de Polonia vería la página marcada como x-default. No es obligatorio, pero evita que Google elija por su cuenta.
Técnicamente sí, pero no aporta ninguna ventaja y aumenta el riesgo de errores. Si las dos fuentes no coinciden exactamente, Google puede ignorar las anotaciones. Lo recomendable es elegir un único método, el head del HTML para webs corporativas o el sitemap XML para sitios grandes, y aplicarlo de forma completa. La única combinación razonable es usar cabeceras HTTP para los PDF y otro método para las páginas HTML.
Primero revisa el código de varias páginas de cada idioma para comprobar que el bloque está completo e idéntico. Después rastrea la web con una herramienta como Screaming Frog, que detecta enlaces de retorno ausentes, códigos no válidos y URL con redirección. Por último, en Google Search Console filtra el rendimiento por país y comprueba qué URL reciben las impresiones: si en Francia aparecen tus páginas en español, la configuración tiene algún fallo.
Bing ha explicado que da más importancia a otras señales para identificar el idioma y el país de una página, como el atributo lang del HTML, la meta content-language, el dominio y el propio contenido. Por eso conviene no depender solo de hreflang: declara bien el idioma en cada página, escribe textos realmente adaptados a cada mercado y mantén una estructura de URL clara. Google, en cambio, sí utiliza hreflang como señal principal entre versiones equivalentes.