Hreflang é a anotação que liga as versões de uma mesma página feitas para idiomas ou países diferentes. Com ela, o Google sabe que /pt-br/botas/ e /es/botas/ são a mesma página em duas línguas e mostra a cada pessoa o endereço que combina com ela. Este guia mostra quando vale usar, como escrever os códigos, os três lugares onde a marcação pode morar e os erros que encontramos em sites brasileiros.
O que é hreflang e o que ele muda no Google?
Em termos simples, o hreflang avisa o buscador: "esta página tem versões alternativas, e cada uma serve a este idioma, ou a este idioma neste país". O Google usa a informação para trocar o endereço que aparece no resultado. Quem pesquisa em Lisboa vê a versão de Portugal; quem pesquisa em Buenos Aires vê a de espanhol.
Três pontos que costumam sair errados nas explicações por aí:
- Não é o hreflang que faz o Google entender o idioma. A documentação do Google diz que ele detecta a língua da página por algoritmo, lendo o conteúdo visível, e não usa para isso nem o hreflang nem o atributo
langdo HTML. - Não é obrigatório para o Google achar as versões. Ele pode descobrir as traduções sozinho, mas recomenda declarar, porque assim não precisa adivinhar.
- Não é atalho para subir de posição. O papel dele, segundo o Google, é levar cada pessoa à versão certa; a documentação não fala em ranking. Ele decide qual das suas versões aparece.
E o Bing? Durante anos se repetiu que ele ignorava o hreflang. Num post do blog oficial de dezembro de 2025, sobre conteúdo duplicado, a equipe do Bing recomenda usar hreflang para indicar idioma e região, com um exemplo de en-gb. Ou seja, hoje os dois buscadores recomendam a mesma marcação.
Seu site precisa de hreflang?
Precisa quando a mesma página existe em mais de um endereço, cada um para um público de língua ou país diferente. Os casos mais comuns aqui no Brasil:
- Tradução completa. A fábrica de calçados de Franca que tem o catálogo em português, espanhol e inglês.
- Mesmo idioma, países diferentes. Uma editora com páginas para o Brasil e para Portugal, mudando ortografia, preço em euro e prazo de entrega. Ou uma loja com uma versão para a Argentina e outra para o México.
- Só o modelo traduzido. Fóruns e sites de avaliações em que menu e rodapé mudam de língua, mas o conteúdo de quem escreve fica no original. O Google cita esse caso como um dos que pedem a marcação.
Não precisa quando o site tem uma língua só. O Nota do Site, por exemplo, existe apenas em português do Brasil: declara lang="pt-BR" em todas as páginas e não usa hreflang, porque não há outra versão para apontar. Também não adianta nada se o idioma muda por cookie ou por um botão que troca o texto sem trocar o endereço. Sem um URL para cada versão, não existe o que anotar.
Que estrutura de endereço usar para cada idioma ou país?
O Google recomenda um endereço próprio para cada versão. As opções que ele lista, com o que pesa a favor e contra:
| Estrutura | Exemplo | A favor | Contra |
|---|---|---|---|
| Domínio de país | exemplo.pt, exemplo.com.ar |
Sinal claro do país; servidor pode ficar em qualquer lugar | Mais caro, mais domínios para manter, cada um vale para um país só |
| Subdomínio | pt.exemplo.com |
Fácil de configurar; permite servidores separados | O visitante pode não saber se pt é idioma ou país |
| Subpasta | exemplo.com/pt-pt/ |
Um domínio só, pouca manutenção | Um servidor só; mais difícil separar depois |
| Parâmetro | exemplo.com?loc=pt |
Nenhum | O Google não recomenda |
Um detalhe que pega muita empresa brasileira: .com.br é domínio de país. Ele diz ao Google que o site foi feito para o Brasil. Se a ideia é atender Portugal e a Argentina com subpastas, um domínio genérico como .com deixa o sinal mais limpo, e o hreflang faz o resto página por página.
O Google também avisa o que não fazer:
- Não redirecione pelo IP nem pelo idioma do navegador. O robô do Google rastreia quase sempre a partir dos Estados Unidos e manda as requisições sem o cabeçalho
Accept-Language. Se a home leva todo visitante americano para/en/, a versão em português pode nunca ser vista. - Deixe o visitante trocar de versão. Um link para cada idioma no topo ou no rodapé resolve quem caiu na página errada.
- Não espere que o endereço faça o trabalho. O Google diz que não usa o
enou odede um subdomínio para decidir o público da página, nem o URL para descobrir o idioma. Quem diz isso é o hreflang.
Se você procurou no Search Console a antiga opção de escolher o país do site, ela não existe mais. A página de ajuda informa que o relatório de segmentação internacional foi descontinuado e que o Google segue usando o hreflang. Guias que ainda mandam configurar o país por lá estão desatualizados.
Como escrever os códigos de idioma e país?
O código tem uma ou duas partes, separadas por hífen. A primeira é o idioma, em duas letras da norma ISO 639-1. A segunda, opcional, é o país, em duas letras da ISO 3166-1 alfa-2. O Google não diferencia maiúsculas de minúsculas, mas o costume é escrever o país em maiúsculas: pt-BR. A lista oficial mais fácil de consultar é o registro de subtags de idioma da IANA.
| Código | Quer dizer | Funciona? |
|---|---|---|
pt |
Português, em qualquer país | Sim |
pt-BR |
Português para quem está no Brasil | Sim |
pt-PT |
Português para quem está em Portugal | Sim |
pt-AO |
Português para Angola | Sim |
es-AR |
Espanhol para a Argentina | Sim |
en |
Inglês, em qualquer país | Sim |
br |
Bretão, uma língua da França | Válido, mas é outro idioma |
pt_BR |
Formato de sistema, com sublinhado | Não: o Google pede hífen |
BR |
Só o país | Não: o primeiro código é sempre o idioma |
en-UK |
Inglês para o "Reino Unido" | Não: o código do país é GB |
es-419 |
Espanhol para a América Latina | Não: o Google não aceita códigos fora das duas normas |
Duas armadilhas da tabela merecem atenção. O pt_BR com sublinhado é o jeito como muitos sistemas guardam a localidade internamente, e de vez em quando alguém copia esse valor direto para o hreflang. E o es-419, que parece perfeito para "toda a América Latina", é ignorado pelo Google. Para atingir o continente inteiro, use es e, se houver páginas próprias para alguns países, acrescente es-AR, es-MX e assim por diante.
Quando você tem várias versões do mesmo idioma para países específicos, o Google recomenda ter também uma genérica. Com pt-BR e pt-PT declarados, um leitor de Moçambique não se encaixa em nenhum. Marque uma das duas também como pt, e ele cai nela.
Como declarar o hreflang no HTML, no cabeçalho HTTP ou no sitemap?
Existem três lugares, e o Google trata os três como equivalentes. Usar mais de um ao mesmo tempo não traz vantagem e multiplica o trabalho de manter tudo igual. Escolha um.
1. No HTML. É o mais comum. Dentro do <head> de cada versão, entra uma linha para cada versão, inclusive a própria página. Na fábrica de calçados, com o catálogo em exemplo.com:
<link rel="alternate" hreflang="pt-BR" href="https://www.exemplo.com/pt-br/botas/" />
<link rel="alternate" hreflang="pt-PT" href="https://www.exemplo.com/pt-pt/botas/" />
<link rel="alternate" hreflang="pt" href="https://www.exemplo.com/pt-br/botas/" />
<link rel="alternate" hreflang="es" href="https://www.exemplo.com/es/botas/" />
<link rel="alternate" hreflang="en" href="https://www.exemplo.com/en/boots/" />
<link rel="alternate" hreflang="x-default" href="https://www.exemplo.com/" />
A linha pt manda para a versão brasileira quem fala português fora do Brasil e de Portugal. O bloco é idêntico nas quatro versões e na página de escolha de idioma. Os endereços são completos, com https://: caminho relativo como /es/botas/ não vale. As linhas precisam estar dentro de um <head> bem formado; na dúvida, o próprio Google sugere colar o código renderizado num validador de HTML.
2. No cabeçalho HTTP. Serve para o que não é HTML, como o catálogo em PDF. O servidor responde com um cabeçalho Link listando as versões:
Link: <https://www.exemplo.com/catalogo-pt.pdf>; rel="alternate"; hreflang="pt", <https://www.exemplo.com/catalogo-es.pdf>; rel="alternate"; hreflang="es"
3. No sitemap XML. Bom para site grande, porque tira a marcação das páginas e concentra num arquivo gerado pelo sistema. Cada <url> recebe filhos <xhtml:link> com todas as versões, inclusive ela mesma, e o arquivo declara o namespace xmlns:xhtml="http://www.w3.org/1999/xhtml". Os filhos não contam no limite de endereços do sitemap. As demais regras gerais do arquivo de sitemap continuam valendo.
Fique com o método que o seu sistema consegue manter atualizado sozinho. Hreflang escrito à mão, página por página, envelhece mal: basta mudar o endereço de uma versão para quebrar o conjunto inteiro.
Por que cada página precisa citar a si mesma e receber o link de volta?
Porque o Google só aceita a ligação quando ela é confirmada pelos dois lados. Se a página em português aponta para a de espanhol e a de espanhol não aponta de volta, o par é ignorado. A regra existe para impedir que um site qualquer se declare "versão em inglês" das suas páginas.
Na prática, isso se traduz em duas exigências:
- Autorreferência. Cada versão lista a si mesma junto com as outras. A página
/pt-br/botas/tem a linhapt-BRapontando para/pt-br/botas/. - Retorno. Toda versão citada cita de volta. O conjunto de linhas é o mesmo em todas as páginas do grupo.
Com muitos idiomas, manter todas as ligações fica pesado. O Google aceita conjuntos parciais e processa os pares que se confirmam. Quando abrir um idioma novo, a prioridade é ligar a versão nova à língua principal do site, nos dois sentidos.
Quando usar o x-default?
O x-default marca a página para quem não se encaixa em nenhuma versão declarada. Ele foi pensado para a página de escolha de idioma ou país e para a home que encaminha o visitante para uma das versões, quando o site faz isso. Também pode apontar para uma das versões, como a de inglês, se ela for a melhor opção para o resto do mundo.
O Google recomenda o x-default, sem tornar obrigatório. O validador alerta quando ele falta porque, sem ele, o visitante de um idioma não previsto fica entregue ao palpite do buscador. Não há código de idioma para escrever: a linha leva só hreflang="x-default" e o endereço.
Como o hreflang convive com o canonical?
Cada versão de idioma tem o canonical apontando para ela mesma. A página em espanhol não é cópia da página em português, então nunca leva canonical para ela. O Google diz que versões localizadas só contam como duplicadas quando o conteúdo principal não foi traduzido.
O caso delicado é o mesmo idioma em países diferentes. Se a página do Brasil e a de Portugal têm praticamente o mesmo texto, o Google pode tratar as duas como duplicadas e escolher uma como canônica. A documentação dele manda usar canonical e hreflang juntos nesse cenário: o canonical diz qual é a principal, e o hreflang ajuda o Google a mostrar o endereço regional certo no resultado. Diferenças reais, como preço, frete, ortografia e atendimento local, ajudam as duas a se sustentarem.
Outras regras que evitam conflito:
- Liste no hreflang só a versão canônica de cada página: nada de endereço com parâmetro, com redirecionamento ou com
noindex. - Use
httpsem tudo. O Google pede para não colocar a versãohttpnas anotações de hreflang. - O grupo pesa na escolha. Entre endereços parecidos, o Google prefere como canônicos os que estão num grupo de hreflang confirmado.
O que vale para cópias dentro do mesmo idioma, como parâmetros de campanha e www, está em como o canonical resolve cópias dentro do mesmo site.
Quais erros de hreflang aparecem nos sites brasileiros?
Hreflang ainda é raro por aqui. O Nota do Site percorreu 53 domínios .br, numa leitura feita entre 20 e 22/10/2026 que foi da home a páginas internas e somou 302 páginas. Só 6 sites, cerca de 11% da amostra, tinham a marcação em alguma delas. E 4 desses 6 erravam em algum ponto.
Somando as 40 páginas que traziam hreflang, 17 (42,5%) tinham problema:
| Problema | Páginas |
|---|---|
| Não citava a si mesma | 8 |
Faltava o x-default |
5 |
| As duas falhas juntas | 4 |
A falta de autorreferência foi o erro mais frequente: apareceu em 12 das 17 páginas com problema. Um caminho fácil para ele é montar o bloco a partir do seletor de idiomas, que mostra as outras línguas e deixa a atual de fora. O menu é para o visitante; o hreflang precisa da lista completa.
Além desses, os erros que a documentação do Google aponta e que vale procurar:
- Retorno ausente. A versão nova cita a antiga, mas a antiga nunca foi atualizada.
- Código errado.
en-UK,pt_BR, país sozinho,es-419. - Endereço quebrado. A versão listada redireciona, dá 404 ou está bloqueada.
- Página fora do índice. Se uma das versões não aparece no Google, entenda primeiro o que a Inspeção de URL revela sobre uma página que ficou de fora. Hreflang não faz o Google indexar o que ele recusou.
E o atributo lang, para que serve se o Google não usa?
O lang na tag <html> diz ao navegador e às tecnologias assistivas em que língua a página está. O leitor de tela usa a informação para carregar as regras de pronúncia certas; sem ela, um texto em português corre o risco de ser lido com a pronúncia de outra língua. A diretriz de acessibilidade WCAG pede que o idioma principal da página possa ser identificado pelo código.
O Google não usa o lang para detectar o idioma, como vimos. Mesmo assim, ele custa uma linha:
<html lang="pt-BR">
Cada versão declara o próprio idioma, combinando com o hreflang dela: lang="es" na página em espanhol, lang="pt-PT" na de Portugal. Na nossa amostra, 2 páginas iniciais e 12 das 302 páginas lidas não declaravam idioma nenhum.
O que testar depois de publicar as versões?
- Passe uma das versões no validador. As regras "Versões de idioma (hreflang)" e "Idioma declarado" leem as linhas
<link hreflang>e olangdo HTML. Elas apontam código inválido, página que não cita a si mesma ex-defaultausente. Se você declarou o hreflang no sitemap ou no cabeçalho HTTP, a regra não enxerga a marcação e não se aplica: confira pelo arquivo ou pela resposta do servidor. - Abra cada endereço listado. Todos precisam responder 200, sem redirecionar, e ter o canonical apontando para eles mesmos.
- Confira o retorno. Na fonte de cada versão, procure as mesmas linhas, com os mesmos endereços.
- Volte em algumas semanas. No Search Console, abra a Inspeção de URL e veja se a canônica escolhida pelo Google para cada versão é ela mesma e não a de outro idioma.
Se for abrir o site para outro país agora, comece pela estrutura de endereços e pelo método de declaração que o seu sistema mantém sozinho. Hreflang bem feito é aquele que ninguém precisa lembrar de atualizar.