Como implementar hreflang (passo a passo)
Código funcional para os três métodos de hreflang — tags HTML no head, cabeçalhos HTTP Link e anotações em sitemap XML — além das regras de sintaxe, automação de CMS em escala e o fluxo de validação para confirmar que foi realmente implementado corretamente.
Idiomas
1 sinal de evidência nesta página
- Ferramenta relacionada ativareturntag - hreflang checker
Existem exatamente três maneiras de adicionar hreflang — tags link HTML no head, cabeçalhos de resposta HTTP Link (para arquivos não HTML, como PDFs) ou entradas xhtml:link em um sitemap XML (melhor em escala). Escolha uma; o Google trata as três como equivalentes e não há benefício em combiná-las. Cada método obedece às mesmas duas regras inegociáveis: autorreferência (cada página lista a si mesma) e reciprocidade (se A aponta para B, B deve apontar de volta para A, ou o Google ignora o par). Os códigos são ISO 639-1 para idioma mais região opcional ISO 3166-1 alpha-2; x-default é o fallback. Gere tudo a partir de uma única fonte de verdade e valide o head renderizado, não apenas o view-source — no meu estudo de 374 756 domínios, mais de 67% das configurações de hreflang tinham pelo menos um problema.
TL;DR — Existem três maneiras de adicionar hreflang: pequenas tags
<link>no<head>da sua página, um cabeçalhoLink:que seu servidor envia, ou entradas no seu sitemap XML. Você escolhe apenas uma. Seja qual for a escolha, duas regras nunca mudam: cada página lista a si mesma, e cada página para a qual você linka tem que linkar de volta — ou o Google ignora o conjunto inteiro. Depois, você verifica se as tags realmente aparecem na página do jeito que você pretendia.
Comece aqui: você já decidiu que precisa de hreflang
Este é o guia prático. Se você ainda não tem certeza se precisa de hreflang ou o que ele faz, leia primeiro a visão geral de hreflang — esta página assume que você sabe que tem múltiplas versões de idioma ou país de uma página e só quer construir a coisa corretamente.
As três maneiras de adicionar (escolha uma)
- Tags HTML
<link>no<head>. Você adiciona algumas linhas no topo do HTML de cada página. Mais fácil de entender, mais fácil de ver, bom para sites menores. - Cabeçalhos HTTP
Link:. A mesma informação, enviada pelo seu servidor na resposta em vez de no HTML. Esta é a única opção para arquivos que não são HTML — como um PDF, que não tem<head>para colocar tags. - Sitemap XML. Você lista todas as versões de idioma dentro do seu arquivo de sitemap em vez de em cada página. Melhor para sites grandes, porque você não precisa mexer em cada página — o mapa inteiro vive em um só lugar.
O Google trata os três da mesma forma. Não existe um “mais rápido” ou “mais forte”, e não há benefício em usar mais de um ao mesmo tempo — isso só te dá mais lugares para as coisas saírem de sincronia.
Evidence for this claim Google supports equivalent HTML, HTTP-header, and sitemap methods for declaring localized versions; HTTP headers can be used for non-HTML files such as PDFs. Scope: Google Search hreflang implementation methods. Confidence: high · Verified: Google: Localized versionsComo é a versão em HTML
Digamos que você tenha uma página em inglês dos EUA, uma página em inglês do Reino Unido, uma página em alemão e uma homepage global que permite que as pessoas escolham. Na página em inglês dos EUA, você colocaria:
<link rel="alternate" hreflang="en-us" href="https://example.com/us/" />
<link rel="alternate" hreflang="en-gb" href="https://example.com/uk/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />Leia cada linha como: “existe uma versão alternativa desta página, ela é para este
idioma/região, e ela está em este endereço.” A linha x-default é o seu
fallback para qualquer pessoa cujo idioma não corresponda aos outros.
Duas coisas para notar, porque são as duas regras que fazem o hreflang funcionar:
- A página dos EUA lista a si mesma (essa primeira linha
en-usaponta para a página dos EUA em que você já está). - Cada outra página no conjunto tem que carregar o mesmo bloco apontando de volta. A página do Reino Unido, a página em alemão e a homepage precisam todas da sua própria versão dessas quatro linhas.
As duas regras, em termos simples
- Cada página aponta de volta. Se sua página dos EUA linka para sua página em alemão, a página em alemão tem que linkar para a página dos EUA. Se faltar esse link de retorno, o Google descarta o par. Esta é a regra que as pessoas mais quebram.
- Cada página aponta para si mesma. Cada versão lista sua própria URL no conjunto. O Google chama isso de opcional, mas boa prática — faça mesmo assim, isso mantém tudo consistente.
Use endereços web reais e completos
Sempre use o endereço completo, começando com https://. Não /us/, não
//example.com/us/ — a coisa toda, https://example.com/us/. E tem que
corresponder ao endereço exato que o Google realmente indexa: mesmo protocolo, mesmo www (ou
não), mesma barra final, mesma capitalização.
Acertar os códigos
O código é um idioma de duas letras, opcionalmente seguido por um hífen e um país de duas
letras: en, en-us, de, es-mx. Os erros clássicos são en-uk (é
en-gb — uk na verdade significa ucraniano) e jp para japonês (é ja).
Depois, verifique se funcionou
A coisa mais importante que iniciantes perdem: depois de publicar, realmente olhe a
página renderizada para confirmar que as tags estão lá e no <head>. Se suas tags são
adicionadas por JavaScript, elas podem não aparecer quando você “Ver código-fonte da página”, mas vão
aparecer na página ao vivo. A Inspeção de URL do Google Search Console pode mostrar o que o Google
realmente renderizou.
Quer o código completo para os métodos de cabeçalho e sitemap, como automatizar isso em um CMS inteiro, as etapas exatas de validação e os erros que quebram silenciosamente clusters? Mude para a aba Avançado.
TL;DR — Três métodos, escolha um: tags HTML
<link>no<head>, cabeçalhos HTTPLink:(a única opção para arquivos não HTML, como PDFs), ou entradas<xhtml:link>em um sitemap XML (melhor em escala — um arquivo gerado por máquina, mais fácil de fazer QA). O Google diz que os três são equivalentes e não há benefício em combiná-los. Todo método obedece à autorreferência + reciprocidade, usa URLs absolutas e usa códigos de idioma ISO 639-1 + códigos de região opcionais ISO 3166-1 alpha-2. Gere tudo a partir de uma única fonte de verdade — hreflang mantido manualmente apodrece. Depois valide o<head>renderizado, rastreie todo o cluster para verificar reciprocidade e continue verificando novamente após cada mudança de URL. Não faça redirecionamento automático de rastreadores por geolocalização.
Antes de escrever uma linha de código: três decisões
1. Qual método. O Google é explícito que a escolha é sobre conveniência, não performance — “The three methods are equivalent from Google’s perspective and you can choose the method that’s the most convenient for your site.” (tradução) «Os três métodos são equivalentes da perspectiva do Google e você pode escolher o método que for mais conveniente para o seu site.» Minha regra aproximada:
Evidence for this claim Google supports equivalent HTML, HTTP-header, and sitemap methods for declaring localized versions; HTTP headers can be used for non-HTML files such as PDFs. Scope: Google Search hreflang implementation methods. Confidence: high · Verified: Google: Localized versions- Um punhado de URLs, um site estático ou simples, poucos locais → tags HTML
<link>. - Ativos não HTML (PDFs, documentos) → cabeçalhos HTTP
Link:(você não tem outra opção — não há<head>em um PDF). - Muitos locais, um pipeline de sitemap existente ou uma configuração headless/JAMstack → sitemap XML, gerado programaticamente.
A lente Decision Trees percorre isso como um fluxograma real.
2. Uma única fonte de verdade. Qualquer que seja o método escolhido, as anotações devem ser geradas a partir de um lugar — uma tabela de locais/traduções no seu banco de dados, um campo de relacionamento no CMS ou (para sites pequenos) uma única planilha. O pior anti-padrão de hreflang é manter tags manualmente por página. No momento em que o template de um local se desvia, os links de retorno desaparecem e os pares são descartados.
3. Não combine métodos. Você pode executar todos os três; o Google diz que não há benefício, e cada método extra é outra superfície para as três cópias discordarem entre si.
Evidence for this claim Google requires fully qualified alternate URLs and reciprocal links, and recommends including each page itself in its alternate set. Scope: Google Search hreflang rules shared by all delivery methods. Confidence: high · Verified: Google: Hreflang guidelinesMétodo 1 — tags HTML <link> no <head>
A sintaxe, verbatim do Google, é:
<link rel="alternate" hreflang="lang_code" href="url_of_page" />Um conjunto completo e funcional para um cluster multilíngue e multirregional com um fallback:
<link rel="alternate" hreflang="en-us" href="https://example.com/us/" />
<link rel="alternate" hreflang="en-gb" href="https://example.com/uk/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />Esse bloco exato vai em cada página do cluster (a página dos EUA, a página do Reino Unido, a página alemã e a página inicial) — cada uma inclui sua própria linha de autorreferência. É isso que satisfaz a reciprocidade.
A colocação é uma regra rígida. Google: “The <link> tags must be inside a
well-formed <head> section of the HTML.” (tradução) «As tags <link> devem estar dentro de uma
seção <head> bem formada do HTML.» E o conselho de solução de problemas deles:
“If in doubt, paste code from your rendered page into an HTML validator to ensure
that the links are inside the <head> element.” (tradução) «Em caso de dúvida, cole o código da sua página renderizada em um validador HTML para garantir
que os links estejam dentro do elemento <head>.»
Isso importa mais do que parece, por causa de um modo de falha que a maioria dos guias escritos
ignora: as tags hreflang podem ser forçadas para fora do <head> e para dentro do <body>,
onde são inválidas. Na minha apresentação Pubcon Vegas 2019
eu sinalizei isso diretamente — tags não podem legitimamente viver no body (isso permitiria
que um site sequestrasse os alternates de outro), mas uma tag <p> malformada ou injetada, ou um
iframe, pode fechar prematuramente o <head> para que tudo depois dele — incluindo
seu hreflang — seja renderizado dentro do <body>. A tag está tecnicamente presente no
código-fonte, mas silenciosamente inválida. A maneira mais rápida de depurar isso é com breakpoints de DOM
do navegador: observe onde as tags realmente caem no DOM renderizado e depois volte
à marcação que quebrou o <head>.
Quando as tags HTML fazem sentido: sites pequenos a médios com um número gerenciável de
locais, onde o bloco <link> por página não infla. Em um site com dezenas
de locais, cada página carrega um grande bloco de marcação — que é uma das razões pelas quais
os grandes sites dependem do método de sitemap.
Não misture hreflang com outros atributos alternate no mesmo elemento <link>. A orientação do Google é explícita: um <link rel="alternate"> que carrega hreflang não deve também carregar um atributo alternate não relacionado, como media, na mesma tag — se você precisar de um alternate de idioma/região e um alternate de media query para a mesma URL, são dois elementos <link> separados, não um combinado. Misturá-los é uma maneira fácil de acabar com uma tag que o Google não consegue interpretar como nenhum dos dois.
Método 2 — Cabeçalhos Link: HTTP
Mesma informação, enviada na resposta HTTP em vez do HTML. A sintaxe:
Link: <https://example.com/file.pdf>; rel="alternate"; hreflang="en",
<https://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch"Observe os colchetes angulares ao redor de cada URL, os atributos separados por ponto e vírgula e a vírgula separando cada alternate. Cada URL no cabeçalho é acrescentada com vírgula.
Quando você precisa disso: recursos não HTML. Um PDF, um .doc, uma imagem servida diretamente — nenhum deles tem um <head> para conter tags <link>, então o cabeçalho é a única maneira de anexar hreflang a eles.
Considerações de configuração: você define esses cabeçalhos na camada do servidor ou CDN (uma diretiva Header do Apache, um add_header do Nginx, uma regra de cabeçalho de resposta do Cloudflare/Fastly/CloudFront ou a resposta do seu aplicativo). Como o cabeçalho é definido pela infraestrutura em vez de marcação por documento, a regra de reciprocidade é fácil de quebrar aqui — o cabeçalho do PDF em inglês e o cabeçalho do PDF em alemão geralmente são configurados separadamente, então cabe a você garantir que cada um liste o conjunto completo, incluindo a si mesmo. Mantenha a geração do cabeçalho orientada pela mesma tabela de locales que sua abordagem de HTML/sitemap.
O invariante a manter: cada resposta alternate carrega o conjunto completo idêntico, todas as vezes. Não basta que o cabeçalho do PDF em inglês liste o alternate em alemão — a resposta do PDF em alemão tem que carregar exatamente o mesmo conjunto de volta (ele mesmo mais todos os outros alternates), em cada resposta, não apenas na primeira que um crawler encontrar. Trate o cabeçalho como saída gerada, não como algo único que você define e esquece.
Método 3 — Anotações <xhtml:link> no sitemap XML
Em escala, geralmente é a decisão certa: todo o cluster vive em um (ou alguns) arquivos gerados por máquina, nada incha o <head> de cada página e — como todo o grafo de relacionamentos está em um só lugar — é de longe o método mais fácil de fazer QA. A sintaxe:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://www.example.com/english/page.html</loc>
<xhtml:link rel="alternate" hreflang="de"
href="https://www.example.de/deutsch/page.html"/>
<xhtml:link rel="alternate" hreflang="en"
href="https://www.example.com/english/page.html"/>
</url>
<url>
<loc>https://www.example.de/deutsch/page.html</loc>
<xhtml:link rel="alternate" hreflang="de"
href="https://www.example.de/deutsch/page.html"/>
<xhtml:link rel="alternate" hreflang="en"
href="https://www.example.com/english/page.html"/>
</url>
</urlset>Duas coisas que confundem as pessoas no método de sitemap:
- A declaração de namespace é obrigatória. Esse
xmlns:xhtml="http://www.w3.org/1999/xhtml"no elemento<urlset>não é decoração opcional — omita-o e cada<xhtml:link>no arquivo será inválido. - Cada bloco
<url>deve ser autossuficiente. Observe que ambos os blocos<url>acima listam ambos os alternates, incluindo seu próprio<loc>. Cada entrada<url>carrega o conjunto completo (autorreferência + todos os alternates). Reciprocidade em um sitemap é apenas “o bloco de cada URL lista todas as URLs do cluster, incluindo a si mesma.”
Dois comportamentos que vale a pena conhecer para não superdimensionar o gerador: a ordem
dos filhos <xhtml:link> dentro de um bloco <url> não importa para o Google —
não perca tempo ordenando-os — e essas anotações <xhtml:link> não contam
contra o limite de 50 000 URLs por arquivo do seu sitemap, já que são filhos de uma
entrada <url>, não entradas <url> separadas.
Gerando programaticamente. O objetivo do método de sitemap é que ele
é um subproduto dos próprios dados de tradução do seu CMS. Se o seu CMS já sabe
que /english/page.html e /deutsch/page.html são traduções um do outro,
seu gerador de sitemap deve percorrer essa tabela de relacionamentos e emitir os
blocos <xhtml:link> no momento da compilação (ou no momento da solicitação do sitemap). Faça isso e
hreflang não pode sair de sincronia com a realidade — ele é regenerado a partir da fonte de
verdade todas as vezes, e adicionar um locale é uma mudança de dados, não uma edição manual em
centenas de páginas.
Para equipes sem recursos de desenvolvimento, criei um modelo leve de Google Sheets no meu guia de hreflang da Ahrefs: uma aba Setup (escolha um idioma padrão e até quatro variantes), uma aba URLs (cole as URLs de cada idioma em colunas) e uma aba Results que gera automaticamente o bloco de XML do sitemap para você. É a ideia de “fonte única de verdade” tornada concreta para sites pequenos demais para justificar uma integração real de CMS.
As regras que se aplicam independentemente do método escolhido
Estas são independentes do método e inegociáveis.
- Autorreferência. Cada página (ou cada bloco
<url>, ou cada cabeçalho) lista a si mesma. Mueller apresenta isso como opcional, mas boa prática; no entanto, sua ausência estava presente em 18,0% dos domínios no meu estudo — automatize e não custa nada. - Reciprocidade. “Each language version must list itself as well as all other language versions.” E a aplicação: “If two pages don’t both point to each other, the tags will be ignored. This is so that someone on another site can’t arbitrarily create a tag naming itself as an alternative version of one of your pages.” (tradução) «Cada versão de idioma deve listar a si mesma, bem como todas as outras versões de idioma.» E a aplicação: «Se duas páginas não apontarem uma para a outra, as tags serão ignoradas. Isso é para que alguém em outro site não possa criar arbitrariamente uma tag nomeando a si mesma como uma versão alternativa de uma de suas páginas.» Um link de retorno ausente derruba o par.
- URLs absolutas e totalmente qualificadas. “Alternate URLs must be fully-qualified,
including the transport method (http/https)” — portanto,
https://example.com/foo, nunca//example.com/fooou/foo. E a URL deve corresponder à forma exata que o Google indexa: protocolo,www, barra final e maiúsculas/minúsculas precisam estar alinhados, ou a correspondência do link de retorno falha.
Acertando os códigos
“The first code of the hreflang attribute is the language code (in ISO 639-1
format) followed by an optional second code that represents the region code (in ISO
3166-1 Alpha 2 format).” (tradução) «O primeiro código do atributo hreflang é o código do idioma (no formato ISO 639-1) seguido por um segundo código opcional que representa o código da região (no formato ISO 3166-1 Alpha 2).» Combine-os com um hífen: en-US. Você pode segmentar um idioma isoladamente (es = espanhol em qualquer lugar), mas não pode segmentar uma região isoladamente — sempre há um idioma primeiro.
Os erros que vejo com mais frequência (e vi no conjunto de dados do estudo):
en-UKem vez deen-GB—uké ucraniano, o código de região do Reino Unido égb.jpem vez dejapara japonês,cnem vez dezhpara chinês.- Códigos de três letras (
ger,eng) onde é necessário o ISO 639-1 de duas letras. - Usar
EU,UNouUKcomo códigos de região — nenhum é um alvo válido ISO 3166-1 alpha-2.
x-default é o valor reservado para o fallback — um seletor de idioma ou uma
página inicial com redirecionamento automático que atende usuários que não correspondem a nenhuma das suas localidades explícitas:
<link rel="alternate" href="https://example.com/" hreflang="x-default" />Não é obrigatório. Foi o elemento mais ausente no meu estudo (56,3% dos
domínios o omitiram), mas um x-default ausente não quebra o cluster da mesma forma que uma tag recíproca ausente — o Google simplesmente recorre à própria detecção de idioma/região para usuários sem correspondência. Adicione mesmo assim; é um item de checklist, não um quebrador de cluster. (Há um subtópico dedicado a x-default neste cluster.)
Implementando em escala — abordagens de CMS e plataforma
WordPress. O Yoast SEO não gera hreflang por conta própria. Para realmente
emitir tags, você precisa de um plugin multilíngue — WPML ou Polylang. O WPML
gera automaticamente hreflang para cada página que tem traduções, adiciona um x-default
apontando para a versão no seu idioma padrão e, por padrão, injeta as anotações
no sitemap XML; há uma configuração em WPML → Languages → SEO Options
(“Display alternative languages in the HEAD section”) se você quiser a saída de tags no cabeçalho
em vez de, ou além do, sitemap. (Veja a documentação do WPML sobre como usar com o
Yoast.)
Shopify. O Shopify Markets automaticamente gera tags hreflang mutuamente vinculadas depois que você configura mercados/idiomas e o conteúdo é publicado e vinculado na navegação — o que elimina o modo de falha mais comum (links recíprocos ausentes) por design. O problema: as tags automáticas do Markets são frequentemente apenas de idioma (fr, de) em vez de idioma-região (fr-FR, fr-CA), o que atende mal marcas que precisam de especificidade regional — francês para França vs. Canadá vs. Bélgica. Para isso, você recorre a tags <link> manuais em theme.liquid (a documentação de hreflang do tema do próprio Shopify mostra o padrão) ou a um aplicativo — e tenha cuidado, porque misturar tags automáticas do Markets com tags manuais/de aplicativo é uma fonte documentada de conflitos. Escolha um.
Personalizado / headless / enterprise. Gere as anotações a partir da sua tabela de relacionamento de tradução no momento do build ou do serve, conforme descrito na seção de sitemap acima. Este é o mesmo princípio de “fonte única de verdade” — o hreflang se torna uma saída computada de dados que seu CMS já possui, não um artefato mantido manualmente que pode se deteriorar.
Erros de implementação que quebram o cluster
Redirecionamento automático por geo/IP. Esta é uma falha separada dos erros de sintaxe e é pior. Se você redirecionar visitantes — e especialmente rastreadores — para uma versão baseada na localização percebida, você pode desindexar clusters regionais inteiros, porque o Googlebot rastreia principalmente dos EUA. Como eu disse naquela apresentação do Pubcon: um geo-redirecionamento “redirecionaria os mecanismos de busca para onde eles rastreiam. O Google, por exemplo, rastreia principalmente dos EUA, então efetivamente desindexaríamos todas as páginas geo.” Há também um ângulo regulatório — exposição potencial sob as regras da UE contra o bloqueio geográfico. O padrão correto é redirecionar usuários, nunca rastreadores: detecte e (opcionalmente) redirecione visitantes humanos, mas sempre permita que os bots alcancem cada variante de URL diretamente, com o hreflang fornecendo o sinal de roteamento real. A própria orientação multirregional do Google recomenda um banner de sugestão não intrusivo em vez de redirecionamento automático exatamente por esse motivo.
Apontar hreflang para URLs não canônicas, redirecionadas ou com noindex. Se a URL de um locale mudar e o redirecionamento for configurado, mas o hreflang ainda apontar para a URL antiga, seu cluster agora referencia um 301 ou um 404 (16,9 % dos domínios no meu estudo referenciavam páginas quebradas/redirecionadas). Da mesma forma, cada variante deve canonicalizar para si mesma; apontar hreflang para uma URL que foi canonicalizada, ou para uma página com noindex, quebra o link de retorno (8,0 % apontavam para URLs não canônicas).
Formatos de URL inconsistentes. A URL do hreflang e a URL indexada precisam ser idênticas em forma — barra final, www, protocolo e maiúsculas/minúsculas incluídos. Uma incompatibilidade aqui é uma falha silenciosa de reciprocidade.
Validando sua implementação após o lançamento
Veja o código-fonte renderizado, não apenas o código-fonte bruto. Se o seu hreflang for injetado por JavaScript no lado do cliente, curl ou Ctrl+U (“Ver código-fonte da página”) mostrará nada — mas as tags existem no DOM renderizado. Confirme com a Inspeção de URL do GSC → “Testar URL ao vivo” → “Ver página testada”, ou um rastreador com capacidade de renderização. Este é o motivo mais comum para alguém dizer “minhas tags estão ausentes” quando na verdade estão corretas (ou o contrário — presentes no código-fonte, mas quebradas porque renderizam no <body>).
Rastreie o cluster inteiro, não verifique apenas uma URL. A reciprocidade é uma relação entre páginas, então verificar uma página não diz quase nada. Execute um rastreador em todo o cluster — a auditoria de hreflang do Screaming Frog ou o Site Audit da Ahrefs — para detectar tags de retorno ausentes, alvos não canônicos e referências quebradas em escala. A aba Hreflangs do Site Audit da Ahrefs desenha o cluster como um gráfico com links quebrados em vermelho, o que é muito mais fácil de entender do que um CSV.
Verifique as SERPs reais com &hl= e &gl=. Acrescente os parâmetros de idioma do host (&hl=) e geolocalização (&gl=) a uma URL de pesquisa do Google para visualizar o que os resultados de um determinado local realmente mostram, em vez de adivinhar com base na sua própria localização.
A validação não é uma etapa única. Novos locais, mudanças de URL/redirecionamento e configurações de dev/staging que vazam para a produção são as causas recorrentes de problemas pós-lançamento. Incorpore verificações de hreflang em testes de regressão e rastreamentos recorrentes, não apenas em uma verificação de QA no dia do lançamento. Meu enquadramento nas palestras: “qualquer número de coisas pode quebrar, desde mascaramento até coisas que são transferidas de ambientes dev/test/staging.”
Mitos que vale a pena aposentar
- “Sitemaps processam mais rápido do que tags HTML.” Falso. Ambos são resolvidos no momento do rastreamento — eu já desmascarei isso diretamente. A vantagem do sitemap é a facilidade de manutenção e o QA, não a velocidade.
- “O Yandex não suporta hreflang em sitemaps.” Falso — a própria documentação do Yandex confirma o suporte a hreflang em sitemaps.
- “Use todos os três métodos para sinal extra.” Sem benefício segundo o Google, e isso apenas multiplica o risco de inconsistência.
- “A falta de
x-defaultquebra o cluster.” Falso — é opcional; o Google recorre à própria detecção. - “Hreflang errado gera penalização.” Falso — é uma dica, não uma diretiva. Hreflang quebrado é ignorado, não penalizado.
Onde ir a seguir
Este artigo é o aprofundamento prático sob o hub hreflang — o hub cobre o que é hreflang, por que a reciprocidade importa e o que o Bing faz em vez disso. O subtópico x-default aprofunda o valor de fallback. Para a estratégia que isto implementa, veja o pilar International SEO — hreflang é a camada técnica, não um substituto para uma localização genuína.
Resumo de IA
Uma visão condensada da versão Avançada:
- Três métodos, escolha exatamente um (o Google os trata como equivalentes; não há benefício em combinar):
- Tags
<link>em HTML no<head>— sites pequenos/médios; devem estar em um<head>bem formado, nunca no<body>; não misturehreflangcom outro atributo alternativo comomediano mesmo elemento<link>. - Cabeçalhos HTTP
Link:— a única opção para arquivos não HTML (PDFs); definidos no servidor/CDN; cada resposta alternativa deve carregar o conjunto completo idêntico, todas as vezes. <xhtml:link>em sitemap XML — melhor em escala; precisa do namespacexmlns:xhtml="http://www.w3.org/1999/xhtml"no<urlset>; mais fácil de fazer QA porque todo o grafo está em um único arquivo; a ordem dos filhos não importa e esses filhos não contam para o limite de 50 000 URLs do sitemap.
- Tags
- Duas regras universais: autorreferência (cada página lista a si mesma) e reciprocidade (A→B exige B→A, ou o par é ignorado). Use URLs absolutas e totalmente qualificadas que correspondam à forma indexada exata.
- Códigos: idioma ISO 639-1 + região opcional ISO 3166-1 alpha-2 (
en-GB, nãoen-UK;ja, nãojp).x-defaulté o fallback reservado — opcional, mas o elemento mais negligenciado (56,3 % no meu estudo). - Automatize a partir de uma única fonte de verdade. WordPress precisa de WPML/Polylang (apenas Yoast não faz nada); Shopify Markets gera automaticamente tags recíprocas, mas muitas vezes apenas por idioma; custom/headless deve emitir hreflang a partir da tabela de tradução.
- Não redirecione automaticamente rastreadores por geolocalização — o Googlebot rastreia principalmente dos EUA, então isso pode desindexar clusters regionais; redirecione usuários, nunca bots.
- Valide o head renderizado, não apenas o view-source (tags injetadas por JS não aparecem no source); rastreie todo o cluster para verificar reciprocidade; verifique locais com
&hl=/&gl=; reavalie após cada mudança de URL.
Documentação oficial
Documentação de fonte primária para implementar hreflang.
- Versões localizadas das suas páginas — o documento de implementação principal: todos os três métodos com sintaxe exata, o requisito de reciprocidade, códigos válidos, a regra de URL absoluta e
x-default. - Gerenciando sites multirregionais e multilíngues — opções de estrutura de URL e o aviso sobre redirecionamento automático / cloaking (por que você não deve redirecionar geograficamente os rastreadores).
- Informe ao Google sobre versões localizadas (blog x-default, 2013) — a introdução original do
x-default. - Descontinuação do relatório de segmentação internacional (setembro de 2022) — o relatório antigo não existe mais; as tags hreflang ainda funcionam.
Bing / Microsoft
- Diretrizes para webmasters do Bing — as orientações do Bing; observe que o Bing depende mais de
content-languagee<html lang>do que de hreflang. - Série Bingbot: Maximizando a eficiência do rastreamento — contexto sobre como o Bing lida com sites internacionais/multilíngues.
CMS / plataforma
- WPML — Usando WordPress SEO (Yoast) com WPML — como o WPML gera hreflang (configuração de cabeçalho vs. sitemap).
- Shopify — Adicione tags hreflang no seu tema — o padrão manual de
<link>notheme.liquid.
Citações da fonte
Declarações registradas relevantes para a implementação. Cada link dos documentos do Google é um link profundo que salta para a passagem citada na página ao vivo.
Google — os três métodos
- “The three methods are equivalent from Google’s perspective and you can choose the method that’s the most convenient for your site.” (tradução) «Os três métodos são equivalentes do ponto de vista do Google e você pode escolher o método que for mais conveniente para o seu site.» — Documentação do Google Search Central. Ir para a citação
Google — posicionamento
- “The
<link>tags must be inside a well-formed<head>section of the HTML.” (tradução) «As tags<link>devem estar dentro de uma seção<head>bem formada do HTML.» — Documentação do Google Search Central. Ir para a citação
Google — as duas regras
- “Each language version must list itself as well as all other language versions.” (tradução) «Cada versão de idioma deve listar a si mesma e todas as outras versões de idioma.» — Documentação do Google Search Central. Ir para a citação
- “If two pages don’t both point to each other, the tags will be ignored.” (tradução) «Se duas páginas não apontarem uma para a outra, as tags serão ignoradas.» — Documentação do Google Search Central. Ir para a citação
- “Alternate URLs must be fully-qualified, including the transport method (http/https).” (tradução) «As URLs alternativas devem ser totalmente qualificadas, incluindo o método de transporte (http/https).» — Documentação do Google Search Central. Ir para a citação
Google — códigos
- “The first code of the hreflang attribute is the language code (in ISO 639-1 format) followed by an optional second code that represents the region code (in ISO 3166-1 Alpha 2 format).” (tradução) «O primeiro código do atributo hreflang é o código do idioma (no formato ISO 639-1) seguido por um segundo código opcional que representa o código da região (no formato ISO 3166-1 Alpha 2).» — Documentação do Google Search Central. Ir para a citação
John Mueller, Google — é uma dica, não uma diretriz
- Em tags autorreferenciais: autorreferências de hreflang são relatadas como opcionais, mas boa prática. — John Mueller, Google, transmitido via meu guia de hreflang da Ahrefs.
- Sobre a correção não garantir resultado (maio de 2025, Bluesky): Mueller observou que hreflang não garante indexação, então uma variante pode simplesmente não ser indexada, e que variantes do mesmo idioma (como
fr-frefr-be) são comumente consolidadas. — transmitido via cobertura do Search Engine Journal.
Qual método de implementação devo usar?
Trabalhe de cima para baixo e pare na primeira correspondência.
1. As páginas são arquivos não HTML (PDFs, documentos, imagens servidas diretamente)?
→ Sim → cabeçalhos HTTP Link:. Eles não têm <head>, então esta é sua única
opção. Defina o cabeçalho no servidor/CDN, listando o conjunto completo em cada arquivo.
→ Não → continue.
2. Você tem mais de um punhado de localidades, um pipeline de sitemap existente ou um
build headless/JAMstack?
→ Sim → sitemap XML <xhtml:link>. Gere-o programaticamente a partir da sua
tabela de tradução. Um arquivo gerado por máquina, sem marcação por página, mais fácil de revisar.
→ Não → continue.
3. Site pequeno/simples, poucas localidades, e você prefere manter tudo visível na
página?
→ Tags <link> HTML no <head>. Apenas certifique-se de que o bloco seja gerado a partir de
uma única fonte de verdade e esteja dentro de um <head> bem formado.
O que você escolher: use-o sozinho. O Google diz que não há benefício em combinar métodos, e cada cópia extra é um lugar para os três discordarem.
Preciso de x-default?
Você tem uma página que atende usuários que não correspondem a nenhuma das suas localidades explícitas — um
seletor de país/idioma ou uma página inicial global?
→ Sim → adicione x-default apontando para essa página de fallback.
→ Não → você pode pular. É opcional; o Google recorre à própria detecção. Não
quebrará o cluster (ao contrário de uma tag recíproca ausente). Adicioná-lo ainda é boa
prática — foi o elemento mais esquecido no meu estudo (56,3 %).
Devo redirecionar usuários automaticamente por localização?
Você está pensando em redirecionar com base em IP/geo? → Redirecione apenas visitantes humanos e prefira um banner não intrusivo a um redirecionamento forçado. → Nunca redirecione rastreadores por geo. O Googlebot rastreia principalmente dos EUA, então um geo-redirecionamento de rastreador pode desindexar suas outras versões regionais — e arrisca classificação de cloaking e exposição ao anti-geobloqueio da UE. Deixe os bots alcançarem cada variante de URL diretamente; o hreflang faz o sinal de roteamento.
Qual caminho de CMS se aplica a mim?
- WordPress? → Yoast sozinho não faz nada. Instale WPML ou Polylang; eles emitem hreflang (escolha saída no head vs. sitemap nas configurações de SEO do WPML).
- Shopify? → Markets gera automaticamente tags recíprocas — mas muitas vezes apenas de idioma.
Precisa de
fr-FRvsfr-CA? Adicione tags manuais emtheme.liquidou um aplicativo, e não misture os dois (risco de conflito). - Personalizado / headless? → Emita
<xhtml:link>(ou tags no head) a partir da sua tabela de relacionamento de tradução no momento do build/serve.
SOP: Envie um cluster de hreflang do zero
Um procedimento repetível para adicionar um novo cluster de hreflang (ou uma nova localidade a um existente). Execute-o de cima para baixo.
1. Construa a matriz de localidades (fonte única de verdade).
Liste cada URL e seu código de idioma-região em um só lugar — uma tabela de banco de dados, um campo
de tradução do CMS ou uma planilha. Confirme que cada URL é a forma canônica e indexada
(protocolo correto, www, barra final, maiúsculas/minúsculas). Esta tabela é a entrada para
tudo abaixo; nada é digitado manualmente downstream.
2. Escolha um método usando a lente de Árvores de Decisão. Não combine métodos.
3. Gere as anotações a partir da matriz.
- HTML: emita o bloco
<link>no<head>de cada página a partir da matriz. - Sitemap: emita cada bloco
<url>com o namespacexmlns:xhtmlem<urlset>. - Cabeçalhos: emita o cabeçalho
Link:a partir da matriz no servidor/CDN.
4. Verifique as duas regras programaticamente antes de publicar. Cada entrada deve (a) incluir uma autorreferência e (b) listar todas as outras entradas do cluster. Confirme a reciprocidade: para cada A→B, existe um B→A correspondente.
5. Adicione x-default se você tiver uma página seletora ou de fallback global.
6. Publique e depois valide a saída renderizada (veja a lente Playbooks para o
runbook detalhado de validação): head renderizado (não view-source), um crawl do cluster completo
para reciprocidade e uma verificação de SERP com &hl=/&gl=.
7. Integre isso às verificações contínuas. Adicione um crawl recorrente / teste de regressão para que uma futura mudança de URL ou novo locale não possa apodrecer silenciosamente uma tag de retorno. A validação não é uma tarefa única.
Ao adicionar um locale posteriormente: você só edita a matriz (passo 1) e reexecuta os passos 3–6. Se você está editando manualmente páginas individuais para adicionar um locale, sua fonte de verdade está errada — corrija isso primeiro.
Playbook: “Meu hreflang não está funcionando” — runbook de validação
Execute estes em ordem. Cada passo ou encontra a falha ou elimina um suspeito.
Passo 1 — Confirme que as tags realmente renderizam. Abra a página e veja o DOM renderizado (GSC URL Inspection → Test Live URL → View Tested Page, ou um crawler de renderização). Não confie em Ctrl+U “View Page Source” — se o hreflang é injetado via JS, ele não aparecerá lá mesmo estando ativo.
- Tags presentes no head renderizado → vá para o Passo 3.
- Tags ausentes no head renderizado → Passo 2.
Passo 2 — As tags estão no <head> ou no <body>?
Se as tags existem no source mas estão dentro do <body>, elas são inválidas. Uma tag <p> malformada ou
injetada ou um iframe provavelmente fechou o <head> cedo. Use breakpoints de DOM do navegador
para encontrar onde o <head> quebra, corrija esse markup e verifique novamente.
Passo 3 — Verifique se as URLs são absolutas e canônicas.
Cada href deve ser totalmente qualificado (https://…) e byte idêntico à forma indexada
(protocolo, www, barra final, maiúsculas/minúsculas). Confirme que nenhum aponta para uma URL 301, 404,
noindexed ou canonicalizada.
Passo 4 — Verifique a reciprocidade em todo o cluster. Rastreie todo o cluster (Screaming Frog / Ahrefs Site Audit). Para cada A→B, verifique se existe um B→A correspondente e que cada página se autorreferencia. É aqui que a maioria das falhas vive — uma única tag de retorno ausente derruba o par.
Passo 5 — Valide os códigos.
Confirme idioma ISO 639-1 + região ISO 3166-1 alpha-2. Procure especificamente por
en-UK (→ en-GB), jp (→ ja), códigos de três letras e códigos apenas de região.
Passo 6 — Descarte geo-redirecionamentos. Confirme que os crawlers não estão sendo geo-redirecionados. Se o Googlebot (rastreando dos EUA) for redirecionado para sua versão dos EUA, suas outras URLs regionais podem nunca ser alcançadas.
Passo 7 — Redefina as expectativas se o cluster estiver tecnicamente correto.
Se tudo acima estiver correto e variantes do mesmo idioma (ex.: fr-fr / fr-be)
ainda forem consolidadas nos relatórios, isso é esperado — o Google pode consolidar
variantes quase idênticas do mesmo idioma independentemente da implementação. É uma dica, não
uma diretiva; hreflang errado ou ignorado não é uma penalidade. Pare de perseguir isso como um bug.
Anti-padrões de implementação
Erros concretos, por que estão errados e o que fazer em vez disso.
1. Manter hreflang manualmente por página. Por que está errado: no momento em que um template ou locale diverge, as tags de retorno desaparecem e os pares são descartados — podridão de reciprocidade em escala. Em vez disso: gere cada anotação a partir de uma única fonte de verdade (tabela de tradução, campo de CMS ou o template Sheets para sites pequenos), para que todo o cluster seja regenerado, não editado.
2. Usar todos os três métodos para “sinal extra.” Por que está errado: o Google diz que não há benefício, e três cópias da verdade significam três chances de elas discordarem. Em vez disso: escolha um método e use-o sozinho.
3. Redirecionamento automático de rastreadores por geo/IP. Por que está errado: o Googlebot rastreia principalmente dos EUA, então um redirecionamento geográfico de rastreador pode desindexar completamente seus outros clusters regionais — além de cloaking e exposição ao anti-geoblocking da UE. Em vez disso: redirecione (ou melhor, use um banner) apenas usuários; nunca rastreadores. Deixe que os bots acessem cada URL diretamente e deixe o hreflang carregar o sinal.
4. Apontar hreflang para URLs não canônicas, redirecionadas ou com noindex.
Por que está errado: o link de retorno resolve para uma página 301/404/noindex, então o
par quebra (16,9% referenciaram páginas quebradas/redirecionadas, 8,0% não canônicas no meu
estudo).
Em vez disso: cada variante se canoniciza para si mesma; hreflang aponta apenas para URLs vivas,
canônicas e indexáveis — regeneradas sempre que as URLs mudarem.
5. URLs relativas ou relativas a protocolo.
Por que está errado: o Google exige URLs totalmente qualificadas; /foo e //example.com/foo
são inválidas, e até formas absolutas, mas incompatíveis (barra/www/maiúsculas erradas) falham na
correspondência de reciprocidade.
Em vez disso: use sempre https://example.com/foo, correspondendo à forma indexada exata.
6. Confiar em “Ver código-fonte da página” como validação.
Por que está errado: hreflang injetado por JS não aparece no código-fonte bruto, então você ou
pensa que está faltando (não está) ou não percebe que ele é renderizado no <body> (inválido).
Em vez disso: valide o DOM renderizado via Inspeção de URLs do GSC ou um
rastreador de renderização.
7. Códigos de localidade errados ou inventados.
Por que está errado: en-UK, jp, ger e códigos apenas de região são inválidos e
ignorados.
Em vez disso: idioma ISO 639-1 + região opcional ISO 3166-1 alpha-2 — en-GB,
ja, de, es-MX.
Antes / depois
1. Tag recíproca ausente (o clássico). Antes: a página dos EUA lista EUA + Reino Unido + Alemanha, mas o modelo da página alemã lista apenas Alemanha + EUA — esqueceu o link de retorno do Reino Unido. O Google descarta o par Alemanha↔Reino Unido. Depois: o bloco da página alemã lista Alemanha + EUA + Reino Unido (todos autorreferenciados e recíprocos). Regenerado a partir da tabela de localidades para que não possa divergir novamente.
2. URLs relativas.
Antes: <link rel="alternate" hreflang="de" href="/de/" /> — relativa, então é
inválida e ignorada.
Depois: <link rel="alternate" hreflang="de" href="https://example.com/de/" /> —
totalmente qualificada e correspondendo à forma indexada.
3. Código do Reino Unido errado.
Antes: <link rel="alternate" hreflang="en-uk" href="https://example.com/uk/" />
— uk é ucraniano; a anotação é inválida.
Depois: <link rel="alternate" hreflang="en-gb" href="https://example.com/uk/" />.
4. Sitemap sem o namespace.
Antes: um sitemap usando entradas <xhtml:link> mas com um <urlset> que apenas
declara o namespace base de sitemaps — cada <xhtml:link> é inválido.
Depois: <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"> — o namespace xhtml é declarado, então
as anotações validam.
Prompts de IA prontos para copiar
Adapte os espaços reservados e cole no assistente de sua preferência. Sempre valide a saída com um rastreamento real — um LLM pode gerar códigos plausíveis, mas errados, ou perder um link de retorno.
Gere um bloco <head> de HTML a partir de uma matriz de locales
I have these language/region page variants:
- en-US: https://example.com/us/
- en-GB: https://example.com/uk/
- de: https://example.com/de/
- global fallback / selector: https://example.com/
For EACH page above, output the complete hreflang <link> block that belongs in its
<head>. Every block must (a) self-reference, (b) list all other variants, and
(c) include an x-default pointing at the fallback. Use fully-qualified https URLs
exactly as given. Validate the codes as ISO 639-1 language + ISO 3166-1 alpha-2
region and flag any that look wrong.Convert the same matrix into an XML sitemap block
Using the same variant list, output an XML sitemap that uses <xhtml:link> hreflang
annotations. Requirements: declare xmlns:xhtml="http://www.w3.org/1999/xhtml" on
<urlset>; give every <url> block a full self-referencing + all-alternates set; use
the exact URLs provided. Do not add any URL not in my list.Audite um cluster colado para verificar reciprocidade + erros de código
Here are the hreflang tags from each page in my cluster: [paste each page's URL and
its hreflang tags]. Check for: missing self-reference, missing reciprocal (A->B
without B->A), invalid ISO codes, relative/protocol-relative URLs, and any URL that
appears with inconsistent formatting (trailing slash / www / case). List each issue
with the exact page and tag it's on. Do not assume tags I didn't paste. Snippets de extração, console e geração
One-liners práticos para construir e verificar hreflang. Ajuste as URLs antes de executar.
Chrome DevTools Console — liste as tags hreflang na página atual Cole no Console (F12 → Console) em qualquer página para ver o que o navegador realmente renderizou — isso reflete tags injetadas por JS que o “View Source” não mostra:
[...document.querySelectorAll('link[rel="alternate"][hreflang]')]
.map(l => ({ hreflang: l.hreflang, href: l.href,
inHead: !!l.closest('head') }));O sinalizador inHead é o indicador do bug de quebra de <head>: qualquer tag que mostre
inHead: false está renderizando no <body> e é inválida.
Bookmarklet — mesma verificação, um clique Salve como favorito com esta URL e clique em qualquer página:
javascript:(()=>{const t=[...document.querySelectorAll('link[rel="alternate"][hreflang]')].map(l=>`${l.hreflang} ${l.href} ${l.closest('head')?'(head)':'(BODY - INVALID)'}`);alert(t.length?t.join('\n'):'No hreflang tags found');})();XPath — selecione links hreflang dentro do head (para um crawler / inspetor de navegador)
//head/link[@rel='alternate' and @hreflang]Se um crawler encontrar correspondências link[@hreflang] sob //body em vez disso, esse é o
bug de quebra de head.
Regex — extraia código hreflang + URL de HTML bruto (grep rápido, não um parser real)
<link[^>]*rel=["']alternate["'][^>]*hreflang=["']([^"']+)["'][^>]*href=["']([^"']+)["']O grupo de captura 1 é o código, o grupo 2 é a URL. Use apenas para um grep rápido de sanidade — analise HTML real com uma biblioteca DOM, não regex.
curl — verifique hreflang nos cabeçalhos de resposta HTTP Link: (o caso PDF/não-HTML)
curl -sI https://example.com/file.pdf | grep -i '^link:'Python — gere um bloco <head> hreflang autoconsistente a partir de uma matriz
variants = {
"en-us": "https://example.com/us/",
"en-gb": "https://example.com/uk/",
"de": "https://example.com/de/",
"x-default": "https://example.com/",
}
# Every page gets the SAME full block (self-reference + all alternates),
# which is exactly what satisfies reciprocity.
block = "\n".join(
f'<link rel="alternate" hreflang="{code}" href="{url}" />'
for code, url in variants.items()
)
print(block) Teste-se: Implementando hreflang
Cinco perguntas rápidas sobre como construir um cluster hreflang corretamente. Escolha uma resposta para cada uma e depois verifique.
Recursos que valem seu tempo
Meus escritos relacionados
- Hreflang: The Easy Guide for Beginners — meu guia da Ahrefs com todos os três métodos, os nove problemas comuns de implementação e correções, e o modelo do Google Sheets para geração semiautomatizada de hreflang em escala.
- Over 67% of Domains Using Hreflang Have Issues — meu estudo de 374 756 domínios, o maior já realizado, e a fonte da análise da taxa de erro (x-default ausente 56,3%, autorreferência ausente 18,0%, alvos quebrados/redirecionados 16,9%, recíproca ausente 15,3%, não canônico 8,0%, códigos ruins 4,6%).
Minhas palestras
- International SEO: The Weird Technical Parts — Pubcon Vegas 2019 — a fonte de implementação mais rica: o bug da quebra de
<head>(tags forçadas para dentro do<body>por iframes/marcação malformada) e a depuração de pontos de quebra no DOM, por que “sitemaps são mais rápidos” é um mito, o risco de desindexação por geo-redirect, e a técnica de verificação de SERP com&hl=/&gl=. - Hreflang Study and Interesting Issues — Brighton SEO 2023 — os slides por trás do estudo, além da ordem de correspondência mais específica do Google (idioma+país → idioma → x-default) e os erros de código mais comuns no conjunto de dados.
- You’re Going To Screw Up International SEO — Pubcon Vegas 2017 — o ecossistema do caos de implementação: ferramentas reportando informações erradas, conteúdo servido de URLs diferentes das que estão indexadas, armadilhas de páginas duplicadas.
Do resto do setor
- Localized versions of your pages, do Google — o documento de implementação principal; a sintaxe exata para os três métodos, as regras de reciprocidade/auto-referência, códigos válidos e o requisito de URL absoluta. Leia-o por completo antes de construir.
- Managing multi-regional and multilingual sites, do Google — opções de estrutura de URL e o aviso sobre auto-redirect/cloaking por trás de “redirecione usuários, não crawlers.”
- WPML — Using WordPress SEO (Yoast) with WPML — como o WordPress realmente gera hreflang (o Yoast sozinho não gera), e a configuração de saída no head versus no sitemap.
- Shopify — Add hreflang tags in your theme — o padrão manual de
<link>notheme.liquidpara quando as tags apenas de idioma do Shopify Markets não são específicas o suficiente. - Screaming Frog — How To Audit & Test Hreflang — o fluxo de trabalho baseado em crawl para confirmar a reciprocidade em todo um cluster, em vez de verificar apenas uma URL.
- Google Reminds That Hreflang Tags Are Hints, Not Directives — Search Engine Journal, maio de 2025, sobre o esclarecimento de Mueller quanto à consolidação de mesmo idioma (por que um cluster tecnicamente perfeito ainda pode ser consolidado).
- r/TechSEO — a comunidade para depurar clusters de hreflang quebrados.
Prove que o cluster de hreflang realmente foi publicado
O hreflang falha silenciosamente: as tags podem estar presentes, bem-formadas e ainda assim serem ignoradas se a perna de retorno estiver faltando. “Está no código” não é o teste — a reciprocidade em todo o cluster é. Execute estes testes depois de implantar um conjunto de idioma/região.
Teste 1 — Cada par retorna a tag (reciprocidade)
- Teste a executar — Faça o crawl de todo o cluster com o returntag (ele verifica se cada página A para a qual uma página aponta realmente aponta de volta para A), ou execute o relatório de hreflang do Screaming Frog no conjunto.
- Resultado esperado — 0 pares não recíprocos e cada URL se auto-referencia. Zero erros, não “alguns.”
- Interpretação de falha — Um par unidirecional (A → B, mas B não → A) significa que o Google descarta esse par — a falha mais comum no mundo real, e invisível se você só verificar uma URL no view-source.
- Janela de monitoramento — Imediata para as tags renderizadas; o verificador lê o que está ativo agora.
- Gatilho de rollback — Qualquer par não recíproco, ou uma tag apontando para uma URL que retorna 301 ou 404 — corrija a fonte da verdade e reimplante antes de esperar pelo Google.
Teste 2 — O Google está processando corretamente
- Teste a executar — O Google aposentou o antigo relatório de Segmentação Internacional no Search Console em setembro de 2022, então não confie nele — verifique Page Indexing para cada localidade no cluster e confirme via URL Inspection em uma amostra de páginas que o “canônico selecionado pelo Google” e o status de indexação estejam alinhados com o que você espera para essa localidade.
- Resultado esperado — As páginas pretendidas de cada localidade estão indexadas (não “Duplicado, o Google escolheu um canônico diferente” de uma forma que colapsa versões de idiomas distintos em uma só), e a URL Inspection mostra a alternativa que você espera.
- Interpretação de falha — Páginas aparecendo como duplicatas do canônico de outra localidade, ou indexação agrupada/consolidada, geralmente remonta a uma perna de retorno quebrada (reverifique o Teste 1) em vez do próprio hreflang — hreflang é uma dica, não uma diretiva, então um cluster tecnicamente perfeito ainda pode ser consolidado se o Google julgar o conteúdo quase duplicado.
- Janela de monitoramento — 2–4 semanas — o Search Console rastreia e relata o cluster ao longo do tempo, não instantaneamente.
- Gatilho de reversão — As páginas de uma localidade indexando consistentemente sob o canônico errado, ou a URL regional errada aparecendo para uma consulta — reavalie a reciprocidade primeiro; não presuma que as tags “não estão funcionando” quando a perna de retorno é a lacuna real.
Registro de alterações
Atualizado em 25 de jul. de 2026.
Resumo editorial e detalhes registrados da alteração.Detalhes da alteração
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
Não é possível fazer a comparação completa — nenhum instantâneo anterior foi arquivado para esta revisão.
Atualizado em 18 de jul. de 2026.
Resumo editorial e detalhes registrados da alteração.Detalhes da alteração
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
Não é possível fazer a comparação completa — nenhum instantâneo anterior foi arquivado para esta revisão.