hreflang explicado: nossa configuração em 12 idiomas e 5 erros comuns
Resposta curta: hreflang é uma anotação que diz ao Google quais páginas são versões do mesmo conteúdo em outro idioma ou região, para que a Pesquisa leve cada pessoa à versão certa. Cada versão precisa citar a si mesma e todas as outras, e cada par precisa apontar um para o outro, senão as tags podem ser ignoradas. Abaixo você vê como o seogrinder.com configura o hreflang para doze idiomas e cinco erros de hreflang tirados da documentação do Google.
O que o hreflang faz e quando você precisa dele?
O Google explica a ideia na página Tell Google about localized versions of your page: se você tem várias versões de uma página para idiomas ou regiões diferentes, avisar o Google sobre elas ajuda a Pesquisa a levar as pessoas à versão mais adequada. No original: “help Google Search point users to the most appropriate version of your page by language or region”.
O Google cita três situações em que a anotação é recomendada:
- O conteúdo principal fica em um só idioma e só o modelo da página (navegação, rodapé) é traduzido.
- Há pequenas variações regionais de um conteúdo parecido no mesmo idioma, por exemplo inglês para os EUA, a Grã-Bretanha e a Irlanda.
- O conteúdo é totalmente traduzido, por exemplo uma versão em alemão e outra em inglês de cada página.
O Google pode achar as versões sozinho, mas diz que, em geral, é melhor indicá-las de forma explícita. Uma página traduzida não é duplicata: as versões “are only considered duplicates if the main content of the page remains untranslated” (Google).
Duas coisas que o hreflang não é. Ele não é o caminho pelo qual o Google descobre o idioma de uma página: o Google escreve que “doesn't use hreflang or the HTML lang attribute to detect the language of a page” (Google), e a página sobre sites multilíngues acrescenta que, para isso, ele usa o conteúdo visível. E ele não é promessa de ranking: o Google cita um único propósito, mostrar a cada pessoa que pesquisa a versão correspondente.
Como o seogrinder.com liga doze idiomas
Esta seção descreve o blog do seogrinder.com como o encontramos em 5 de novembro de 2026. A página inicial / não leva tags hreflang. Cada artigo é uma página própria em um idioma. Leia as tags você mesmo:
curl -sS https://seogrinder.com/pt/blog/checklist-de-auditoria-seo | grep '<link rel="alternate" hreflang'
O resultado são 13 linhas, as mesmas nas doze versões desse artigo:
<link rel="alternate" hreflang="en" href="https://seogrinder.com/en/blog/seo-audit-checklist">
<link rel="alternate" hreflang="ar" href="https://seogrinder.com/ar/blog/qaimat-tadqiq-seo">
<link rel="alternate" hreflang="de" href="https://seogrinder.com/de/blog/seo-audit-checkliste">
<link rel="alternate" hreflang="es" href="https://seogrinder.com/es/blog/checklist-seo-auditoria">
<link rel="alternate" hreflang="fr" href="https://seogrinder.com/fr/blog/checklist-audit-seo-gratuite">
<link rel="alternate" hreflang="hi" href="https://seogrinder.com/hi/blog/seo-audit-checklist-hindi">
<link rel="alternate" hreflang="it" href="https://seogrinder.com/it/blog/checklist-audit-seo">
<link rel="alternate" hreflang="ja" href="https://seogrinder.com/ja/blog/seo-chekkurisuto">
<link rel="alternate" hreflang="ko" href="https://seogrinder.com/ko/blog/seo-chekeuliseuteu-jeomgeom">
<link rel="alternate" hreflang="nl" href="https://seogrinder.com/nl/blog/seo-audit-checklist-uitvoeren">
<link rel="alternate" hreflang="pl" href="https://seogrinder.com/pl/blog/checklista-seo-audyt">
<link rel="alternate" hreflang="pt" href="https://seogrinder.com/pt/blog/checklist-de-auditoria-seo">
<link rel="alternate" hreflang="x-default" href="https://seogrinder.com/en/blog/seo-audit-checklist">
O que o bloco mostra:
- Um só método. As tags ficam no head do HTML. Essas páginas não enviam hreflang em um cabeçalho HTTP, e o
sitemap.xmlnão tem entradasxhtml:link. O Google chama os três métodos de equivalentes e não vê vantagem em usar todos. - Códigos de idioma simples. Doze códigos, sem região, porque cada idioma tem exatamente uma versão do artigo.
- A página cita a si mesma. Na versão em português, a linha
pté o endereço da própria página. As doze versões levam as mesmas linhas. - Tags simples. Ficam no
<head>, um<link>para cada versão, sem atributos extras. O Google pede um head bem formado e avisa para não misturar hreflang com atributos comomediana mesma tag. - O canonical aponta para a própria página. Cada versão cita o próprio endereço como canonical, e não o da versão em inglês. Isso combina com a afirmação do Google de que versões traduzidas não são duplicatas.
- Um endereço por idioma, sem redirecionamento automático.
/pt/blog/checklist-de-auditoria-seotem um slug em português. O Google recomenda endereços próprios para cada idioma em vez de cookies ou configurações do navegador e desaconselha redirecionar visitantes pelo idioma que se presume que falem. Uma requisição à página em inglês comAccept-Language: deretorna 200 e fica ali (testado em 5 de novembro de 2026). Cada artigo também tem um menu de idiomas com links simples para as outras versões.
Como foi construído. Cada arquivo de artigo nomeia o seu tema em uma linha group. O código do blog reúne todos os arquivos com o mesmo group, imprime um <link> para cada membro (inglês primeiro, depois por código de idioma) e define o x-default como a versão em inglês. Um idioma sem arquivo não ganha linha. Por isso, um tema que existe só em inglês e em alemão leva três linhas: en, de e x-default. O Google aceita conjuntos incompletos: “you can omit some languages on some pages; Google will still process the ones that point to each other” (Google).
Como contamos. Este laço lê todos os endereços de artigo do sitemap e conta as linhas de hreflang em cada página:
for u in $(curl -sS https://seogrinder.com/sitemap.xml | grep -o 'https://seogrinder.com/[a-z][a-z]/blog/[^<]*'); do
curl -sS "$u" | grep -c '<link rel="alternate" hreflang'
done | sort | uniq -c
Em 5 de novembro de 2026, o resultado foi 408 13: 408 páginas com 13 linhas (doze idiomas mais o x-default). Depois, um pequeno script buscou as mesmas 408 páginas e comparou as tags: toda página cita a si mesma, todo endereço citado responde 200 e cita a página de volta, e o x-default é o endereço em inglês. A nossa verificação do blog (check:blog) testa essas regras em toda página de artigo a cada mudança no blog.
Para que serve o x-default?
O Google descreve o x-default como “recommended for specifying the fallback page for users whose language settings don't match any of your site's localized versions” (Google). Não é obrigatório.
O Google acrescenta que qualquer página pode levar o valor, mas que ele “was designed for language selector pages and so it will work best with those”. Não temos uma página de seleção de idioma para os artigos, então a nossa página de reserva é a versão em inglês do mesmo artigo; nas páginas de visão geral do blog, é /en/blog. Essa é uma decisão nossa, não uma regra.
Erros comuns: 5 erros de hreflang da documentação do Google
A página do Google tem uma seção “Common Mistakes” com três itens, e as diretrizes trazem mais duas exigências com “must”. São esses os cinco abaixo. O Google não diz com que frequência cada um acontece. Só dois vêm com uma consequência declarada: links de retorno ausentes (as tags são ignoradas) e códigos de região reservados (essa parte é ignorada). Nos demais, a página só enuncia a regra.
1. Links de retorno ausentes
Se a página X cita a página Y, a página Y precisa citar a página X. A regra nas palavras do Google: “If two pages don't both point to each other, the tags will be ignored” (Google). O Google dá o motivo: um site alheio não pode poder se declarar versão alternativa da sua página. Resolva imprimindo o mesmo bloco de links em todas as versões, a partir de uma única fonte. Se manter o conjunto completo for difícil, o Google permite omitir alguns idiomas em algumas páginas, mas diz que idiomas recém-adicionados devem apontar nos dois sentidos para o original ou o dominante.
2. Uma versão que não cita a si mesma
A diretriz vale para todos os métodos: “Each language version must list itself as well as all other language versions” (Google). No método HTML, isso significa um link para cada variante, “including itself”, e um conjunto idêntico em todas as versões. O Google não diz o que acontece sem a autorreferência; trate como erro e acrescente a linha.
3. Códigos de idioma que não são válidos
A primeira parte do valor é um idioma no formato ISO 639-1, seguido, se quiser, de uma região. O Google escreve: “Specifying the region alone is not valid”. No exemplo da Bélgica, be está errado porque é o código do bielorrusso; os corretos são de-BE, nl-BE e fr-BE. Códigos que não estão nessas normas, como es-419, não são aceitos (códigos de escrita como zh-Hans são permitidos). Maiúsculas e minúsculas não importam, mas a região em maiúsculas segue a norma.
4. Códigos de região que não são válidos
A região precisa ser um código ISO 3166-1 Alpha 2 oficialmente atribuído. Para códigos reservados a outra coisa, vale: “Google Search ignores that part of the annotation”. O Google cita EU, UN e UK como sem efeito. Para o Reino Unido, o código é GB, como no próprio exemplo do Google, en-GB.
5. Endereços relativos ou incompletos
“Alternate URLs must be fully-qualified, including the transport method (http/https)” (Google). O exemplo do Google: https://example.com/foo, e não //example.com/foo nem /foo.
Como verificar o hreflang
À mão: rode o comando curl acima em uma das suas páginas e veja se a página cita a si mesma. Depois rode o comando em cada endereço da saída e procure a primeira página; esse é o teste dos links de retorno. O Google também lista ferramentas de teste de terceiros e diz que elas “are not maintained or checked by Google”.
Com o SEOgrinder, que é a nossa própria ferramenta e que nós construímos: analise uma página, abra a aba “Página no Google” e encontre o cartão “Idiomas (hreflang)”. Ele confere os códigos, a autorreferência, o x-default, se os destinos respondem e se eles apontam de volta. Quando tudo está certo, aparece uma linha; caso contrário, o cartão lista cada verificação com o resultado, e os problemas entram na lista de tarefas.
| Erro | O que o SEOgrinder mostra (exemplo de texto) |
|---|---|
| 1. Links de retorno ausentes | “2 destinos não ligam de volta” |
| 2. Sem autorreferência | “A página não se refere a si própria” |
| 3 e 4. Códigos inválidos | “1 código de idioma inválido” (idioma e região são conferidos contra as normas que o Google cita) |
| 5. Endereços relativos | Sem linha própria: o SEOgrinder resolve um endereço relativo em relação à página antes de verificar, então procure esse erro no código-fonte |
Dois limites. Ele busca no máximo dez destinos por página; nas nossas páginas, com 13 entradas, ele verifica dez e diz isso (“10 de 13 entradas obtidas e verificadas”). E ele avalia a página que você digita; para um site inteiro, percorra os endereços em um laço, como acima.
Perguntas frequentes
Preciso de hreflang se cada idioma tem o seu próprio endereço?
Não é obrigatório. O Google pode achar as versões sem ele, mas diz que, em geral, é melhor indicá-las de forma explícita.
O hreflang melhora o meu ranking?
A página do Google não afirma isso. Ela descreve o propósito como levar as pessoas à versão mais adequada por idioma ou região. Ninguém pode prometer uma posição.
Qual dos três métodos devo usar?
Para o Google, eles são equivalentes, e usar vários não traz benefício. O Google observa que as tags HTML servem a sites sem sitemap ou sem controle sobre cabeçalhos e que o cabeçalho serve a arquivos que não são HTML, como PDFs. Nós usamos as tags HTML.
Seu próximo passo
Rode o comando curl em uma das suas páginas e confira se ela cita a si mesma e se um destino aponta de volta. Depois analise a página com o SEOgrinder, abra “Página no Google”, corrija a primeira linha do cartão “Idiomas (hreflang)” que apontar um problema e clique em Verificar de novo. Para ver onde o hreflang se encaixa entre oito grupos de verificações, use a nossa checklist de auditoria SEO.