O que é uma tag Canonical?
Antes de examinar como hreflang e canonical interagem, vale a pena estabelecer o que cada um faz de forma independente.
Uma tag canonical (<link rel="canonical">) informa aos mecanismos de busca qual URL é a versão preferida de uma página para fins de indexação. Quando múltiplas URLs servem conteúdo idêntico ou muito semelhante, a tag canonical consolida os sinais de ranqueamento em uma única URL, prevenindo a diluição por conteúdo duplicado.
<link rel="canonical" href="https://example.com/en/products/widget/" />
Por exemplo, se sua página de produto é acessível tanto em https://example.com/en/products/widget/ quanto em https://example.com/en/products/widget/?ref=newsletter, a tag canonical em ambas as URLs deve apontar para a versão limpa sem o parâmetro de consulta. Isso diz ao Google: "Trate estas como a mesma página e consolide sua força de ranqueamento."
Tags canonical são um sinal forte que o Google geralmente respeita (embora não seja uma diretiva -- o Google pode sobrescrever seu canonical se detectar inconsistências).
O que é Hreflang?
Hreflang (<link rel="alternate" hreflang="...">) informa aos mecanismos de busca que uma página possui versões equivalentes em outros idiomas ou regiões. Ele não controla a indexação -- controla qual versão aparece nos resultados de busca com base no idioma e na localização do usuário.
<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 diz: "Estas três páginas são o mesmo conteúdo para públicos diferentes." Não diz nada sobre qual URL deve ser indexada.
Como Hreflang e Canonical funcionam juntos
É aqui que surge a maior confusão. Hreflang e canonical servem a propósitos complementares, porém diferentes:
| Sinal | Propósito | Escopo | |-------|-----------|--------| | Canonical | "Esta é a URL preferida para indexação" | Dentro de um único idioma | | Hreflang | "Estas são as variantes de idioma/região" | Entre idiomas |
A regra fundamental é: cada versão localizada deve ter um canonical autorreferencial que aponte para si mesma. O canonical da página em inglês aponta para a URL em inglês. O canonical da página em alemão aponta para a URL em alemão. O canonical da página em espanhol aponta para a URL em espanhol.
Aqui está a implementação correta para uma página disponível em três idiomas:
Página em inglês em 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 em alemão em 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 em espanhol em 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/" />
Observe o padrão: o canonical é sempre autorreferencial, enquanto o conjunto hreflang é idêntico nas três páginas (garantindo reciprocidade completa).
Quando Hreflang e Canonical entram em conflito
Conflitos ocorrem quando a tag canonical de uma página aponta para uma URL em um idioma diferente. Este é o erro mais prejudicial na implementação de tags de SEO internacional.
O erro do Canonical entre idiomas
Considere esta implementação incorreta:
Página em alemão em https://example.com/de/produkte/widget/:
<!-- ERRADO: canonical aponta para a versão em 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/" />
Isso diz ao Google: "A página em alemão é uma duplicata da página em inglês. Por favor, indexe apenas a URL em inglês." O Google então desindexará a página em alemão e mostrará a URL em inglês aos usuários alemães. O hreflang é ignorado porque o canonical efetivamente declarou que a página em alemão não existe do ponto de vista da indexação.
Este erro é surpreendentemente comum e frequentemente decorre de:
- Plugins de CMS que definem o canonical de todas as páginas não inglesas para o "original" em inglês
- Desenvolvedores que interpretam canonical como "este é o idioma original" em vez de "esta é a URL preferida para esta página específica"
- Ferramentas de SEO que sinalizam páginas multilíngues como duplicatas e sugerem canonicalizar para uma única versão
- Scripts de migração que copiam o canonical em inglês para todos os templates de idiomas sem atualizá-lo
Como o Google lida com o conflito
Quando o Google encontra um canonical entre idiomas com hreflang:
- O sinal canonical vence porque é um sinal mais forte que o hreflang
- O Google consolida a indexação na URL canonical (a página em inglês)
- A página em alemão efetivamente desaparece do índice do Google
- Usuários alemães pesquisando em alemão veem a página em inglês nos resultados (ou nenhum resultado se a página em inglês não ranqueia para consultas em alemão)
- Toda a autoridade de ranqueamento dos backlinks para a página em alemão flui para a página em inglês, que de qualquer forma não consegue ranquear nos resultados de busca em alemão
O resultado: você perde completamente sua presença de busca no mercado alemão.
Padrões de uso correto
Padrão 1: Canonical autorreferencial por idioma
Cada página localizada possui um canonical que aponta para si mesma. Este é o padrão correto para a grande maioria dos sites internacionais.
/en/page/ -> canonical: /en/page/
/de/page/ -> canonical: /de/page/
/es/page/ -> canonical: /es/page/
Todas as três páginas compartilham o mesmo conjunto completo de hreflang. Cada página é indexada de forma independente e ranqueia em seu respectivo mercado.
Padrão 2: URLs parametrizadas com Canonical diferente
Se seu site usa parâmetros de consulta para seleção de idioma (por exemplo, ?lang=de), cada versão de idioma ainda deve ter um canonical apontando para uma URL limpa -- mas uma URL limpa em seu próprio idioma.
/page/?lang=en -> canonical: /page/?lang=en (ou /en/page/ se você tem URLs limpas)
/page/?lang=de -> canonical: /page/?lang=de (ou /de/page/ se você tem URLs limpas)
Nunca aponte o canonical de todos os parâmetros de idioma para a URL base sem parâmetro. Isso colapsa todos os idiomas em uma única URL indexada.
Padrão 3: Páginas que genuinamente são duplicatas dentro de um idioma
Às vezes você tem duplicatas genuínas dentro do mesmo idioma -- por exemplo, uma página de produto acessível por dois caminhos de categoria diferentes. Nesse caso, o canonical aponta corretamente para uma URL, e o hreflang nessa URL canonical aponta para seus equivalentes em outros 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/
O hreflang só precisa existir na URL canonical. As páginas duplicadas dentro do mesmo idioma não precisam de hreflang porque o Google as consolidará na URL canonical de qualquer forma.
Diagnosticando conflitos
Se você suspeita de conflitos entre hreflang e canonical em seu site, procure por estes sintomas:
- Páginas em outros idiomas não aparecem no Google Search Console. Se sua página em alemão não está no índice, mas sua página em inglês está, verifique a tag canonical da página em alemão.
- "Duplicata sem canonical selecionado pelo usuário" nos relatórios de Cobertura. O Google está informando que encontrou um conflito canonical e escolheu sua própria resolução.
- Erros de hreflang no relatório de Segmentação internacional do Search Console. O Google sinaliza páginas onde hreflang aponta para uma URL que possui canonical para uma URL diferente.
- Queda no posicionamento em mercados não anglófonos após migração de site ou mudança de CMS. Isso frequentemente indica que a migração introduziu canonicals entre idiomas.
Para auditar seu site:
- Faça um rastreamento do seu site com uma ferramenta que extraia tanto as tags canonical quanto as hreflang
- Para cada página, verifique se
rel="canonical"aponta para o mesmo domínio e caminho de idioma da própria página - Verifique se cada URL em cada conjunto hreflang também possui um canonical autorreferencial
- Confirme que nenhuma tag canonical aponte para uma URL em um diretório de idioma diferente
Conclusão
Hreflang e canonical não estão em competição. Eles resolvem problemas diferentes e devem sempre estar alinhados. A regra é simples:
- Canonical: "Esta URL é a versão a ser indexada" -- sempre autorreferencial dentro de cada idioma
- Hreflang: "Estas URLs são equivalentes de idioma/região" -- recíproco entre todos os idiomas
Quando esses dois sinais estão alinhados, os mecanismos de busca podem indexar cada versão localizada de forma independente com confiança e mostrar a versão correta ao público adequado. Quando entram em conflito, o canonical vence e o hreflang é ignorado, o que tipicamente destrói sua visibilidade em buscas internacionais.
Use nosso Gerador de tags Hreflang para construir conjuntos de tags que sigam esses padrões corretos automaticamente. O gerador garante canonicals autorreferenciais e reciprocidade completa entre todos os idiomas do conjunto.