Errores de hreflang en sitios multilingües: cómo detectarlos y corregirlos
SEOAudit8 min de lectura
La mayoría de los errores de hreflang nacen de detalles pequeños: ua en lugar de uk, falta del enlace a la propia página, ausencia de la respuesta desde la otra versión de idioma. Cuando ocurre, Google puede ignorar todo el grupo de anotaciones y quien busca acaba en un idioma que no es el suyo. Aquí verás qué debe contener cada etiqueta, cuáles son los errores de hreflang más habituales y cómo revisar un sitio en pocos minutos.
El atributo indica a un buscador que una página tiene versiones en otros idiomas o para otras regiones. No mejora el posicionamiento: es una pista sobre qué versión mostrar a cada usuario. Por eso un fallo no penaliza el sitio, simplemente anula el beneficio. Los ejemplos salen de este sitio, que se publica en ucraniano (idioma por defecto, sin prefijo en la URL), inglés (/en) y español (/es).
Qué hace hreflang y qué no hace
Cuando existen varias versiones de una página en distintos idiomas, Google debe decidir cuál mostrar. Hreflang ayuda a decidir: enumeras todas las versiones de forma explícita y el buscador elige la que encaja con el idioma o la región del usuario. Google describe el mecanismo en su documentación sobre versiones localizadas.
Conviene conocer los límites. Hreflang no sube una página en los resultados, no sustituye a una traducción real y no une las señales de idiomas distintos. Es una pista de selección, y Google la trata como pista, no como orden. Si dos versiones son casi idénticas, por ejemplo inglés para Estados Unidos y para Reino Unido con el mismo texto, el atributo ayuda a separarlas por región.
Además solo funciona si cada versión se puede rastrear. Si una página de idioma está bloqueada en robots.txt, redirige a otro sitio o lleva noindex, el buscador no puede usarla y la anotación se convierte en una referencia rota. Por eso revisar hreflang empieza siempre por comprobar que todas las direcciones del grupo responden 200 y se pueden indexar.
El tema está pegado a la elección de la dirección principal de cada página, así que merece la pena leer también sobre la etiqueta canonical: ambos mecanismos tienen que coincidir.
Cómo es un conjunto de etiquetas correcto
El método más habitual son los elementos link en el head de cada página. Cada versión lleva la lista completa de versiones, incluida ella misma, más una entrada x-default. Este es el conjunto de este artículo en este sitio:
<link rel="alternate" hreflang="uk" href="https://seoaudit.com.ua/blog/hreflang-guide">
<link rel="alternate" hreflang="en" href="https://seoaudit.com.ua/en/blog/hreflang-guide">
<link rel="alternate" hreflang="es" href="https://seoaudit.com.ua/es/blog/hreflang-guide">
<link rel="alternate" hreflang="x-default" href="https://seoaudit.com.ua/blog/hreflang-guide">Las mismas cuatro líneas aparecen sin cambios en las versiones en ucraniano, inglés y español. La dirección en ucraniano actúa como uk y como x-default porque es el idioma por defecto. El valor x-default está pensado para usuarios cuyo idioma no figura entre las versiones, o para una página de selección de idioma.
Si una página no tiene traducción en un idioma, ese idioma simplemente se omite del conjunto. No apuntes a otro idioma «por si acaso» ni envíes a la gente a la página de inicio. El conjunto debe describir solo páginas que existen de verdad.
Fíjate también en el atributo lang del elemento html: debe coincidir con el idioma de la página, por ejemplo <html lang="es">. Es una señal distinta, útil para navegadores, tecnologías de asistencia y buscadores, y no sustituye a hreflang.
Códigos de idioma y de región
Un valor de hreflang es un código de idioma ISO 639-1, seguido opcionalmente de un código de región ISO 3166-1 alpha-2. No se permite una región sin idioma. Estos son los casos que aparecen en la práctica:
ukpara ucraniano. El códigouacorresponde al país Ucrania, no al idioma, así que es incorrecto. Los escáneres, incluido el de este sitio, rechazanuaa favor deuk.enpara inglés en general,en-GBpara Reino Unido,en-USpara Estados Unidos. El valoren-UKes incorrecto porque el código ISO 3166-1 del Reino Unido es GB.espara español en general,es-MXpara México,es-ESpara España.x-defaultno es un idioma, sino un valor especial para la versión de reserva.
Las variantes regionales solo tienen sentido cuando los textos de verdad cambian: moneda, condiciones legales, vocabulario. Si tienes una única traducción al español para todos los países, basta con es. Añadir regiones «para completar» solo crea más sitios donde equivocarse.
Tampoco des dos valores distintos al mismo idioma en una misma página. Dos entradas en que apuntan a direcciones diferentes generan un conflicto, y Google elegirá una de ellas.
Tres formas de declarar hreflang
Google admite tres métodos y su documentación aconseja elegir uno.
Elementos link en el head
La opción más sencilla para sitios y blogs corrientes. Las etiquetas forman parte del HTML de cada página y se ven con «ver código fuente». El inconveniente es que con muchos idiomas el head crece.
Cabecera HTTP
Sirve para archivos que no son HTML, como los PDF. El valor viaja en la cabecera Link de la respuesta del servidor. En páginas normales se usa poco, porque es más difícil de notar al revisar.
Mapa del sitio XML
En el sitemap, cada url recibe elementos xhtml:link con todas las versiones. Resulta cómodo en sitios grandes porque el marcado está en un solo lugar. El formato se explica en la guía de sitemap.xml.
El consejo principal es no combinar métodos sin motivo. Si el HTML dice una cosa y el sitemap otra, el resultado es difícil de predecir. Elige un método, mantén una sola fuente de verdad y genera todas las versiones a partir de los mismos datos.
Los errores de hreflang más comunes
Estos son los problemas que se repiten en sitios multilingües y lo que provoca cada uno.
| Error | Qué ocurre |
|---|---|
Código incorrecto como ua o en-UK | El valor no se reconoce y la entrada se ignora |
| Falta el enlace a la propia página | El grupo queda incompleto y es más difícil de interpretar |
| Falta el enlace de retorno | Si A apunta a B y B no apunta a A, las anotaciones pueden ignorarse |
| La dirección redirige o devuelve 404 | El buscador no puede usar esa versión |
| La dirección no es la canonical | Las señales se contradicen |
| hreflang en una página noindex | La página no se indexará, así que la anotación no sirve |
Direcciones relativas como /en/page | Se necesitan URL absolutas con https y dominio |
| Métodos mezclados o conjuntos distintos en HTML y sitemap | Las fuentes entran en conflicto |
| Conjunto parcial al que le falta un idioma | Algunas versiones quedan fuera del grupo |
| Título traducido pero cuerpo en el idioma original | La versión no corresponde al idioma que declara |
El último error es traicionero. Técnicamente todo está bien, pero quien abre la página «en inglés» ve texto en ucraniano. Hreflang no arregla problemas de contenido, así que anota solo versiones completamente traducidas.
Otra trampa es la redirección automática según la IP o la cabecera Accept-Language. Si el servidor obliga a visitantes y rastreadores a pasar al idioma «correcto», el buscador puede no ver nunca las demás versiones. Ofrece un selector de idioma con enlaces en vez de imponer la elección.
Cómo interactúa hreflang con canonical, noindex y redirecciones
Tres mecanismos chocan a menudo, así que conviene mirarlos juntos.
Canonical. Cada versión de idioma debe apuntar su canonical a sí misma. Si la página en inglés declara rel="canonical" hacia la de ucraniano, le dices a Google que la inglesa no es una versión independiente, y una entrada hreflang para ella lo contradice. Nunca canonicalices un idioma hacia otro. La guía de la etiqueta canonical explica cómo elegir la dirección correcta.
Noindex. Una página con noindex queda fuera del índice, así que mencionarla en hreflang no tiene sentido. Si una traducción aún no está lista y se mantiene fuera del índice, quítala del conjunto hasta que se publique.
Redirecciones. Una dirección en hreflang debe responder 200 directamente. Si /en/page redirige a /en/page/, la dirección final es la que va en el conjunto. Es fácil pasarlo por alto tras cambiar la estructura de URL.
Robots.txt. Una página bloqueada para el rastreo no se puede comprobar, de modo que el enlace de retorno que contiene nunca se leerá. Asegúrate de que ninguna versión de idioma caiga bajo una regla de robots.txt.
El principio general es simple: toda dirección del grupo es accesible, indexable, autocanónica y responde 200. La mayoría de los demás errores se derivan de romper esa regla.
Cómo comprobar hreflang a mano
Para un sitio pequeño bastan un navegador y una terminal.
- Abre cada versión de idioma y mira el código fuente. Localiza todos los
hreflangdelheady compara los conjuntos: deben ser idénticos en todas las versiones. - Extrae las etiquetas rápidamente desde la terminal:
curl -s https://example.com/en/page | grep -i hreflang- Para cada dirección del conjunto, comprueba el código de respuesta y que no haya redirección, por ejemplo con
curl -sI. - Revisa
rel="canonical"y la metaetiqueta robots en cada versión. - Si hreflang está en el sitemap, ábrelo y confirma que cada
urlenumera todas las versiones, ella misma incluida. - En Google Search Console usa la inspección de URL: muestra qué página eligió Google como canónica y si la versión está indexada.
En un sitio con decenas de idiomas o miles de páginas la revisión manual no escala, así que genera el conjunto desde una sola fuente de datos y pruébalo de forma automática. La lista completa de comprobaciones técnicas está en la lista de verificación de SEO técnico.
Qué comprueba el escáner de SEOAudit
El escáner de SEOAudit es pasivo: lee la dirección que le indicas y unos pocos recursos públicos de apoyo. No es un rastreo de todo el sitio ni una medición de posiciones. En hreflang comprueba lo siguiente:
- la sintaxis de los valores, donde el código
uase rechaza a favor deuk; - la referencia a la propia página;
- las entradas duplicadas para un mismo idioma;
- el conflicto entre hreflang y canonical;
- la reciprocidad: el escáner descarga como máximo tres alternativas declaradas por la página y comprueba que enlazan de vuelta, así que en un conjunto grande solo se verifica una muestra;
- la recomendación de añadir
x-default.
Si una página no tiene hreflang, la comprobación se marca como no aplicable, no como superada. El escáner tampoco prueba hreflang en sitemaps o cabeceras HTTP más allá de lo que declara la propia página, y no rastrea todo el sitio.
Para ver el resultado en tu propia página, ejecuta el escáner gratuito. Una visión más amplia de las comprobaciones técnicas está en la página de auditoría SEO, las comprobaciones relacionadas de HTTPS y cabeceras se describen en la página de comprobación de seguridad, y la preparación para la búsqueda con IA se trata en visibilidad en IA.
Hreflang funciona cuando cada versión de idioma existe, es accesible y aparece listada de forma idéntica en todas las páginas del grupo. Empieza revisando códigos y enlaces de retorno, y luego ejecuta el escáner gratuito en tu página para ver lo que ve un buscador.
Preguntas frecuentes
- ¿Afecta hreflang al posicionamiento?
No, hreflang no mejora el posicionamiento. Solo sugiere a Google qué versión de idioma o región mostrar a cada usuario. Los errores no penalizan el sitio, pero reducen la probabilidad de que una persona llegue a la página en su propio idioma.
- ¿Debo usar uk o ua para ucraniano?
Usa
uk, el código de idioma ISO 639-1. El códigouacorresponde al país Ucrania, así que en hreflang es incorrecto. Se puede añadir una región tras el idioma, comouk-UA, pero normalmente basta conuk.- ¿Necesito x-default si solo tengo dos idiomas?
No es obligatorio, pero se recomienda. La entrada
x-defaultindica la versión de reserva para usuarios cuyo idioma no admites, o una página de selección de idioma. Suele ser la versión en el idioma por defecto.- ¿Qué hago si una traducción aún no está lista?
Déjala fuera del conjunto hreflang y no publiques una página vacía de relleno. Mantén solo las versiones que existen. Cuando la traducción se publique, añádela a todas las páginas del grupo a la vez para que los enlaces de retorno coincidan.