Tu implementación de hreflang probablemente está rota. El error no suele aparecer en tu panel de tráfico. Aparece meses después, cuando la versión en español de un artículo posiciona en el puesto 4 en España, la versión en alemán no aparece en absoluto en Alemania, y la versión en francés posiciona para consultas en inglés en Canadá. La solución rara vez es un cambio de código. Casi siempre es una incomprensión estructural de qué es hreflang, dónde va y qué regla de validación se rompió.
Esta guía te muestra los tres lugares donde puede vivir el hreflang (HTML head, sitemap XML, cabeceras HTTP), las reglas que Google realmente aplica, los cinco errores que causan la mayoría de los fallos de posicionamiento y lo que Auto-Multilingual Delivery de Kamaan emite automáticamente para que no tengas que pensar en nada de esto.
Conclusiones rápidas
- El hreflang es una señal de relación, no una señal de ranking. Le dice a Google qué versión mostrar en qué mercado. No te sube en la SERP.
- Existen tres métodos de implementación: etiquetas link HTML en
<head>, anotacionesxhtml:linken el sitemap XML y cabeceras HTTPLink. Elige uno y mantente con él. Mezclarlos es la causa más común de errores de validación. - Cada anotación hreflang debe ser recíproca. La Página A apunta a la Página B, la Página B apunta a la Página A. Si fallas en esto, Google ignora ambas anotaciones en silencio.
- El valor
x-defaultle dice a Google qué servir cuando ninguna versión de idioma coincide. Sin él, Google adivina. - Las URL de hreflang deben devolver HTTP 200. Una redirección 301 o un 404 rompe todo el clúster de anotaciones, no solo la página rota.
![]()
Qué hace realmente el hreflang (y qué no hace)
El hreflang es una etiqueta que le dice a los motores de búsqueda: "esta página existe en otro idioma o región en esta URL." Ese es todo el alcance. No le dice a Google que una página es más importante. No mejora el ranking. No reemplaza al sitemap. No sustituye al contenido traducido.
Lo que el hreflang sí hace es resolver un problema específico: cuando Google ha rastreado cinco versiones de idioma del mismo artículo, ¿cuál debe mostrar para una búsqueda en Madrid frente a Berlín frente a Lyon? Sin hreflang, Google adivina basándose en señales como el idioma del contenido de la página, la IP del usuario y el TLD del dominio. Con hreflang, Google tiene un mapa definitivo.
El mecanismo es una declaración de relación. Cada página en un clúster de idiomas hace referencia a cada otra página en el clúster, incluyéndose a sí misma. Si tu blog tiene versiones en inglés, español, alemán, francés e italiano de un artículo, cada una de esas cinco páginas declara las cinco URL con sus códigos de idioma.
El formato es preciso. Los códigos de idioma siguen ISO 639-1 (dos letras, minúsculas): en, es, de, fr, it. Los códigos de región son opcionales y siguen ISO 3166-1 Alpha 2 (dos letras, mayúsculas): en-US, en-GB, es-MX, es-ES. Los combinas con un guion: en-US, de-AT, fr-CA. No hay soporte para códigos de tres letras. No hay separador de guion bajo. No hay anidamiento.
Los tres métodos de implementación comparados
Puedes poner anotaciones hreflang en uno de tres lugares. La elección correcta depende de cuántos idiomas sirves y de si controlas la respuesta del servidor.
El siguiente gráfico muestra los compromisos de cada enfoque para que elijas el correcto para tu blog.

| Método | Dónde vive | Mejor para | Qué lo rompe |
|---|---|---|---|
Etiquetas HTML <link> |
En <head> de cada página |
Sitios con 5 idiomas o menos | El peso de la página crece con cada idioma. Fácil olvidar una. |
| Sitemap XML | En xhtml:link dentro de cada <url> |
Sitios con 6+ idiomas, 100+ páginas | Disciplina del sitemap requerida. Latencia de re-rastreo. |
Cabeceras HTTP Link |
En cabeceras de respuesta del servidor | Archivos no-HTML (PDF, JSON, imágenes) | Config del servidor requerida. Las capas CDN eliminan cabeceras. |
Etiquetas HTML <link> van en el <head> de cada página del clúster:
<link rel="alternate" hreflang="en" href="https://example.com/blog/article" />
<link rel="alternate" hreflang="es" href="https://example.com/es/blog/article" />
<link rel="alternate" hreflang="de" href="https://example.com/de/blog/article" />
<link rel="alternate" hreflang="x-default" href="https://example.com/blog/article" />
Fáciles de inspeccionar con Ver Código Fuente. La desventaja aparece pasando los cinco idiomas: el peso HTML sube con cada adición.
Las anotaciones de sitemap XML trasladan el mapa hreflang al sitemap como elementos xhtml:link dentro de cada <url>:
<url>
<loc>https://example.com/blog/article</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/blog/article" />
<xhtml:link rel="alternate" hreflang="es" href="https://example.com/es/blog/article" />
</url>
Es la opción correcta pasando los cinco idiomas o las cien páginas. Centralizado, auditable, HTML limpio. El coste es la latencia de re-rastreo.
Las cabeceras HTTP Link son la opción correcta solo para archivos no-HTML (PDFs, endpoints JSON). El servidor emite una cabecera Link. Requiere config del servidor y es frágil entre capas CDN que eliminan cabeceras personalizadas. No la uses para páginas HTML cuando exista alternativa.
Los cinco errores que matan rankings
La mayoría de fallos de hreflang caen en una de cinco categorías. Cada uno se arregla en menos de una hora una vez que sabes qué buscar.
Error uno: faltan etiquetas de retorno. Cada declaración hreflang debe ser recíproca. Si tu artículo en inglés declara la versión en español en /es/blog/article, el artículo en español debe declarar la versión en inglés en /blog/article. Si falta cualquiera de las dos direcciones, Google llama a esto un error "no return tag" en Search Console e ignora ambas anotaciones. Esta es la regla de validación más fallada en SEO internacional, y suele surgir meses después de un despliegue parcial de traducciones, cuando se publicó una versión de idioma y se olvidaron las demás.
Error dos: códigos de idioma o región incorrectos. Los códigos son precisos e implacables. Usa uk para ucraniano, nunca ua. Usa zh-Hans para chino simplificado, no zh-CN. Los códigos de tres letras no funcionan. Un fallo silencioso común: escribir en-UK en lugar de en-GB (el Reino Unido es GB en ISO 3166-1, no UK).
Error tres: falta x-default. El valor x-default le dice a los motores de búsqueda qué página servir cuando ninguna versión de idioma coincide con el usuario. Sin él, Google decide por su cuenta, normalmente sirviendo la versión que más ha rastreado. Incluye siempre un x-default apuntando a tu versión principal. Para un blog cuyo idioma principal es el inglés, fija x-default a la URL en inglés.
Error cuatro: hreflang apuntando a una URL no-200. Cada URL en tu clúster de anotaciones debe devolver HTTP 200. Una redirección 301, un 404 o un 500 rompe todo el conjunto de anotaciones. Si rediriges /de/blog/old-slug a /de/blog/new-slug, tu hreflang debe apuntar al nuevo slug, no a la redirección. Si la traducción al alemán aún no existe, no declares hreflang para alemán. Un puntero roto es peor que uno ausente.
Error cinco: conflicto con la etiqueta canonical. Si tu página en español tiene hreflang hacia https://example.com/es/blog/article pero esa página tiene un <link rel="canonical"> apuntando a la URL en inglés, Google sigue al canonical e ignora el hreflang. Cada página en un clúster hreflang debe auto-canonicalizarse. La página en español canonicaliza a sí misma. La página en alemán canonicaliza a sí misma. Los canonicals entre idiomas anulan el hreflang en silencio.
Cómo verificar tu implementación
Tres comprobaciones cubren la mayoría de modos de fallo.
Usa Google Search Console. Ve a herramientas e informes heredados, luego a Segmentación internacional. El informe "Sin etiquetas de retorno" lista cada página donde se rompió la reciprocidad. El informe "Código de idioma desconocido" lista cada código inválido. Estos dos informes surfacean la mayoría de los errores reales de hreflang.
Rastrea con una herramienta. Screaming Frog, Sitebulb o Ahrefs Site Audit validan clústeres de hreflang a escala. Rastrea tu sitio completo, filtra por errores de hreflang y verás cada clúster con etiqueta de retorno ausente, código incorrecto o destino no-200. Una comprobación puntual de cinco artículos no es suficiente. Un blog multilingüe suele tener cientos de clústeres.
Prueba las cabeceras y etiquetas directamente. curl -I https://example.com/blog/article muestra las cabeceras de respuesta, incluida cualquier cabecera Link. Ver Código Fuente en la página muestra las etiquetas <link>. El sitemap XML está a una URL de distancia. Si no puedes encontrar tu hreflang en ninguno de esos tres lugares, no tienes hreflang implementado, sin importar lo que afirme el panel de tu CMS.
Lo que Kamaan emite automáticamente
La entrega multilingüe automática de Kamaan se ocupa de la implementación de hreflang por ti. Cuando publicas un artículo en inglés, Kamaan auto-crea las versiones en español, alemán, francés e italiano, da a cada una un slug localizado y emite el conjunto completo y recíproco de anotaciones hreflang en cada versión. Los valores por defecto son correctos desde el principio.
En concreto, Kamaan emite etiquetas HTML <link> en el <head> de cada página de blog, con el conjunto completo de alternativas de idioma, incluyendo x-default apuntando a la versión en inglés. Las URL traducidas siguen el patrón /{lang}/blog/{slug} (prefijo de idioma antes de blog), que coincide con la recomendación de Google para sitios multilingües basados en subcarpetas. Cada URL se auto-canonicaliza. La reciprocidad está garantizada porque la misma acción de publicación crea las cinco versiones en una transacción.
Para blogs más grandes con muchos idiomas, Kamaan también emite el mapa hreflang en el sitemap XML como anotaciones xhtml:link. Obtienes ambos métodos gratis, que es la redundancia que la documentación de Google recomienda para blogs que operan a escala.
El punto no es que Kamaan haga algo que nadie más pueda hacer. El punto es que dejas de gastar tiempo de ingeniería en hreflang. Auto-Multilingual Delivery publica versiones en español, alemán, francés e italiano de cada artículo en el momento en que pulsas publicar en inglés, con hreflang válido en cada una, y cero pasos extra.
Una lista práctica de configuración
Antes de publicar un blog multilingüe, repasa esta lista una vez. Después automatízala (o usa un CMS que la maneje por ti).
- Elige un método de implementación. Etiquetas HTML para 5 idiomas o menos. Sitemap XML para 6 o más. Cabeceras HTTP solo para no-HTML.
- Confirma que cada página en cada idioma tiene una anotación
x-defaultapuntando a la versión del idioma principal. - Confirma la reciprocidad. Cada página en el clúster hace referencia a cada otra página, incluyéndose a sí misma.
- Confirma que cada URL en cada anotación devuelve HTTP 200 (sin redirecciones, sin 404).
- Confirma que cada página en el clúster tiene un canonical auto-referencial, no un canonical entre idiomas.
- Envía el sitemap (o espera al re-rastreo).
- Revisa Segmentación internacional de Search Console después de 7-14 días para detectar errores de etiqueta de retorno.
Si tu CMS automatiza alguno de estos pasos, tienes una cosa menos que romper. Si tu CMS no hace ninguna de estas cosas, lo estás haciendo manualmente y eventualmente te equivocarás en uno.
Escenarios del mundo real
Un fundador que ejecuta una herramienta SaaS de facturación B2B publica un artículo sobre su nueva funcionalidad de facturación recurrente. En diez minutos, Kamaan ha auto-publicado versiones en español, alemán, francés e italiano en /es/blog/, /de/blog/, /fr/blog/ y /it/blog/, cada una con el bloque hreflang recíproco completo emitido en HTML <head> y reflejado en el sitemap XML. El informe de Segmentación internacional de Google Search Console muestra cero errores "no return tag". El fundador no escribió una línea de configuración de hreflang.
Un desarrollador solitario tenía un blog Next.js con hreflang manual en <head> para tres idiomas. Añadir un cuarto idioma rompió la reciprocidad en el 60 por ciento de los artículos antiguos porque la nueva etiqueta solo se añadió a publicaciones nuevas. La migración a Kamaan también manejó los artículos históricos: la siguiente publicación disparó una re-emisión completa del mapa hreflang para cada artículo publicado en cada idioma. El conteo de errores en Search Console cayó de 412 a 0 dentro de un ciclo de re-rastreo.
FAQ
¿Necesito hreflang si solo tengo un idioma?
No. El hreflang es una señal de relación entre variantes de idioma o región. Con un solo idioma, no hay nada que relacionar. Sáltatelo.
¿Las etiquetas hreflang ayudan al SEO directamente?
No, no en el sentido de ranking. El hreflang no te sube en la SERP. Lo que sí hace es asegurar que la versión correcta de tu página posicione en el mercado correcto. Eso puede traducirse en ganancias de tráfico, pero es una mejora de enrutamiento, no un impulso de ranking.
¿Puedo usar hreflang en una single-page app con enrutamiento del lado cliente?
Sí, pero con matices. La anotación hreflang debe estar en la respuesta HTML inicial, no inyectada después de que se ejecute el JavaScript. Googlebot lee la respuesta inicial. Si tus etiquetas <link rel="alternate"> solo aparecen después de la hidratación del cliente, Google no las verá. Renderiza el head en el servidor o usa el método del sitemap.
¿Cuál es la diferencia entre x-default y en?
x-default es un respaldo para cuando ningún idioma coincide con el usuario. en apunta específicamente a buscadores de habla inglesa. Necesitas ambos. x-default no es un sustituto de en, y en no es un sustituto de x-default.
¿Cuánto tarda en surtir efecto un cambio de hreflang?
Google tiene que re-rastrear cada página del clúster, lo que puede tardar días o semanas dependiendo de tu presupuesto de rastreo. El informe de Segmentación internacional de Search Console se actualiza con su propio calendario y puede retrasarse 7-14 días incluso después de que Google haya re-rastreado.
¿Por qué funciona mi hreflang basado en sitemap pero no el hreflang HTML?
Dos causas comunes. O las etiquetas HTML se inyectan del lado cliente después de que Googlebot ha terminado de leer la página, o tienes un conflicto canonical en el que la página tiene hreflang hacia una URL pero canonicaliza a otra. Comprueba ambas.
Relacionados en Kamaan
- How to Build a Multilingual Blog: A Complete Guide for SaaS Products. La página pilar padre cubre la configuración multilingüe completa desde la estructura de URL hasta el flujo de traducción.
- Multilingual SEO: What It Is, Why It Matters, and How to Get It Right. Dónde encaja el hreflang en el panorama más amplio del SEO internacional.
- What Is a Headless CMS: A Plain-English Guide for SaaS Teams. El contexto arquitectónico de por qué un CMS headless maneja el multilingüe mejor que un CMS tradicional.
- How to Add a Blog to Your SaaS Product: A Developer Guide. El ángulo de integración: cómo conectar un blog multilingüe a un producto existente.
Empieza a construir con Kamaan
Hreflang válido en cada publicación, cero configuración
Kamaan te da un panel para todos los blogs de tus productos, auto-traducido a 99+ idiomas en cada publicación. Una cuenta cubre sitios ilimitados a precio plano. El MCP Server te permite publicar desde Claude o ChatGPT. Primer mes gratis.

