Internacionalización SEO (10 Reglas): Atributo lang, Hreflang y Errores de Validación

Audita las 10 reglas de internacionalización SEO: atributo lang correcto, validación de hreflang, return links, conflictos y mismatches. Guía técnica con ejemplos de código y herramientas.

Categoría SEO
Publicado 27 de marzo de 2026
Lectura 26 min
Autor Escala14
Internacionalización SEO (10 Reglas): Atributo lang, Hreflang y Errores de Validación

Internacionalización SEO (10 Reglas): Atributo lang, Hreflang y Errores de Validación

Tienes una web multilingüe o multirregional y Google sigue mostrando la versión equivocada a tus usuarios. O peor: estás indexando páginas duplicadas porque los motores de búsqueda no entienden cuál es la versión canónica para cada idioma. La internacionalización SEO es uno de esos terrenos donde un error técnico pequeño puede arruinar toda una estrategia de posicionamiento internacional.

Esta guía cubre las 10 reglas de internacionalización SEO que Google evalúa en cada página de tu web: desde el atributo lang en el HTML hasta los errores más habituales en la implementación de hreflang (return links rotos, conflictos, mismatches y métodos múltiples). Si tu sitio tiene presencia en más de un idioma o en más de un país, esta auditoría es obligatoria antes de dar un solo paso más en tu ascenso digital.

Esta guía es para SEOs técnicos, desarrolladores web y responsables de marketing que gestionan webs multilingües y quieren evitar los errores que hacen que Google ignore o malinterprete sus señales de internacionalización.

Aprende más sobre SEO técnico →

Tabla de contenidos

Regla 1: Atributo lang en la etiqueta HTML

Severidad: ❌ Fallo crítico

¿Qué es?

El atributo lang en la etiqueta <html> es la señal más básica y directa que le das a los motores de búsqueda sobre el idioma de tu página. Se declara en la apertura del documento HTML y debe seguir el estándar BCP-47 (también conocido como etiquetas de idioma IETF), que define códigos de idioma como es para español genérico o es-ES para español de España.

<!-- ✅ Correcto: español de España -->
<html lang="es-ES">

<!-- ✅ Correcto: español genérico -->
<html lang="es">

<!-- ✅ Correcto: inglés de EE. UU. -->
<html lang="en-US">

<!-- ❌ Incorrecto: atributo ausente -->
<html>

<!-- ❌ Incorrecto: código inválido -->
<html lang="spanish">

<!-- ❌ Incorrecto: código en mayúsculas (aunque lo tolera, no es el estándar) -->
<html lang="ES">

¿Por qué importa para el SEO?

El atributo lang cumple tres funciones críticas:

  1. Le dice a Google en qué idioma está escrita la página, lo que influye directamente en para qué búsquedas se muestra y a qué usuarios.
  2. Activa las preferencias de idioma del navegador, lo que afecta a la accesibilidad y a la experiencia del usuario.
  3. Es el primer nivel de consistencia en una estrategia hreflang: si el lang del HTML no coincide con los idiomas declarados en hreflang, Google detecta una contradicción.

Según la documentación oficial de Google Search Central, la ausencia del atributo lang no impide necesariamente que Google indexe la página en el idioma correcto, ya que el motor analiza el contenido. Sin embargo, su presencia es una buena práctica consolidada que refuerza la señal de idioma y reduce la ambigüedad.

Para webs multilingües donde cada URL tiene un idioma distinto, la ausencia o el error en el atributo lang puede hacer que Google muestre la página en resultados del idioma equivocado, hundiendo la visibilidad en ese mercado.

Cómo detectarlo

  • Vista de código fuente: abre cualquier página (Ctrl+U en Chrome) y busca la etiqueta de apertura <html. Verifica que incluye lang="..." con un código válido.
  • Screaming Frog: en la pestaña “Custom” → “Custom Extraction”, configura un extractor con el XPath //html/@lang para extraer el atributo lang de todas las páginas rastreadas y exportarlo a CSV.
  • SEOmator: la regla i18n-lang-attribute detecta automáticamente páginas sin atributo lang o con valores inválidos en cualquier crawl.
  • Validador del W3C: validator.w3.org señala la ausencia del atributo lang como advertencia.

Cómo corregirlo

  1. Identifica el sistema de plantillas o CMS que genera el <html> de tu web.
  2. Añade el atributo lang con el código BCP-47 correspondiente al idioma principal de cada versión de la web.
  3. En webs Astro, WordPress, Next.js u otros frameworks, este atributo suele configurarse en el layout principal o en el componente raíz del documento.
  4. Verifica que el código de idioma es válido consultando el registro oficial de subetiquetas de idioma de la IANA.
  5. Si tienes páginas en varios idiomas bajo el mismo dominio, asegúrate de que cada template usa el lang correcto para su idioma.

Ejemplo en Astro:

<!-- src/layouts/Layout.astro -->
<html lang="es-ES">
  <head>...</head>
  <body>...</body>
</html>

Ejemplo en Next.js (next.config.js):

module.exports = {
  i18n: {
    locales: ['es-ES', 'en-US', 'fr-FR'],
    defaultLocale: 'es-ES',
  },
}

Regla 2: Presencia y validez del hreflang

Severidad: ⚠️ Aviso (obligatorio para webs multilingües)

¿Qué es?

El hreflang es una etiqueta HTML (o entrada en sitemap XML, o cabecera HTTP) que le indica a Google qué versiones alternativas de una página existen para distintos idiomas o regiones. Cada anotación declara: “para usuarios que hablan X idioma (o están en X país), la versión correcta de esta página es esta URL”.

<!-- ✅ Correcto: set completo de hreflang en <head> -->
<link rel="alternate" hreflang="es-ES" href="https://ejemplo.com/es/" />
<link rel="alternate" hreflang="es-MX" href="https://ejemplo.com/es-mx/" />
<link rel="alternate" hreflang="en-US" href="https://ejemplo.com/en/" />
<link rel="alternate" hreflang="x-default" href="https://ejemplo.com/" />

<!-- ❌ Incorrecto: código de idioma inválido -->
<link rel="alternate" hreflang="español" href="https://ejemplo.com/es/" />

<!-- ❌ Incorrecto: falta x-default en webs que lo necesitan -->
<link rel="alternate" hreflang="es" href="https://ejemplo.com/es/" />
<link rel="alternate" hreflang="en" href="https://ejemplo.com/en/" />

Los códigos válidos son etiquetas BCP-47: es, es-ES, es-MX, en, en-US, en-GB, fr, de, pt-BR, etc. El valor especial x-default señala la versión fallback para usuarios sin versión de idioma específica.

¿Por qué importa para el SEO?

El hreflang resuelve uno de los problemas más graves del SEO internacional: el contenido duplicado entre versiones de idioma o región. Sin hreflang, Google puede:

  • Decidir cuál versión indexar de forma arbitraria, ignorando las demás.
  • Mostrar la versión en inglés a usuarios hispanohablantes y viceversa.
  • Penalizar las páginas por contenido duplicado cuando el texto es muy similar entre versiones regionales (por ejemplo, es-ES y es-MX).

Además, el hreflang bien implementado mejora la experiencia del usuario al recibir los resultados de búsqueda en su idioma y región correctos, lo que se traduce en menor tasa de rebote y mayor conversión.

Cómo detectarlo

  • Google Search Console: en “Mejoras” → “Internacional” puedes ver errores de hreflang detectados por Google en tu sitio.
  • Screaming Frog: la pestaña “Hreflang” muestra todas las anotaciones encontradas, sus URLs de destino y si están bien formadas.
  • SEOmator: la regla i18n-hreflang audita presencia, formato y validez de los códigos de idioma en todas las páginas rastreadas.
  • Ahrefs Site Audit: incluye un módulo específico de hreflang con todos los errores categorizados.

Cómo corregirlo

  1. Define la arquitectura de idiomas/regiones de tu web: qué idiomas tienes, bajo qué URLs, y si necesitas subdirectorios (/es/), subdominios (es.ejemplo.com) o dominios separados (ejemplo.es).
  2. Para cada página, implementa un set completo de etiquetas hreflang en el <head>, incluyendo una entrada que apunte a sí misma.
  3. Usa siempre x-default si tienes una versión fallback o una página de selección de idioma.
  4. Valida los códigos con la herramienta de validación de hreflang de Aleyda Solis antes de publicar.

Ejemplo de set correcto con autorreferencia:

<!-- En https://ejemplo.com/es/pagina/ -->
<link rel="alternate" hreflang="es-ES" href="https://ejemplo.com/es/pagina/" />
<link rel="alternate" hreflang="en-US" href="https://ejemplo.com/en/page/" />
<link rel="alternate" hreflang="x-default" href="https://ejemplo.com/en/page/" />

Severidad: ❌ Fallo crítico

¿Qué es?

Esta es la regla más incumplida en toda la internacionalización SEO. Google exige que el hreflang sea bidireccional: si la página A indica que la página B es su alternativa en inglés, entonces la página B debe indicar que la página A es su alternativa en español. Sin este enlace de retorno (return link), Google considera que el set de hreflang está roto y lo ignora.

<!-- Página A: https://ejemplo.com/es/pagina/ -->
<link rel="alternate" hreflang="es-ES" href="https://ejemplo.com/es/pagina/" />
<link rel="alternate" hreflang="en-US" href="https://ejemplo.com/en/page/" />

<!-- ✅ Página B CORRECTA: https://ejemplo.com/en/page/ -->
<!-- Tiene return link apuntando de vuelta a página A -->
<link rel="alternate" hreflang="en-US" href="https://ejemplo.com/en/page/" />
<link rel="alternate" hreflang="es-ES" href="https://ejemplo.com/es/pagina/" />

<!-- ❌ Página B INCORRECTA: https://ejemplo.com/en/page/ -->
<!-- No tiene referencia a la página en español -->
<link rel="alternate" hreflang="en-US" href="https://ejemplo.com/en/page/" />

¿Por qué importa para el SEO?

Google lo explica con claridad en su guía de hreflang: el motor valida los sets de hreflang comprobando que todas las páginas referenciadas se referencian mutuamente. Si una página del set no devuelve el enlace, Google asume que el set es inconsistente y no procesa la señal.

El resultado práctico es que los errores de return links hacen que Google muestre páginas en idiomas erróneos aunque hayas implementado hreflang en tu web. Este error pasa desapercibido en muchos proyectos porque la página “parece bien configurada” si solo miras una de las versiones.

El error es especialmente frecuente cuando:

  • Se añaden nuevas páginas en un idioma sin actualizar las páginas de los otros idiomas.
  • El CMS genera hreflang dinámicamente pero solo para las páginas que existen en todos los idiomas.
  • Un redactor publica una entrada del blog solo en español y no en inglés, dejando la versión española sin return link posible.

Cómo detectarlo

  • Screaming Frog: en la pestaña “Hreflang” → “Issues” verás una categoría específica “Missing Return Link” con todas las URLs afectadas.
  • SEOmator: la regla i18n-hreflang-return-links detecta y reporta exactamente qué páginas tienen return links rotos o ausentes.
  • Google Search Console: en el informe de cobertura, busca el error “La página está en hreflang pero el idioma de la página no se puede determinar”.
  • Validación manual: accede a la URL de destino referenciada en el hreflang y comprueba que su <head> contiene una etiqueta hreflang que apunta de vuelta a la página original.

Cómo corregirlo

  1. Haz un crawl completo con Screaming Frog o SEOmator para extraer todos los sets de hreflang.
  2. Exporta los datos a una hoja de cálculo y cruza las URLs de origen con las URLs de destino para identificar qué pares no son recíprocos.
  3. Añade las etiquetas hreflang faltantes en las páginas de destino que no tienen return links.
  4. Si usas un CMS, revisa si la lógica de generación de hreflang considera solo las páginas que existen en todos los idiomas, o si genera referencias a páginas que no tienen traducción.
  5. Establece un proceso editorial: cuando se publique contenido solo en un idioma, o bien se crea la traducción antes de publicar, o bien no se añade hreflang hasta que exista la versión en el otro idioma.

Regla 4: Hreflang apuntando a páginas noindex

Severidad: ❌ Fallo crítico

¿Qué es?

Esta regla detecta una contradicción lógica: tienes una etiqueta hreflang que apunta a una URL que tiene la directiva noindex. Estás diciéndole simultáneamente dos cosas incompatibles a Google: “esta es la página en inglés para tus usuarios angloparlantes” y “no indexes esta página”.

<!-- ❌ Incorrecto: página A apunta a página B en hreflang -->
<!-- Página A: https://ejemplo.com/es/ -->
<link rel="alternate" hreflang="en" href="https://ejemplo.com/en/" />

<!-- Página B: https://ejemplo.com/en/ -->
<!-- Tiene noindex en su <head> -->
<meta name="robots" content="noindex, follow" />

¿Por qué importa para el SEO?

Google no puede indexar una página con noindex, por lo que la anotación hreflang que apunta a ella resulta inútil: el motor no puede mostrar esa URL en los resultados de búsqueda. En la práctica, Google ignorará esa entrada del set de hreflang, lo que significa que los usuarios del idioma correspondiente seguirán viendo la versión por defecto (o ninguna versión específica para su idioma).

Este error aparece con frecuencia en situaciones como:

  • Páginas en fase de desarrollo que se marcan con noindex temporalmente pero se referencian en hreflang antes de estar listas.
  • Versiones regionales que se despublican sin eliminar las referencias hreflang en el resto del set.
  • Configuraciones automáticas de hreflang en CMS que no comprueban el estado de indexabilidad de las páginas referenciadas.

Cómo detectarlo

  • Screaming Frog: exporta todas las URLs destino de los hreflang y cruza con el estado de indexabilidad (columna “Indexability”). Filtra las que tienen noindex.
  • SEOmator: la regla i18n-hreflang-to-noindex detecta automáticamente este conflicto sin necesidad de cruce manual.
  • Google Search Console: el informe de cobertura puede mostrar páginas “Excluidas por etiqueta noindex” que a la vez aparecen referenciadas en hreflang.

Cómo corregirlo

  1. Decide si la página referenciada en hreflang debe estar indexada o no.
  2. Si debe indexarse: elimina la directiva noindex de esa página.
  3. Si no debe indexarse (por ejemplo, está en desarrollo o es una página de pago sin alternativa pública): elimina la referencia hreflang que apunta a esa URL y actualiza el return link en las otras páginas del set.
  4. Implementa una validación automatizada en tu pipeline de publicación que impida añadir una URL con noindex a un set de hreflang.

Regla 5: Hreflang apuntando a URLs no canónicas

Severidad: ❌ Fallo crítico

¿Qué es?

El hreflang debe apuntar siempre a la URL canónica de cada página. Si una URL tiene definida una canonical que apunta a otra URL, el hreflang debe usar la URL canónica final, no la URL que tiene el rel=canonical apuntando a otra.

<!-- ❌ Incorrecto: hreflang apunta a URL no canónica -->
<!-- La URL /es/pagina?source=email tiene una canonical que apunta a /es/pagina/ -->
<link rel="alternate" hreflang="es" href="https://ejemplo.com/es/pagina?source=email" />

<!-- ✅ Correcto: hreflang apunta a la URL canónica -->
<link rel="alternate" hreflang="es" href="https://ejemplo.com/es/pagina/" />

¿Por qué importa para el SEO?

Cuando el hreflang apunta a una URL no canónica, Google enfrenta una señal contradictoria: por un lado, el rel=canonical le dice que consolide el contenido hacia la URL canónica; por otro, el hreflang le indica que use la URL no canónica como alternativa de idioma. Google no puede satisfacer ambas instrucciones a la vez.

En la práctica, el motor tenderá a ignorar el hreflang o a procesarlo con menor confianza. Los casos más comunes donde ocurre este error son:

  • URLs con parámetros UTM o de tracking (?utm_source=newsletter): si se referencian en hreflang sin eliminar los parámetros.
  • Páginas paginadas (/es/blog/page/2/): si la paginación tiene canonical apuntando a la primera página y el hreflang usa URLs de páginas 2, 3, etc.
  • Versiones HTTP de una web que ya es HTTPS: si el hreflang todavía usa URLs http://.
  • URLs con y sin trailing slash cuando una de ellas hace canonical a la otra.

Cómo detectarlo

  • Screaming Frog: crawlea las URLs destino del hreflang y compara la columna “Canonical Link Element 1” con la URL rastreada. Si no coinciden, el hreflang apunta a una URL no canónica.
  • SEOmator: la regla i18n-hreflang-to-non-canonical cruza automáticamente los destinos hreflang con sus canonicals.
  • Revisión manual: accede a la URL del hreflang y revisa si en su <head> hay un rel=canonical que apunte a una URL diferente.

Cómo corregirlo

  1. Extrae todas las URLs destino de tus anotaciones hreflang.
  2. Para cada URL, comprueba cuál es su canonical declarada.
  3. Actualiza el hreflang para que use la URL canónica en lugar de la URL no canónica.
  4. Si el problema viene de parámetros UTM, configura Google Search Console para que trate esos parámetros como variantes y asegúrate de que tu hreflang nunca incluye parámetros de tracking.
  5. Establece una URL canónica clara para cada página (con o sin trailing slash, con HTTPS, sin parámetros) y usa esa URL de forma consistente en todo el set de hreflang.

Regla 6: Hreflang apuntando a URLs rotas

Severidad: ❌ Fallo crítico

¿Qué es?

Esta regla detecta etiquetas hreflang que apuntan a URLs que devuelven un error: 404 Not Found, 410 Gone, 500 Internal Server Error u otros códigos de error HTTP. Si la URL referenciada en hreflang no existe o no responde correctamente, Google no puede procesar esa anotación.

<!-- ❌ Incorrecto: la URL en hreflang devuelve 404 -->
<link rel="alternate" hreflang="en" href="https://ejemplo.com/en/old-page/" />
<!-- La página /en/old-page/ fue eliminada y devuelve 404 -->

<!-- ✅ Correcto: actualizar o eliminar la referencia -->
<link rel="alternate" hreflang="en" href="https://ejemplo.com/en/new-page/" />

¿Por qué importa para el SEO?

Una URL rota en el set de hreflang inutiliza la señal de idioma para esa variante. Pero además, si las otras páginas del set tienen return links hacia esa URL rota, el set completo puede considerarse inconsistente por Google, afectando a todas las versiones de idioma, no solo a la que apunta a la URL rota.

Este error es habitual cuando:

  • Se eliminan o reorganizan páginas sin actualizar las referencias hreflang en el resto del site.
  • Se cambia la estructura de URLs en una migración y el hreflang no se actualiza.
  • Una versión de idioma se da de baja pero las otras versiones siguen referenciándola.

Cómo detectarlo

  • Screaming Frog: en la pestaña “Hreflang” → “Issues” verás “Non-200 Hreflang” con las URLs que devuelven error.
  • SEOmator: la regla i18n-hreflang-to-broken reporta directamente todas las URLs hreflang que no responden con 200 OK.
  • Google Search Console: en el informe de cobertura busca errores asociados a URLs referenciadas en hreflang.

Cómo corregirlo

  1. Haz un crawl completo y exporta todas las URLs destino de los hreflang con su código de respuesta HTTP.
  2. Para cada URL con error, decide: ¿la página se ha movido (actualiza el hreflang con la nueva URL) o se ha eliminado definitivamente (elimina la referencia del set de hreflang)?
  3. Si la página se ha movido, asegúrate de que la nueva URL también tiene el return link correspondiente.
  4. Integra la comprobación de URLs hreflang en tu monitorización de errores 404, para detectar estos problemas en tiempo real.

Regla 7: Hreflang apuntando a redirecciones

Severidad: ⚠️ Aviso

¿Qué es?

Esta regla detecta etiquetas hreflang que apuntan a URLs que responden con un código de redirección (301, 302, 307, 308) en lugar de con un 200 OK directo. Aunque Google puede seguir la redirección y llegar a la página final, la recomendación oficial es que el hreflang apunte siempre a la URL final después de todas las redirecciones.

<!-- ❌ No recomendado: hreflang apunta a URL que redirige -->
<link rel="alternate" hreflang="en" href="https://ejemplo.com/en" />
<!-- La URL /en redirige 301 hacia /en/ (con trailing slash) -->

<!-- ✅ Correcto: hreflang apunta directamente a la URL final -->
<link rel="alternate" hreflang="en" href="https://ejemplo.com/en/" />

¿Por qué importa para el SEO?

Aunque Google generalmente sigue las redirecciones, pasar por una redirección antes de llegar a la URL de idioma introduce ambigüedad e ineficiencia. En el caso de cadenas de redirección (A → B → C), el problema se agrava: Google puede no seguir toda la cadena, especialmente si el presupuesto de rastreo del sitio es limitado.

Además, si la redirección es temporal (302), Google puede interpretar que la URL original es la correcta y la URL final es temporal, lo que contradice la intención del hreflang.

Cómo detectarlo

  • Screaming Frog: crawlea las URLs destino del hreflang y filtra las que tienen código de respuesta 3xx.
  • SEOmator: la regla i18n-hreflang-to-redirect identifica estos casos automáticamente.
  • curl: puedes verificar una URL manualmente con curl -I https://ejemplo.com/en para ver el código de respuesta.

Cómo corregirlo

  1. Para cada URL hreflang que redirige, sigue la cadena de redirección hasta la URL final (200 OK).
  2. Actualiza la etiqueta hreflang para que apunte directamente a esa URL final.
  3. Si es posible, corrige la redirección para que la URL original devuelva 200 directamente (especialmente en el caso de trailing slash o HTTP → HTTPS).
  4. Revisa si las URLs hreflang usan siempre HTTPS y el formato final (con o sin trailing slash) para evitar micro-redirecciones.

Regla 8: Declaraciones hreflang en conflicto

Severidad: ❌ Fallo crítico

¿Qué es?

Un conflicto hreflang ocurre cuando una misma página tiene dos o más etiquetas hreflang que declaran el mismo código de idioma pero con URLs diferentes, o cuando distintas páginas del site declaran ser la versión en el mismo idioma sin un mecanismo de desempate claro.

<!-- ❌ Incorrecto: dos declaraciones para el mismo idioma en la misma página -->
<link rel="alternate" hreflang="es" href="https://ejemplo.com/es/" />
<link rel="alternate" hreflang="es" href="https://ejemplo.com/es-alternativo/" />

<!-- ❌ Incorrecto: el mismo hreflang="es" apunta a páginas distintas desde páginas diferentes -->
<!-- Página A declara que la versión en español es /es/pagina-a/ -->
<!-- Página B declara que la versión en español también es /es/pagina-a/ -->
<!-- pero /es/pagina-a/ no referencia ni a A ni a B como alternativa -->

¿Por qué importa para el SEO?

Cuando Google encuentra dos declaraciones para el mismo idioma, no sabe cuál elegir. La respuesta del motor ante esta ambigüedad es ignorar ambas señales o tomar una decisión arbitraria, lo que puede resultar en que se muestre la versión incorrecta a los usuarios o en que ninguna versión de ese idioma aparezca correctamente en los resultados.

Los conflictos hreflang son especialmente difíciles de detectar manualmente porque ocurren de forma distribuida a lo largo del site: hay que comparar los sets de hreflang de múltiples páginas para encontrar las inconsistencias.

Cómo detectarlo

  • Screaming Frog: la pestaña “Hreflang” → “Issues” incluye “Duplicate hreflang” para detectar duplicados en la misma página, y la vista de “Hreflang All” para comparar sets entre páginas.
  • SEOmator: la regla i18n-hreflang-conflicting analiza la coherencia del sistema de hreflang a nivel de site completo.
  • Revisión manual: exporta todos los hreflang a una hoja de cálculo, agrupa por idioma y comprueba que cada código de idioma apunta a una sola URL en cada contexto.

Cómo corregirlo

  1. Audita todos los sets de hreflang del site y extrae los pares (código de idioma, URL destino) de cada página.
  2. Identifica dónde el mismo código de idioma apunta a más de una URL desde la misma página.
  3. Decide cuál es la URL correcta para cada versión de idioma y elimina las referencias duplicadas.
  4. Revisa si el problema viene de una configuración automática del CMS que genera hreflang de forma incorrecta al haber varias páginas con el mismo slug en diferentes idiomas.

Regla 9: Mismatch entre idioma declarado e idioma real

Severidad: ⚠️ Aviso

¿Qué es?

Esta regla detecta páginas donde el idioma declarado en el hreflang (o en el atributo lang) no coincide con el idioma real del contenido de la página. Por ejemplo, tienes hreflang="en" pero el contenido de la página está escrito en español.

<!-- ❌ Incorrecto: hreflang dice inglés pero el contenido es español -->
<link rel="alternate" hreflang="en" href="https://ejemplo.com/en/servicios/" />
<!-- La página en /en/servicios/ contiene texto en español -->

<!-- ✅ Correcto: hreflang coincide con el idioma del contenido -->
<link rel="alternate" hreflang="en" href="https://ejemplo.com/en/services/" />
<!-- La página en /en/services/ contiene texto en inglés -->

¿Por qué importa para el SEO?

Google analiza el idioma del contenido de cada página de forma independiente al idioma declarado en el hreflang. Si detecta una discrepancia, puede:

  • Ignorar la anotación hreflang y determinar el idioma por sí mismo basándose en el contenido.
  • Mostrar la página en los resultados del idioma incorrecto.
  • Reducir la confianza en todas las señales de idioma de ese dominio.

El mismatch ocurre frecuentemente cuando:

  • Se crea la estructura de URLs para un idioma pero el contenido no ha sido traducido todavía.
  • Una página de una versión de idioma contiene bloques de texto en el idioma original sin traducir (como testimonios o fragmentos de otra sección).
  • El sistema de internacionalización del CMS asigna automáticamente el hreflang basándose en la estructura de URLs, sin verificar el idioma del contenido.

Cómo detectarlo

  • Google Search Console: en el informe de Mejoras → Internacional, busca el error “El idioma de la página no puede determinarse” o “Hreflang para el idioma especificado, pero el idioma de la página no coincide”.
  • SEOmator: la regla i18n-hreflang-lang-mismatch compara el idioma del contenido detectado con el idioma declarado en hreflang.
  • Revisión manual: accede a las URLs referenciadas en hreflang y comprueba visualmente que el contenido está en el idioma declarado.
  • DeepL / LanguageTool: puedes usar herramientas de detección de idioma para comprobar programáticamente el idioma de cada página.

Cómo corregirlo

  1. Identifica todas las páginas donde el idioma del contenido no coincide con el hreflang declarado.
  2. Para cada página afectada, decide: ¿el contenido debe traducirse (corriges el contenido) o el hreflang está mal asignado (corriges el código de idioma)?
  3. Si la página no está traducida y no lo estará pronto, elimina la referencia hreflang hasta que lo esté.
  4. Implementa una validación en tu proceso de publicación que compruebe que las nuevas páginas de idioma tienen el contenido en el idioma correcto antes de añadir el hreflang.

Regla 10: Uso de múltiples métodos de implementación hreflang

Severidad: ⚠️ Aviso

¿Qué es?

Existen tres métodos válidos para implementar hreflang según Google:

  1. Etiquetas <link> en el <head> del HTML (el más habitual).
  2. Cabeceras HTTP Link: (para PDFs y otros archivos no HTML).
  3. Sitemap XML con elementos <xhtml:link>.

Esta regla detecta cuando se usa más de un método simultáneamente para la misma URL, lo que puede generar inconsistencias si los tres métodos no declaran exactamente el mismo set de anotaciones.

<!-- ❌ Problemático: hreflang en <head> Y en el sitemap para las mismas URLs -->
<!-- En el <head> de la página: -->
<link rel="alternate" hreflang="es" href="https://ejemplo.com/es/" />
<link rel="alternate" hreflang="en" href="https://ejemplo.com/en/" />

<!-- Y además en sitemap.xml: -->
<!--
<url>
  <loc>https://ejemplo.com/es/</loc>
  <xhtml:link rel="alternate" hreflang="es" href="https://ejemplo.com/es/"/>
  <xhtml:link rel="alternate" hreflang="en" href="https://ejemplo.com/en/"/>
</url>
-->

¿Por qué importa para el SEO?

Si los dos métodos no están perfectamente sincronizados, pueden declarar sets de hreflang diferentes para la misma URL. Google se encontrará con señales contradictorias: el HTML dice una cosa y el sitemap dice otra. El motor puede confundirse sobre cuál fuente tiene prioridad.

Además, mantener dos métodos en paralelo duplica el trabajo de mantenimiento: cualquier cambio en la arquitectura de idiomas debe actualizarse en ambos sitios, y es fácil que queden desincronizados.

Cómo detectarlo

  • Screaming Frog: busca en la pestaña “Hreflang” si las anotaciones vienen de múltiples fuentes (HTML + Sitemap).
  • SEOmator: la regla i18n-hreflang-multiple-methods detecta URLs que tienen hreflang implementado en más de un método.
  • Revisión manual del sitemap: descarga tu sitemap.xml y comprueba si contiene entradas <xhtml:link>. Si también tienes hreflang en el <head>, estás usando dos métodos.

Cómo corregirlo

  1. Decide cuál es el método principal de implementación de hreflang para tu sitio.
    • <head> HTML: recomendado para webs con control total del HTML y número de páginas manejable.
    • Sitemap XML: recomendado para sitios muy grandes donde modificar el HTML de cada página es costoso.
    • HTTP headers: solo para recursos no HTML (PDFs, imágenes, etc.).
  2. Elimina las anotaciones hreflang del método que has decidido no usar.
  3. Verifica que el método elegido cubre todas las páginas de forma completa y consistente.
  4. Documenta en tu guía técnica de SEO qué método usa el proyecto para evitar que futuros desarrolladores añadan hreflang por otro método.

Resumen de las 10 reglas

#ReglaSeveridadImpacto principal
1Atributo lang en <html>❌ CríticoIdioma mal clasificado por Google
2Presencia y validez del hreflang⚠️ AvisoDuplicado entre versiones idioma/región
3Return links recíprocos❌ CríticoSet hreflang ignorado por completo
4Hreflang a páginas noindex❌ CríticoSeñal de idioma inútil + contradicción
5Hreflang a URLs no canónicas❌ CríticoConflicto canonical vs hreflang
6Hreflang a URLs rotas❌ CríticoSet hreflang inconsistente
7Hreflang a redirecciones⚠️ AvisoAmbigüedad en URL final de idioma
8Declaraciones hreflang conflictivas❌ CríticoGoogle no sabe cuál versión priorizar
9Mismatch idioma declarado vs real⚠️ AvisoPágina en idioma incorrecto en SERP
10Múltiples métodos hreflang⚠️ AvisoSeñales contradictorias entre métodos

Infografía de las 10 reglas de internacionalización SEO: tabla de severidad, fallos críticos de hreflang, 3 métodos válidos de implementación y checklist de auditoría

Guarda esta infografía como referencia rápida: tienes las 10 reglas con su severidad, los fallos críticos más habituales en hreflang y el checklist completo antes de publicar o migrar cualquier web multilingüe.

Checklist de internacionalización SEO

Usa esta lista antes de publicar cualquier web multilingüe o multirregional y después de cada migración o cambio estructural:

  • Regla 1: Todas las páginas tienen el atributo lang en la etiqueta <html> con un código BCP-47 válido.
  • Regla 2: Todas las páginas multilingüe tienen un set completo de etiquetas hreflang con códigos de idioma válidos e incluyen x-default cuando aplica.
  • Regla 3: Cada URL referenciada en un set de hreflang incluye a su vez etiquetas hreflang que apuntan de vuelta a todas las páginas del set (return links recíprocos).
  • Regla 4: Ninguna URL referenciada en hreflang tiene la directiva noindex.
  • Regla 5: Todas las URLs referenciadas en hreflang son las URLs canónicas (no tienen rel=canonical apuntando a otra URL, ni incluyen parámetros de tracking).
  • Regla 6: Todas las URLs referenciadas en hreflang devuelven código de respuesta HTTP 200 (sin errores 404, 410, 500).
  • Regla 7: Todas las URLs referenciadas en hreflang devuelven 200 directamente (sin pasar por redirecciones 301/302).
  • Regla 8: No hay duplicados de hreflang para el mismo código de idioma dentro de una misma página ni sets contradictorios entre páginas del site.
  • Regla 9: El idioma del contenido de cada página coincide con el código de idioma declarado en su hreflang.
  • Regla 10: El site usa un único método de implementación de hreflang (HTML <head>, HTTP headers o sitemap XML), no una combinación de ellos.

Preguntas frecuentes sobre hreflang y atributo lang

¿Es obligatorio implementar hreflang si mi web está solo en español?

No. El hreflang es necesario únicamente cuando tienes versiones de una misma web en diferentes idiomas o dirigidas a diferentes regiones. Si tu web está exclusivamente en español y no tienes versión en inglés u otros idiomas, no necesitas hreflang. Lo que sí debes tener siempre es el atributo lang="es" (o lang="es-ES") en la etiqueta <html> de todas tus páginas, ya que es una buena práctica universal independientemente del número de idiomas.

¿Cuál es la diferencia entre hreflang="es" y hreflang="es-ES"?

hreflang="es" indica que la página está en español para cualquier usuario hispanohablante, independientemente de su país. hreflang="es-ES" indica que la página está específicamente en español de España. Si tienes una sola versión en español para todos los hispanohablantes, usa hreflang="es". Si tienes versiones distintas para España y México (por ejemplo, con precios o contenido diferente), usa hreflang="es-ES" y hreflang="es-MX" respectivamente. En ese caso, añade también x-default para indicar cuál mostrar a usuarios de otros países o sin preferencia de idioma.

¿Qué pasa si Google ignora mis etiquetas hreflang?

Google puede ignorar el hreflang cuando detecta inconsistencias en el set: return links faltantes, URLs rotas, mismatches de idioma o conflictos entre declaraciones. También puede ignorarlo si determina por sí mismo que el idioma del contenido es diferente al declarado. Si después de corregir todos los errores técnicos de las 10 reglas de esta guía el problema persiste, comprueba en Google Search Console → Mejoras → Internacional si hay errores específicos reportados. Google tarda entre días y semanas en reprocesar los cambios en hreflang, así que verifica después de esperar al menos dos semanas.

¿Puedo usar hreflang en el sitemap en lugar de en el HTML?

Sí, el método de sitemap XML es completamente válido según Google y es especialmente adecuado para sitios con miles de páginas donde modificar el HTML de cada una sería muy costoso. La sintaxis es:

<url>
  <loc>https://ejemplo.com/es/</loc>
  <xhtml:link
    rel="alternate"
    hreflang="es-ES"
    href="https://ejemplo.com/es/"/>
  <xhtml:link
    rel="alternate"
    hreflang="en-US"
    href="https://ejemplo.com/en/"/>
</url>

El requisito de return links aplica igualmente: si declaras la versión en inglés en la entrada del sitemap para la versión en español, también debes declarar la versión en español en la entrada para la versión en inglés. La única restricción es no mezclar este método con etiquetas hreflang en el HTML para las mismas páginas (Regla 10).

¿Con qué herramientas puedo validar un set de hreflang completo antes de publicar?

Para una validación rápida antes de publicar, combina estas tres herramientas: (1) el Generador y validador de hreflang de Aleyda Solis para comprobar la sintaxis y la reciprocidad de un set pequeño; (2) Screaming Frog en modo crawl para detectar todos los errores del site de una vez (return links, URLs rotas, redirecciones, etc.); y (3) Google Search Console para monitorizar en producción y recibir alertas cuando Google detecte problemas en el procesamiento del hreflang. Para sitios grandes o auditorías periódicas, SEOmator automatiza las 10 reglas de esta guía en un único informe con las URLs afectadas y las instrucciones de corrección.

La internacionalización SEO es uno de esos terrenos técnicos donde los errores se acumulan en silencio y el impacto en el posicionamiento puede ser devastador si no se audita con regularidad. Dominar estas 10 reglas es la ruta más directa para que Google entienda exactamente qué versión de tu web mostrar a cada usuario, en cada idioma y en cada región.

Si quieres que revisemos juntos la internacionalización de tu web y preparemos un plan de acción a medida, cuéntanos tu proyecto. Trazaremos la ruta desde el primer diagnóstico hasta la implementación, paso a paso. Sin compromiso. Contacta con nuestro equipo →

/ Servicios Escala14

¿Quieres aplicar esto a tu negocio?

Si prefieres que lo apliquemos por ti, somos una agencia SEO, diseño web y branding con sede en Almería y Murcia. Analizamos tu web y trazamos juntos la ruta hacia las primeras posiciones en Google.

/ Volver al campamento

Más notas que se quedan.

Más de 20 artículos publicados sobre SEO, diseño web y marketing digital, con datos reales y reglas auditables.