¿Qué es una etiqueta Canonical?
Antes de analizar cómo interactúan hreflang y canonical, conviene establecer qué hace cada uno de forma independiente.
Una etiqueta canonical (<link rel="canonical">) indica a los motores de búsqueda cuál es la URL preferida de una página para fines de indexación. Cuando múltiples URLs ofrecen contenido idéntico o muy similar, la etiqueta canonical consolida las señales de posicionamiento en una única URL, evitando la dilución por contenido duplicado.
<link rel="canonical" href="https://example.com/en/products/widget/" />
Por ejemplo, si tu página de producto es accesible tanto en https://example.com/en/products/widget/ como en https://example.com/en/products/widget/?ref=newsletter, la etiqueta canonical en ambas URLs debería apuntar a la versión limpia sin el parámetro de consulta. Esto le dice a Google: "Trata estas como la misma página y consolida su fuerza de posicionamiento."
Las etiquetas canonical son una señal fuerte que Google generalmente respeta (aunque no es una directiva -- Google puede anularla si detecta inconsistencias).
¿Qué es Hreflang?
Hreflang (<link rel="alternate" hreflang="...">) indica a los motores de búsqueda que una página tiene versiones equivalentes en otros idiomas o regiones. No controla la indexación -- controla qué versión aparece en los resultados de búsqueda según el idioma y la ubicación del usuario.
<link rel="alternate" hreflang="en" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/productos/widget/" />
Hreflang dice: "Estas tres páginas son el mismo contenido para audiencias diferentes." No dice nada sobre qué URL debería indexarse.
Cómo Hreflang y Canonical trabajan juntos
Aquí es donde surge la mayor confusión. Hreflang y canonical cumplen propósitos complementarios pero diferentes:
| Señal | Propósito | Alcance | |-------|-----------|---------| | Canonical | "Esta es la URL preferida para indexación" | Dentro de un solo idioma | | Hreflang | "Estas son las variantes de idioma/región" | Entre idiomas |
La regla crítica es: cada versión localizada debe tener un canonical autorreferencial que apunte a sí misma. La página en inglés tiene su canonical apuntando a la URL en inglés. La página en alemán tiene su canonical apuntando a la URL en alemán. La página en español tiene su canonical apuntando a la URL en español.
Esta es la implementación correcta para una página disponible en tres idiomas:
Página en inglés en https://example.com/en/products/widget/:
<link rel="canonical" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/productos/widget/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/products/widget/" />
Página en alemán en https://example.com/de/produkte/widget/:
<link rel="canonical" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/productos/widget/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/products/widget/" />
Página en español en https://example.com/es/productos/widget/:
<link rel="canonical" href="https://example.com/es/productos/widget/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/productos/widget/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/products/widget/" />
Observa el patrón: el canonical siempre es autorreferencial, mientras que el conjunto de hreflang es idéntico en las tres páginas (garantizando reciprocidad completa).
Cuando Hreflang y Canonical entran en conflicto
Los conflictos ocurren cuando la etiqueta canonical de una página apunta a una URL en un idioma diferente. Este es el error más dañino en la implementación de etiquetas de SEO internacional.
El error del Canonical entre idiomas
Considera esta implementación incorrecta:
Página en alemán en https://example.com/de/produkte/widget/:
<!-- INCORRECTO: el canonical apunta a la versión en inglés -->
<link rel="canonical" href="https://example.com/en/products/widget/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/produkte/widget/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/products/widget/" />
Esto le dice a Google: "La página en alemán es un duplicado de la página en inglés. Por favor, indexa solo la URL en inglés." Google entonces desindexará la página en alemán y mostrará la URL en inglés a los usuarios alemanes. El hreflang se ignora porque el canonical ha declarado efectivamente que la página en alemán no existe desde una perspectiva de indexación.
Este error es sorprendentemente común y a menudo proviene de:
- Plugins de CMS que establecen el canonical de todas las páginas no inglesas hacia el "original" en inglés
- Desarrolladores que malinterpretan canonical como "este es el idioma original" en lugar de "esta es la URL preferida para esta página específica"
- Herramientas SEO que marcan las páginas multilingües como duplicados y sugieren canonicalizar a una sola versión
- Scripts de migración que copian el canonical en inglés en todas las plantillas de idiomas sin actualizarlo
Cómo gestiona Google el conflicto
Cuando Google encuentra un canonical entre idiomas con hreflang:
- La señal canonical gana porque es una señal más fuerte que hreflang
- Google consolida la indexación en la URL canonical (la página en inglés)
- La página en alemán desaparece efectivamente del índice de Google
- Los usuarios alemanes que buscan en alemán ven la página en inglés en los resultados (o ningún resultado si la página en inglés no posiciona para consultas en alemán)
- Toda la autoridad de posicionamiento de los backlinks hacia la página en alemán fluye a la página en inglés, que no puede posicionarse en resultados de búsqueda en alemán de todas formas
El resultado: pierdes tu presencia de búsqueda en alemán por completo.
Patrones de uso correcto
Patrón 1: Canonical autorreferencial por idioma
Cada página localizada tiene un canonical que apunta a sí misma. Este es el patrón correcto para la gran mayoría de sitios internacionales.
/en/page/ -> canonical: /en/page/
/de/page/ -> canonical: /de/page/
/es/page/ -> canonical: /es/page/
Las tres páginas comparten el mismo conjunto completo de hreflang. Cada página se indexa de forma independiente y posiciona en su respectivo mercado.
Patrón 2: URLs con parámetros y Canonical diferente
Si tu sitio usa parámetros de consulta para la selección de idioma (por ejemplo, ?lang=de), cada versión de idioma debería igualmente tener un canonical apuntando a una URL limpia -- pero una URL limpia en su propio idioma.
/page/?lang=en -> canonical: /page/?lang=en (o /en/page/ si tienes URLs limpias)
/page/?lang=de -> canonical: /page/?lang=de (o /de/page/ si tienes URLs limpias)
Nunca apuntes el canonical de todos los parámetros de idioma a la URL base sin el parámetro. Eso colapsa todos los idiomas en una sola URL indexada.
Patrón 3: Páginas que realmente son duplicados dentro de un idioma
A veces tienes duplicados genuinos dentro del mismo idioma -- por ejemplo, una página de producto accesible desde dos rutas de categoría diferentes. En este caso, el canonical apunta correctamente a una URL, y el hreflang en esa URL canonical apunta a sus equivalentes en otros idiomas.
/en/category-a/widget/ -> canonical: /en/products/widget/
/en/category-b/widget/ -> canonical: /en/products/widget/
/en/products/widget/ -> canonical: /en/products/widget/ (autorreferencial)
hreflang: /en/products/widget/, /de/produkte/widget/, /es/productos/widget/
El hreflang solo necesita existir en la URL canonical. Las páginas duplicadas dentro del mismo idioma no necesitan hreflang porque Google las consolidará a la URL canonical de todas formas.
Diagnóstico de conflictos
Si sospechas conflictos entre hreflang y canonical en tu sitio, busca estos síntomas:
- Las páginas en otros idiomas no aparecen en Google Search Console. Si tu página en alemán no está en el índice pero tu página en inglés sí, revisa la etiqueta canonical de la página en alemán.
- "Duplicada sin canonical seleccionado por el usuario" en los informes de Cobertura. Google te está indicando que encontró un conflicto canonical y eligió su propia resolución.
- Errores de hreflang en el informe de Segmentación internacional de Search Console. Google señala páginas donde hreflang apunta a una URL que tiene canonical hacia una URL diferente.
- Caída del posicionamiento en mercados no ingleses después de una migración o cambio de CMS. Esto a menudo indica que la migración introdujo canonicals entre idiomas.
Para auditar tu sitio:
- Rastrea tu sitio con una herramienta que extraiga tanto las etiquetas canonical como las de hreflang
- Para cada página, verifica que
rel="canonical"apunte al mismo dominio y ruta de idioma que la propia página - Verifica que cada URL en cada conjunto de hreflang también tenga un canonical autorreferencial
- Comprueba que ninguna etiqueta canonical apunte a una URL en un directorio de idioma diferente
Conclusión
Hreflang y canonical no están en competencia. Resuelven problemas diferentes y siempre deben estar alineados. La regla es sencilla:
- Canonical: "Esta URL es la versión a indexar" -- siempre autorreferencial dentro de cada idioma
- Hreflang: "Estas URLs son equivalentes de idioma/región" -- recíproco entre todos los idiomas
Cuando estas dos señales están alineadas, los motores de búsqueda pueden indexar con confianza cada versión localizada de forma independiente y mostrar la versión correcta a la audiencia adecuada. Cuando entran en conflicto, el canonical gana y el hreflang se ignora, lo que típicamente destruye tu visibilidad en búsquedas internacionales.
Usa nuestro Generador de etiquetas Hreflang para construir conjuntos de etiquetas que sigan estos patrones correctos automáticamente. El generador garantiza canonicals autorreferenciales y reciprocidad completa entre todos los idiomas del conjunto.