< BACK Mapa mundial de papel gastado sobre un escritorio con un lápiz y una taza de café, fotografiado con luz dorada de atardecer y efecto de grano de película

Etiquetas hreflang Bien Hechas: Detén Errores a Escala

En 2021 heredé un sitio de comercio electrónico de 14,000 páginas de un cliente cuya agencia anterior había "hecho el SEO internacional". Tres semanas en una auditoría encontré 31,000 errores de hreflang en Google Search Console. Treinta y uno mil. El sitio tenía siete variantes de idioma y cada página carecía de su etiqueta de autorreferencia. Las páginas en alemán apuntaban a URLs en francés. El x-default apuntaba a una URL que hacía una redirección 301 a otro lugar completamente diferente. El tráfico orgánico de mercados no anglófonos se había estancado durante ocho meses y nadie había conectado los puntos.

Ese proyecto es probablemente la razón más grande por la que ahora trato la implementación de hreflang como un problema de ingeniería de primera clase, no como algo que se agrega como último recurso durante un sprint de traducción.

Así que entremos en esto correctamente.

---

Lo Que hreflang Realmente Hace (y Lo Que No)

Voy a mantener esto breve porque la mayoría ya tiene una idea aproximada. hreflang es un atributo HTML (o encabezado HTTP, o entrada en sitemap XML) que le dice a Google cuál versión de una página corresponde a cuál combinación de idioma y región. No cambia los rankings directamente. Cambia cuál URL Google muestra a cuál usuario en cuál país.which URL Google shows to which user in which country.

Eso es todo. Es una señal, no una directiva. Google puede ignorarla si la implementación está rota o es contradictoria. Y lo hace. Regularmente.

Lo que no hace: no bloquea a los usuarios de acceder a la versión regional incorrecta, no reemplaza tu estrategia de contenido, y absolutamente no compensa páginas traducidas con poco contenido que son simplemente copias traducidas por máquina sin esfuerzo de localización.not do: it doesn't block users from accessing the wrong regional version, it doesn't replace your content strategy, and it absolutely doesn't compensate for thin translated pages that are just machine-translated copies with no localisation effort.

Vale la pena leer la documentación oficial de Google sobre hreflang antes que cualquier otra cosa. Es más árida que una galleta ranciada pero es precisa.Google's own hreflang documentation before anything else. It's drier than a stale biscuit but it's accurate.

---

Los Cinco Errores que Veo en Casi Toda Auditoría

Etiquetas de Auto-Referencia Faltantes

Este es el grande. Cada página en un cluster de hreflang debe incluir una etiqueta apuntando a sí misma. No solo las otras variantes. A sí misma.

Si tu página en inglés en example.com/en/product/ tiene etiquetas apuntando a /de/product/ y /fr/product/ pero olvida el hreflang="en" apuntando de vuelta a /en/product/, todo el cluster es técnicamente inválido. Google no necesariamente lanzará un error difícil pero reducirá su confianza en todo el conjunto de señales.example.com/en/product/ has tags pointing to /de/product/ and /fr/product/ but forgets the hreflang="en" pointing back to /en/product/, the whole cluster is technically invalid. Google won't necessarily throw a hard error but it will reduce its confidence in the entire signal set.

He visto este error en sitios construidos por desarrolladores que leyeron un post de blog, vieron un ejemplo con dos variantes, y nunca notaron la etiqueta de auto-referencia porque el ejemplo estaba mal escrito. No voy a nombrar nombres.

Las Etiquetas de Retorno Faltan o Están Rotas

hreflang es una relación bidireccional. Si tu página en inglés apunta a tu página en alemán, la página en alemán debe apuntar de vuelta a la página en inglés. Si te falta esa etiqueta de retorno, Google ve un apretón de manos roto.

En el proyecto de 2021 que mencioné, un desarrollador había añadido hreflang solo en la plantilla en inglés. Las plantillas en alemán, francés y español no tenían hreflang en absoluto. Así que Google estaba recibiendo media conversación e inteligentemente la ignoraba toda.

Códigos de Idioma Incorrectos

Usa etiquetas de idioma BCP 47. Eso significa en para inglés de forma genérica, en-GB para inglés británico, en-US para inglés estadounidense. No en_GB. No english. No ENG.BCP 47 language tags. That means en for English generically, en-GB for British English, en-US for American English. Not en_GB . Not english . Not ENG.

Encontré lang="english-uk" en un sitio fintech que auditamos en Seahawk el año pasado. El desarrollador claramente solo había adivinado el formato. Había estado en vivo durante 14 meses.lang="english-uk" on a fintech site we audited at Seahawk last year. The developer had clearly just guessed the format. It had been live for 14 months.

x-default Falta o Es Incorrecto

x-default debe apuntar a una página que maneje usuarios cuyo idioma o región no coincida con ninguna de tus otras variantes. Generalmente tu página de inicio o una página de selección de idioma. No es simplemente un sinónimo de "versión en inglés". He visto x-default apuntando a una URL que devuelve un 404, apuntando a una cadena de redirecciones, y una vez, memorablemente, apuntando a un entorno de staging. should point to a page that handles users whose language or region doesn't match any of your other variants. Usually your homepage or a language-selection page. It is not just a synonym for "English version". I've seen x-default pointing at a URL that returns a 404, pointing at a redirect chain, and once, memorably, pointing at a staging environment.

Si no tienes una página de respaldo sensata, en realidad es mejor omitir x-default que usarlo incorrectamente. Pero generalmente deberías tener uno.

Usando Canonical y hreflang Incorrectamente Juntos

Tu etiqueta canónica y tus etiquetas hreflang no deben contradecirse entre sí. Si /en-gb/page/ tiene una canónica que apunta a /en/page/, pero también tiene hreflang declarándose a sí misma como en-GB, has creado un conflicto de señales. La canónica está diciendo efectivamente "no soy la versión preferida de esta URL" mientras que hreflang está diciendo "soy la versión preferida para usuarios de inglés británico". Google tiene que elegir una interpretación y a menudo no elige ninguna./en-gb/page/ has a canonical pointing to /en/page/, but also has hreflang declaring itself as en-GB, you've created a signal conflict. The canonical is effectively saying "I'm not the preferred version of this URL" while hreflang is saying "I am the preferred version for British English users". Google has to pick one interpretation and it often picks neither.

---

Cómo implementarlo en sitios grandes sin perder la cordura

A nivel de plantilla vs. a nivel de página

En un sitio con 50 páginas, podrías hacer cada etiqueta hreflang manualmente. En un sitio con 5,000 páginas, no puedes. Necesitas generarlas programáticamente.

El enfoque más limpio que he encontrado es almacenar tus asignaciones de URL en una fuente de datos estructurada (una tabla de base de datos o incluso un archivo JSON plano para proyectos más pequeños) y generar las etiquetas en tiempo de renderización. En WordPress, Yoast SEO y Rank Math manejan esto razonablemente bien para configuraciones estándar, pero ambos fallan cuando tus estructuras de URL difieren entre idiomas en lugar de seguir un patrón de prefijo predecible como /en/, /de/, /fr/./en/, /de/, /fr/ prefix pattern.

Si tus URLs no son uniformes (digamos, slugs traducidos como example.com/en/running-shoes/ y example.com/de/laufschuhe/), necesitas una tabla de asignación explícita. Ningún plugin lo averiguará automáticamente. Aprendí esto de forma costosa con un cliente de ropa deportiva en 2022 cuyos slugs traducidos eran completamente independientes de los ingleses.example.com/en/running-shoes/ and example.com/de/laufschuhe/), you need an explicit mapping table. No plugin will figure that out automatically. I learned this the expensive way on a sportswear client in 2022 whose translated slugs were completely independent of the English ones.

Método de mapa de sitio XML

Para sitios muy grandes, prefiero el método de mapa de sitio XML sobre etiquetas HTML en línea. Mantiene el <head> limpio, es más fácil de auditar programáticamente, y puedes actualizar el mapa de sitio sin tocar las plantillas de página.<head> clean, it's easier to audit programmatically, and you can update the sitemap without touching page templates.

El formato se ve así (conceptualmente, sin delimitador de código): cada bloque <url> contiene múltiples entradas <xhtml:link>, una por cada variante de idioma incluyendo la que se auto-referencia. La declaración de espacio de nombres xmlns:xhtml debe estar presente en el elemento <urlset> o todo se rompe silenciosamente.<url> block contains multiple <xhtml:link> entries, one per language variant including the self-referencing one. The xmlns:xhtml namespace declaration must be present in the <urlset> element or the whole thing breaks silently.

Una trampa: el método de mapa del sitio solo funciona si Google ha rastreado e indexado tus mapas del sitio recientemente. Si tienes problemas de presupuesto de rastreo en un sitio grande, el método HTML es más confiable porque Googlebot lee las etiquetas en línea mientras rastrea cada página.

Encabezados HTTP para contenido que no es HTML

¿Tienes PDF u otros archivos que no son HTML que necesitan hreflang? Usa encabezados HTTP. Tu servidor devuelve un encabezado Link con atributos rel="alternate" y hreflang. Es raro en la práctica, pero he visto sitios grandes de finanzas y legal con miles de documentos PDF multiidioma donde esto realmente importa.Link header with rel="alternate" and hreflang attributes. This is rare in practice but I've seen large legal and financial sites with thousands of multi-language PDF documents where this actually matters.

---

Herramientas que realmente ayudan

Mira, he usado muchas herramientas a lo largo de los años. Aquí está lo que realmente uso:

  • Screaming Frog SEO Spider: Ejecuta un rastreo, ve a la pestaña hreflang. Señalará etiquetas de retorno faltantes, auto-referencias faltantes, URLs rotas y códigos de idioma inválidos todo en un solo lugar. Es mi primer paso en cada auditoría internacional. A £199/año es la herramienta de SEO técnico con mejor relación precio-valor que conozco.: Run a crawl, go to the hreflang tab. It will flag missing return tags, missing self-references, broken URLs, and invalid language codes all in one place. This is my first stop on every international audit. At £199/year it's the best-value technical SEO tool I know.
  • Ahrefs Site Audit: Buen chequeo secundario, especialmente si quieres hacer referencias cruzadas con datos de tráfico orgánico en la misma plataforma.: Good secondary check, especially if you want to cross-reference with organic traffic data in the same platform.
  • hreflang Tags Testing Tool de Merkle: Gratuita, en https://www.merkle.com/en/merkle-labs/hreflang-testing-tool.html. Pega una URL y verifica todo el grupo. Excelente para hacer chequeos puntuales de páginas específicas durante la corrección.: Free, at https://www.merkle.com/en/merkle-labs/hreflang-testing-tool.html. Paste a URL, it checks the entire cluster. Brilliant for spot-checking specific pages mid-fix.
  • Google Search Console: El informe International Targeting en Herramientas legales. Lento para actualizarse pero es la fuente confiable de cómo Google está leyendo realmente tu implementación.: The International Targeting report under Legacy Tools. Slow to update but it's the ground truth for how Google is actually reading your implementation.
  • Sitebulb: Si prefieres un rastreador visual con reportes más accesibles para principiantes, Sitebulb hace un buen trabajo visualizando las relaciones de clusters de hreflang.: If you prefer a visual crawler with more beginner-friendly reporting, Sitebulb does a solid job of visualising hreflang cluster relationships.

Lo que no uso: las herramientas generadoras de hreflang que producen un bloque de etiquetas estático para que copies y pegues. Están bien para aprender la sintaxis. Son inútiles para cualquier cosa por encima de 20 páginas porque terminas manteniéndolo manualmente.

---

Auditoría a Escala: Un Proceso Que Funciona

Aquí está el paso a paso real que ejecuto en cada auditoría internacional, refinado después de hacer esto en 200+ sitios multilingües:

  1. Rastrea el sitio con Screaming Frog, asegúrate de que la representación de JavaScript esté activada si el sitio usa un framework JS.
  2. Exporta los datos de hreflang a una hoja de cálculo. Agrupa las URLs por su cluster previsto.
  3. Verifica cada cluster por: etiqueta de auto-referencia, etiquetas de retorno de todas las variantes, códigos BCP 47 válidos, alineación canónica consistente.
  4. Verifica las URLs x-default por códigos de estado 200. No 301s. 200s.
  5. Comprueba de forma cruzada contra tus sitemaps XML si estás usando el método de sitemap. Cada URL en el sitemap debe devolver 200.
  6. Ejecuta una muestra de 20-30 páginas a través de la herramienta de prueba Merkle para verificar que Google realmente está leyendo lo que crees que está leyendo.
  7. Extrae el informe de Orientación Internacional de Search Console y busca específicamente errores de "No return tag". Estos casi siempre son síntoma de plantillas que no se actualizaron cuando se agregó un nuevo idioma.
  8. Corrige, vuelve a rastrear en 2 semanas y verifica que el número de errores haya disminuido en Search Console (puede tomar 4-6 semanas para que los datos de GSC reflejen completamente las correcciones).

Esto no es un proceso único. Programa un rastreo recurrente en tu calendario cada trimestre. Los sitios internacionales cambian. Se agregan páginas nuevas, las antiguas se redirigen y los clusters de hreflang se rompen silenciosamente cuando nadie está mirando.

---

Cuándo NO usar hreflang

Esto se omite en la mayoría de guías y me vuelve loco.

Si tienes un idioma pero múltiples regiones (digamos, Reino Unido y Australia ambos en inglés), hreflang vale la pena usarlo pero solo si el contenido es realmente lo suficientemente diferente para servir a esos usuarios de manera distinta. Si tus páginas de Reino Unido y Australia son 95% idénticas, podrías crear más confusión que claridad. Google puede optar por mostrar una variante universalmente y tus señales de hreflang serán en gran medida ignoradas de todos modos.

Si tienes muy poco tráfico de mercados internacionales, invertir una semana implementando hreflang podría no ser el mejor uso del tiempo. Una jerarquía de URL bien estructurada con atributos <html lang=""> y configuración de orientación geográfica en Search Console te cubrirá adecuadamente hasta que el volumen de tráfico justifique una implementación completa.<html lang=""> attributes and geotargeting settings in Search Console will cover you adequately until the traffic volume justifies a full implementation.

Y si tu sitio es una aplicación de página única con contenido que se carga dinámicamente, arregla primero el lado del renderizado. He visto hreflang implementado perfectamente en el shell HTML estático mientras que el contenido real de la página se renderizaba con JavaScript y Googlebot solo veía un spinner de carga. Soluciona la indexabilidad antes de preocuparte por las señales de internacionalización.

---

FAQ

¿Las etiquetas hreflang afectan directamente el posicionamiento?

No. Las señales de hreflang le indican a Google cuál URL servir a cuál usuario, no cómo posicionar esa URL. Indirectamente, mostrar la página correcta al usuario correcto reduce el pogo-sticking y mejora las métricas de engagement, lo que puede tener un efecto indirecto en el posicionamiento. Pero no hay un aumento directo de ranking por agregar etiquetas hreflang.

¿Cuánto tiempo tarda Google en procesar cambios de hreflang?

Típicamente 4-8 semanas para que los cambios se reflejen completamente en los datos de Search Console. La frecuencia de rastreo importa aquí. Para sitios grandes con tasas de rastreo lenta, puede extenderse a 12 semanas. No hagas cambios y revises los resultados al día siguiente. Te volverás loco.

¿Puedo usar hreflang en una tienda Shopify?

Sí, pero la internacionalización nativa de Shopify (a través de Markets) maneja mucho de esto por ti si usas subcarpetas o subdominios. Si usas tiendas separadas para diferentes regiones, tendrás que implementar hreflang manualmente mediante una personalización de tema o aplicación. He usado la guía de SEO internacional de Shopify como punto de partida aquí. Es bastante completa.Shopify's own international SEO guidance as a starting point here. It's reasonably complete.

¿Cuál es la diferencia entre segmentación por idioma y segmentación por país?

La segmentación por idioma (p. ej., hreflang="es") dice: muestra esto a hablantes de español sin importar dónde estén. La segmentación por país (p. ej., hreflang="es-MX") dice: muestra esto a hablantes de español en México específicamente. Usa etiquetas solo de idioma cuando tu contenido es el mismo para todos los hablantes de ese idioma. Usa etiquetas idioma-país cuando el precio, la moneda o contenido significativo difiere por región.hreflang="es") says: show this to Spanish speakers regardless of where they are. Country targeting (e.g., hreflang="es-MX") says: show this to Spanish speakers in Mexico specifically. Use language-only tags when your content is the same for all speakers of that language. Use language-country tags when pricing, currency, or significant content differs by region.

Mis errores de hreflang aumentaron después de arreglarlos. ¿Por qué?

Usualmente porque arreglar algunos tags hizo que Google rastreara tus páginas más agresivamente y ahora está encontrando errores que antes no reportaba. Es un artefacto de reporte, no una señal de que los arreglos empeoraron las cosas. Continúa, vuelve a rastrear en 4 semanas.

---

Hreflang es genuinamente una de esas cosas donde tener 90% correcto es casi tan malo como tener 0% correcto. Las señales rotas crean ruido que Google aprende a desconfiar. Tómate el tiempo para hacerlo correctamente, auditalo regularmente, y trátalo como la infraestructura que es. Tu tráfico orgánico internacional te lo agradecerá en silencio, que es el mejor tipo de agradecimiento.

< BACK