En esta página
Enviar un segundo idioma se siente como una victoria hasta que Search Console se llena de «Incorrect return tags» y Google sigue sirviendo inglés a compradores en Alemania. El SEO multilingüe trata menos de traducir strings y más de dar a cada mercado una URL estable, una señal clara de idioma o locale, y contenido que coincida con lo que la gente allí realmente compra.
Esta guía cubre elecciones de estructura de URL, cómo funciona hreflang (incluida la reciprocidad y x-default), idioma versus locale, traducción versus localización, modos de fallo comunes, crawl budget, trampas de CMS, un escenario trabajado y una checklist de ship.
Elige una estructura de URL antes de anotar nada
Hreflang solo apunta a URLs. Si esas URLs son desordenadas, basadas en parámetros o a medias migradas, las anotaciones no pueden salvar el proyecto. La guía de Google sobre gestionar sitios multi-regionales y multilingües describe los patrones habituales. Eliges un patrón primario y te mantienes en él.
| Patrón | Ejemplo | Fortaleza | Costo |
|---|---|---|---|
| ccTLD | example.de, example.fr |
Señal fuerte de país, confianza local | Sitios separados, más ops, equity de enlaces dividida |
| Subdominio | de.example.com |
Separación clara, hosting flexible | Señal de país más débil que un ccTLD |
| Subdirectorio | example.com/de/ |
Un dominio, autoridad compartida, CMS más simple | La señal de país depende más del contenido y hreflang |
Los subdirectorios ganan para la mayoría de sitios de producto y contenido que aún construyen autoridad en un dominio de marca. Los ccTLD tienen sentido cuando las entidades legales, precios o compliance difieren de verdad por país y puedes staffear cada sitio. Los subdominios se sientan en el medio cuando necesitas stacks separados (por ejemplo un origin orientado a China) sin comprar cada TLD.
Evita el idioma como query string (?lang=de). Esas URLs son fáciles de duplicar, difíciles de compartir y torpes para analytics. Google aún puede entenderlas cuando están anotadas correctamente, pero los operadores que viven con locales por parámetros suelen arrepentirse cuando filtros y campañas chocan.
Documenta el patrón elegido en un lugar que ingenieros y traductores lean ambos. Cambiar de /de/ a de.example.com después significa un mapa completo de redirecciones y una reescritura de hreflang. Ese impuesto de migración es por qué la decisión de URL pertenece antes de que se envíe la primera página traducida.

Figura 1: Layouts lado a lado de ccTLD, subdominio y subdirectorio para la misma marca.
Cómo funciona realmente hreflang
Hreflang le dice a Google qué URL es la versión intencionada para un idioma o combinación idioma-región dados. No crea rankings por sí solo. Ayuda a Google a elegir el alternate correcto cuando existen varias páginas casi coincidentes, de modo que los usuarios alemanes tengan más probabilidad de ver la URL alemana cuando esa URL es un alternate válido de la inglesa.
Puedes declarar alternates de tres formas que Google documenta:
- HTML
<link rel="alternate" hreflang="..." href="...">en el<head>de la página - Headers HTTP para archivos no HTML (PDFs y similares)
- Anotaciones en XML sitemap para catálogos grandes
La mayoría de sitios de marketing usan tags HTML o entradas de sitemap. Los catálogos grandes de ecommerce a menudo prefieren sitemaps para que las plantillas se mantengan delgadas. Elige un método primario para un set dado de URLs y manténlo consistente. Mezclar HTML parcial y anotaciones parciales de sitemap para el mismo set de páginas es una fuente común de drift.
Los códigos siguen valores estilo BCP 47 que Google acepta: un código de idioma como en o de, opcionalmente con una región como en-GB o pt-BR. Usa códigos de idioma ISO 639-1 y, cuando necesites una región, códigos de país ISO 3166-1 Alpha 2. No inventes abreviaturas como uk para inglés en el Reino Unido (en-GB es la elección habitual). No uses códigos solo de región.
Cada página de un set debe listar cada alternate, incluyendo una entrada self-referencing para sí misma. Si https://example.com/pricing/ es inglés y https://example.com/de/pricing/ es alemán, ambas páginas (o sus filas de sitemap) necesitan entradas en y de que apunten a las URLs finales e indexables.
Confirmación recíproca entre alternates
La documentación de localized-versions de Google es explícita: las anotaciones deben confirmarse desde el otro lado. Si la página A apunta a la página B como de, la página B debe apuntar de vuelta a la página A como en (o el idioma que sea A). Los enlaces unidireccionales se ignoran para esa relación.
La reciprocidad falla en silencio cuando un CMS genera tags solo en el locale «primario», cuando un traductor publica un idioma nuevo sin actualizar las páginas viejas, o cuando un CDN cachea un head viejo mientras la página en vivo se movió. Los informes de International Targeting / hreflang de Search Console (donde estén disponibles para tu property) y un crawl que extraiga link[rel=alternate][hreflang] capturan esto más rápido que mirar HTML a ojo.

Figura 2: Cada alternate debe apuntar de vuelta. Una flecha unidireccional no cuenta como un par confirmado.
x-default y el visitante sin match
x-default marca la URL que quieres cuando ninguno de los otros valores hreflang coincide con la configuración de idioma o región del usuario. Google lo describe en la misma documentación de localized versions como el fallback para idiomas sin match.
Usos típicos:
- Una página de selector de idioma o gateway global
- Tu URL primaria en inglés (u otro hub) cuando no operas un selector separado
- Un storefront cuidadosamente elegido de «resto del mundo»
x-default no es «la página para gente que habla inglés». El inglés aún necesita su propio hreflang="en" (o en-US, en-GB, etc.). x-default puede apuntar a la misma URL que en cuando eso es honesto. También puede apuntar a un selector que sea indexable y útil. Lo que no debe hacer es apuntar a un soft 404, un interstitial de redirección geo-IP que nunca se asienta, o un post aleatorio del blog.
Si rediriges automáticamente por IP antes de que el usuario (o Googlebot) pueda ver una URL estable, pelean usabilidad y crawling. La guía multi-regional de Google advierte contra depender solo de IP para mostrar contenido. Prefiere una URL estable por locale más un language switcher visible, y deja que hreflang haga el trabajo de matching.

Figura 3: x-default atrapa visitantes cuyo idioma está fuera del set anotado.
Códigos de idioma versus códigos de locale
de significa alemán, sin importar el país. de-DE significa alemán como se usa en Alemania. de-AT significa alemán como se usa en Austria. Esas son intenciones distintas cuando moneda, envío, copy legal u ortografía divergen.
Usa códigos solo de idioma cuando una URL sirve honestamente a todos los hablantes de ese idioma. Usa códigos idioma-región cuando las páginas difieren por mercado aunque el string del idioma se vea igual. Una sola página en inglés para lectores globales suele ser en más x-default. Storefronts separados de UK y US con precios y ortografía distintos suelen ser en-GB y en-US, cada uno con su propia URL.
No crees duplicados en-US y en-GB que solo diferan por un ícono de bandera y un edge de CDN. Hreflang no puede inventar una diferencia significativa. Si las páginas son casi idénticas, consolida o localiza de verdad.
El chino por script y región necesita cuidado. El chino simplificado para audiencias mainland y el chino tradicional para Taiwán o Hong Kong son experiencias de lectura distintas. Prefiere URLs distintas y códigos precisos (zh-Hans, zh-Hant, o formas de región que tu stack soporte de forma consistente) en lugar de una página zh que mezcle scripts. Lo que elijas, mantén la misma familia de códigos en HTML, sitemaps y el language switcher.

Figura 4: Los códigos de idioma cubren hablantes de forma amplia. Los códigos de locale anclan un mercado cuando el contenido realmente difiere.
Dónde termina la traducción y empieza la localización
La traducción machine o humana que intercambia palabras dejando USD, matrices de envío US, case studies US y footers legales US en su lugar tendrá underperformance aunque hreflang sea perfecto. La localización cambia la superficie comercial. Moneda, display de impuestos, métodos de pago, horarios de soporte, señales de confianza, ejemplos y texto regulatorio necesitan un pase de mercado.
Para SEO específicamente, la localización también incluye:
- Titles y meta descriptions escritos para cómo la gente busca en ese idioma, en lugar de un calco de la keyword inglesa
- Enlaces internos que se mantienen dentro del hub del mismo idioma siempre que exista un equivalente
- Imágenes y screenshots con UI o captions locales donde importa
- Omitir cascarones delgados de locale «coming soon» que aún se anotan como alternates completos
Si un mercado no está listo, déjalo fuera de hreflang hasta que la página sea genuinamente equivalente. Anotar un placeholder como fr enseña a Google que el alternate francés es débil.
Buena práctica: Envía menos locales que estén comercialmente completos antes de rociar diez carpetas a medias traducidas por el sitemap.

Figura 5: Más allá del intercambio de palabras. Moneda, proof points y superficies legales también reciben un pase de mercado.
Fallos comunes de hreflang y SEO internacional
Estos aparecen en casi cada revisión de crawl multilingüe.
Reciprocidad rota. Los nuevos locales se lanzan con tags que listan los idiomas viejos, pero los idiomas viejos nunca se actualizan. Corrige con una sola fuente de verdad (build step o campo del CMS) que regenere el set completo de alternates en cada locale.
Códigos incorrectos. eng, uk, zh-CN mezclado con zh-Hans de forma inconsistente, o códigos de región donde se pretendía idioma. Valida contra la lista de códigos que estandarizaste en el doc de URL.
Anotar URLs non-canonical o non-indexable. Hreflang debe apuntar a la URL final preferida. Si la página alemana canonicaliza al inglés, o retorna noindex, el set de alternates está mintiendo. Corrige canonical e indexación primero.
Mezclas HTTP y HTTPS, o www y non-www. Cada href en el set de alternates debe usar el mismo host y protocolo que elegiste como canónico.
Cobertura parcial. Solo el homepage tiene hreflang mientras las plantillas de producto no. O solo el sitemap tiene entradas mientras el HTML las contradice. Cubre las plantillas que generan tráfico, de extremo a extremo.
Language switchers que crean duplicados por parámetros. Un switcher que añade ?currency=EUR encima de /de/ sin disciplina de canonical multiplica casi-duplicados y desperdicia crawl.
Loops de auto-redirección. Detecta idioma, 302 a otra carpeta, luego otra regla envía al bot a otro lado. Dale a Googlebot un 200 en una URL estable de locale.
Advertencia: Los errores de hreflang rara vez lanzan un bug visible on-page. Los usuarios pueden seguir navegando mientras Google ignora el mapa de alternates. Trata Search Console y diffs de crawl como la superficie de monitoreo.

Figura 6: Las roturas habituales son reciprocidad, códigos, indexabilidad e inconsistencia de host.
Crawl budget en sitios multilingües
Cada locale nuevo multiplica el conteo de URLs. Eso puede estar bien cuando las páginas son únicas y están enlazadas. Duele cuando clonas plantillas delgadas, filtros facetados en cada idioma y archivos de tags que nadie quería traducidos.
El crawl budget no es un score místico. En la práctica te importa si Googlebot gasta tiempo en URLs de dinero o en basura. La basura multilingüe se ve así:
- Combinaciones de filtros traducidas que crean miles de listados casi vacíos
- Archivos paginados de posts delgados en cada idioma
- Locales de staging o preview dejados enlazados desde el footer
- Alternates que dan 404 o soft-404 tras un fallo de publicación del CMS
Consolida o pon en noindex las superficies de bajo valor en cada locale de la misma forma que harías en una auditoría monolingüe. Mantén los sitemaps limitados a URLs canónicas, 200 e indexables que pertenecen al mapa de alternates. Cuando añadas un idioma, añade solo las plantillas que puedas mantener.
Los enlaces internos deben preferir paths del mismo locale. Un artículo alemán que solo enlaza a hubs de categoría en inglés fuerza hops extra y diluye el cluster de idioma.

Figura 7: Más idiomas significan más URLs. Prefiere crawl en plantillas comerciales sobre ruido de filtros traducidos.
Pitfalls de CMS y plugins
WordPress, Shopify, Webflow, apps custom de Next.js y CMSs enterprise todos generan bugs de hreflang de forma distinta. El patrón debajo es el mismo: el sistema que renderiza la página no es el único sistema que cree ser dueño de los alternates.
Vigila:
- Dos plugins ambos imprimiendo
link rel="alternate"y discrepando - Un CMS headless que almacena slugs de locale mientras el front end reescribe paths de forma distinta en producción
- Plugins de sitemap que listan cada locale mientras los tags HTML listan un subset
- Módulos de «hreflang» que omiten self-references
- Workflows de copy-to-new-locale que clonan
noindexo canonicals de staging - Capas de CDN o reverse-proxy que sirven HTML distinto a bots que a usuarios (raro cuando es intencional, desordenado cuando es accidental)
Para el trabajo de internacionalización de sitios, trata hreflang como un ítem de checklist de release que revalidas en cada cambio mayor. Especialmente en stacks multilingües de WordPress, verifica el HTML en vivo de una página de dinero en cada locale tras cada update mayor de plugin o tema.
Si generas tags en la app, añade un check de CI o assert de crawl que cuente los alternates esperados por plantilla. Los spot checks manuales se pierden el décimo idioma.

Figura 8: Temas, plugins, sitemaps y HTML del CDN pueden emitir cada uno una historia distinta de alternates.
Path de implementación que sobrevive el día de release
Un rollout durable se ve así.
- Congela el patrón de URL y la lista de locales que están comercialmente listos.
- Mapea equivalentes en una spreadsheet o base de datos. Cada fila es una unidad de contenido. Las columnas son URLs de locale. Celdas vacías significan «aún no hay alternate» (omítelas de hreflang hasta llenarlas).
- Elige HTML, HTTP o sitemap como fuente de verdad para esa clase de plantilla.
- Genera tags self-referencing y recíprocos incluyendo
x-defaultdonde tengas un fallback deliberado. - Alinea canonicals para que cada URL de locale canonicalice a sí misma cuando deba indexarse.
- Actualiza language switchers para que cada locale enlace a su equivalente mapeado en lugar de adivinar el homepage.
- Envía o refresca sitemaps en Search Console para cada property que gestionas.
- Crawl y diff tras el deploy. Falla el release si la reciprocidad o la validación de códigos falla en plantillas de dinero.
- Monitorea Search Console por issues de hreflang y por patrones inesperados de aterrizaje por país o idioma en informes de rendimiento.
La documentación de Google para versiones localizadas de páginas es la referencia normativa para sintaxis de tags y reciprocidad. Los validadores de terceros ayudan, y las reglas oficiales aún deciden qué acepta Google.

Figura 9: Mapea equivalentes primero, genera tags recíprocos, luego valida con un crawl tras el deploy.
Escenario trabajado para un sitio SaaS que añade alemán y francés
Acme envía un producto de analytics B2B en https://www.acme.example/ con blog y pricing en inglés. Marketing quiere alemán y francés para expansión en la UE. Engineering prefiere un dominio. Eligen subdirectorios: /de/ y /fr/.
No traducen cada archivo viejo de tags del blog. Localizan homepage, pricing, overview de producto, entry points de docs y los veinte posts que aún generan pipeline. Legal escribe un addendum de privacy listo para la UE. Pricing muestra EUR con notas de VAT donde se requiere. Los case studies intercambian logos de la UE que realmente tienen permiso de usar.
Mapa de equivalentes (simplificado):
| Unidad | en | de | fr |
|---|---|---|---|
| Home | / |
/de/ |
/fr/ |
| Pricing | /pricing/ |
/de/pricing/ |
/fr/pricing/ |
| Product | /product/ |
/de/product/ |
/fr/product/ |
Cada una de esas seis URLs (más self) emite en, de, fr y x-default apuntando al home en inglés o a un pequeño region chooser que deciden mantener indexable. Los posts del blog que solo existen en inglés omiten de/fr hasta traducirse. Nunca apuntan el home alemán a una URL de pricing francesa.
La primera semana tras el lanzamiento, un crawl encuentra que pricing en inglés aún no tiene los nuevos alternates porque la capa de caché sirvió un head viejo. Hacen purge, re-crawl y confirman reciprocidad. Search Console deja de reportar errores de return-tag en esas URLs tras el procesamiento.
Miden el éxito como queries en alemán y francés aterrizando en páginas de dinero /de/ y /fr/. El conteo solo de URLs indexadas es una métrica débil de éxito aquí.

Figura 10: Acme mapea unos pocos equivalentes completos, envía tags recíprocos y omite la traducción delgada de archivos.
Checklist de SEO multilingüe
Usa esto antes de declarar el proyecto done.
- Un patrón de URL documentado (ccTLD, subdominio o subdirectorio) usado de forma consistente
- Solo locales comercialmente listos están en vivo y anotados
- Cada URL anotada retorna 200, es indexable y se self-canonicaliza cuando debe rankear
- Los códigos hreflang coinciden con tu política de idioma vs locale (
devsde-DE, etc.) - Set completo de alternates en cada página miembro o fila de sitemap, incluyendo self-references
- Confirmación recíproca a través del set
-
x-defaultapunta a un fallback intencional - El language switcher enlaza a equivalentes reales sin generar duplicados por parámetros
- Los sitemaps listan solo URLs canónicas de locale que quieres rastrear
- Filtros delgados traducidos, tags y locales de staging están fuera del mapa de alternates
- Un crawl post-deploy valida tags en plantillas de dinero
- Properties y sitemaps de Search Console actualizados para los hosts que gestionas

Figura 11: La readiness de lanzamiento cubre URLs, códigos, reciprocidad, indexabilidad y validación post-deploy.
Preguntas frecuentes
¿Necesito hreflang si solo tengo un idioma?
No. Hreflang es para versiones alternate de idioma o locale del mismo contenido. Un sitio de un solo idioma debe enfocarse en canonicals limpios y acceso de crawl. Añadir hreflang decorativo que no apunta a nada útil solo crea ruido de monitoreo.
¿Puede hreflang corregir contenido duplicado por sí solo?
Ayuda a Google a seleccionar el alternate correcto entre versiones válidas. No reemplaza la disciplina de canonical, y no rehabilitará páginas delgadas copiadas. Corrige duplicados y calidad primero, luego anota los equivalentes reales.
¿Debe existir cada post del blog en cada idioma?
Solo si los mantendrás. La cobertura parcial está bien. Anota los idiomas que existen para esa unidad y deja el resto fuera de la lista de alternates hasta que se envíen.
¿Es un ccTLD siempre mejor para SEO internacional?
No. Un ccTLD es una señal fuerte de país y a menudo una señal de confianza para usuarios locales, pero cuesta más operar y divide autoridad a menos que inviertas en cada property. Muchas marcas globales les va bien con subdirectorios más hreflang correcto. Elige a partir de restricciones legales, de hosting y de recursos en lugar de una regla de oro de un hilo de foro.
¿Dónde debo poner hreflang para un catálogo grande?
Los XML sitemaps escalan mejor cuando tienes decenas de miles de SKUs. Mantén las entradas del sitemap sincronizadas con las URLs canónicas de producto. Haz spot-check del HTML si tu stack también imprime tags en el head, y elimina conflictos.
¿Cuál es la diferencia entre hreflang y un meta tag content-language?
Hreflang mapea URLs alternate para idiomas y regiones para Google Search. Un meta tag content-language no es un sustituto de ese mapa. Sigue el mecanismo de localized versions de Google para alternates.
Cierre
El SEO multilingüe se sostiene cuando las URLs son estables, los locales son productos reales y hreflang es un mapa recíproco de esas URLs. Los equipos que luchan suelen anotar primero y localizar después, o dejar que un plugin emita tags que nadie revalidó tras lanzar el tercer idioma.
Si estás planificando un rollout de locale o limpiando un mapa de alternates existente, puedes contactarme vía el formulario.
