Es una de las confusiones más extendidas del SEO en WordPress: tienes Yoast instalado, tienes la web en dos idiomas, das por hecho que el hreflang está puesto. No lo está. Yoast SEO, por sí solo, no genera etiquetas hreflang, y esa suposición cuesta tráfico durante meses sin que nada parezca roto.
Aquí está el reparto real de responsabilidades, cómo comprobarlo en tu propia web en treinta segundos y qué hacer si te falta.
Al grano: Yoast cubre el SEO de una web en un idioma: títulos, descripciones, canonical, sitemap, datos estructurados. El reparto entre idiomas —qué página equivale a cuál— lo declara siempre el plugin multiidioma. Yoast ofrece una extensión de pago para hreflang orientada a sitios multirregionales, pero no la versión gratuita que tiene casi todo el mundo.
Qué hace Yoast y qué no

Mirado de cerca:
Lo que Yoast hace bien y de serie. Pone el canonical correcto en cada página, genera el sitemap XML, controla el título y la meta descripción, y gestiona los datos estructurados. Todo eso sigue funcionando en una web multiidioma: cada versión tiene su propio canonical apuntando a sí misma, que es exactamente lo que debe pasar.
Lo que Yoast no hace. No sabe que /precios/ y /en/pricing/ son la misma página. No puede saberlo: esa relación la guarda el plugin de idiomas en sus propias tablas. Por eso el hreflang no sale de Yoast.
Lo que hacen a medias entre los dos. Los metadatos por idioma. Yoast define los campos; el plugin multiidioma es quien los traduce y los sirve en la versión correspondiente. Si tu plugin no traduce los campos de Yoast, tendrás títulos en castellano en las páginas inglesas —con el CTR que eso implica en las búsquedas en inglés.
Compruébalo en tu web ahora mismo
No hace falta ninguna herramienta. Treinta segundos:
- Abre cualquier página de tu web en el navegador.
- Pulsa Ctrl+U (o Cmd+U en Mac) para ver el código fuente.
- Busca con Ctrl+F la palabra
hreflang.
Tres resultados posibles:
- Ningún resultado. No tienes hreflang. Tus idiomas están compitiendo entre sí.
- Solo tu idioma y
x-default, los dos apuntando a la misma URL. Tienes el bloque, pero no declara las traducciones. Suele significar que el plugin no reconoce cobertura suficiente en los otros idiomas. - Una línea por idioma, cada una con su URL. Correcto. Esto es lo que debe salir:
<link rel="alternate" hreflang="es" href="https://tuweb.com/precios/">
<link rel="alternate" hreflang="en-US" href="https://tuweb.com/en/pricing/">
<link rel="alternate" hreflang="x-default" href="https://tuweb.com/precios/">
Consejo: repite la comprobación en una página de cada tipo: la portada, una entrada, una página estática y un archivo de categoría. Es habitual que el hreflang salga bien en las entradas y falte en los archivos, porque el plugin decide por página si hay traducción suficiente. Una sola comprobación en la portada no prueba nada.
Los cuatro errores que se cometen con hreflang
1. Declararlo en una dirección y no en la otra
El hreflang es recíproco. Si tu página española declara la inglesa, la inglesa tiene que declarar la española. Si la relación va solo en un sentido, Google ignora la declaración entera. Es el fallo más frecuente cuando alguien mete las etiquetas a mano.
2. Usar el código de idioma equivocado
El valor sigue el formato ISO: es, en, de. Puedes añadir región —es-MX, en-GB— pero entonces el primer trozo sigue siendo el idioma y el segundo el país, no otro idioma. en-UK no existe; es en-GB. Una etiqueta con un código inválido se descarta en silencio.
3. Olvidar x-default
x-default le dice a Google qué servir cuando el idioma del visitante no coincide con ninguno de los tuyos. Sin ella, Google elige por su cuenta. No es crítico, pero es gratis ponerla.
4. Apuntar a URL que redirigen o dan 404
Si la URL declarada redirige, Google tiene que seguir el salto y a veces descarta la relación. Declara siempre la dirección final, con su barra al final si tu web las usa, y en HTTPS.
Ojo: si tu plugin declara solo el idioma por defecto, probablemente no sea un fallo: muchos plugins —incluido WP-Translate— solo anuncian un idioma cuando esa página tiene traducción real. Es deliberado, porque declarar como inglesa una página servida en castellano es peor que no declararla. La solución no es tocar el hreflang: es terminar de traducir ese idioma.
¿Y si uso Yoast con Polylang o WPML?
Funciona bien, y es la combinación más habitual. El reparto queda así:
| Tarea | Quién la hace | Hay que configurar algo |
|---|---|---|
| Etiquetas hreflang | Polylang / WPML | No, salen solas al declarar los idiomas |
| Título y meta por idioma | Yoast, traducidos por el plugin | Sí: hay que traducirlos uno a uno |
| Sitemap con todos los idiomas | Yoast, alimentado por el plugin | Normalmente no |
| Canonical | Yoast | No |
| Slugs traducidos | Polylang Pro / WPML | Sí, y solo en las versiones de pago |
El punto que se suele pasar por alto es el de los metadatos: el plugin pone la estructura, pero los títulos y descripciones en inglés los tienes que escribir o traducir. Si no lo haces, Google enseña el título en castellano en las búsquedas en inglés. Está desarrollado en metadatos multilingües y optimización de imágenes.
Cómo lo resuelve WP-Translate
WP-Translate genera el bloque hreflang automáticamente, sin configurar nada, con una particularidad: solo declara un idioma cuando esa página tiene traducción real. Si el alemán está al 10 %, no anuncia versión alemana de una página que se sirve en castellano. Cuando termina de traducirse, aparece sola.
Además traduce los campos de Yoast —título, descripción y Open Graph— por idioma, que es la mitad del trabajo que la gente hace a mano. Y las traducciones viven en tu base de datos, con su URL propia y su x-default. Puedes comprobarlo tú mismo con la versión gratuita.
Perguntas frequentes
¿Merece la pena la extensión de pago de Yoast para hreflang?
Está pensada para sitios multirregionales —varios dominios o secciones para el mismo idioma en distintos países—, no para webs multiidioma normales. Si tu caso es «mi web en español y en inglés», tu plugin de idiomas ya lo cubre y no necesitas nada más de Yoast.
¿Puedo poner el hreflang a mano en el header?
Puedes, y en una web de cinco páginas es viable. En cuanto crece, no: cada página necesita sus propias etiquetas recíprocas, y mantenerlo a mano acaba en errores. Es trabajo de plugin.
¿Sirve declararlo en el sitemap en vez de en el head?
Sí, Google acepta las dos formas. En el head es más fácil de comprobar y de depurar, que es por lo que casi todos los plugins lo hacen así.
¿Cuánto tarda Google en hacerle caso?
Desde días hasta varias semanas, según cuánto rastree tu sitio. No esperes un cambio el mismo día. Lo que sí puedes verificar de inmediato es que las etiquetas están bien puestas, que es lo único que está en tu mano.
Si estás revisando el SEO de tu web multiidioma entera, la lista completa de fallos está en 9 errores de SEO multiidioma.
Seguir leyendo
Esta pieza forma parte de la guía de WordPress multiidioma, donde está el recorrido completo: estructura de URL, elección de plugin, traducción automática, SEO y presupuesto.
- contenido duplicado en webs multiidioma — cuándo Google no te penaliza y cuándo sí
- errores de SEO multiidioma — 9 errores de SEO multiidioma que hunden una web (y cómo detectarlos hoy)
- si un plugin de traducción ralentiza WordPress — ¿Un plugin de traducción ralentiza WordPress? Qué pesa de verdad y cómo medirlo