Hreflang: guia completo de SEO internacional
Como planejar versões por idioma e região, implementar anotações hreflang recíprocas e validar se cada URL atende ao público pretendido.
O hreflang é um atributo HTML que informa aos mecanismos de busca para qual idioma e região cada versão da página foi feita. O Google usa esses dados para mostrar ao usuário a versão do conteúdo que corresponde ao seu idioma e à sua localização geográfica.
Sem o hreflang, o Google tenta adivinhar sozinho a versão certa e muitas vezes erra: um usuário de língua russa recebe a página em inglês, e um usuário alemão vê a versão em francês. Isso reduz o CTR, aumenta a taxa de rejeição e custa conversões.
O que é o hreflang
O atributo hreflang foi introduzido em 2011: o Google o criou para resolver o problema de conteúdo duplicado em sites internacionais. Se uma página /about existe como /en/about, /de/about e /fr/about, o Google não deve tratá-las como duplicatas, porque cada uma atende a um público diferente.
Ano de introdução
O Google introduziu o hreflang para sites multilíngues
Códigos de região
Códigos de região ISO 3166-1 alpha-2 suportados pelo Google
Reciprocidade
Todas as versões da página devem apontar umas para as outras
Impacto na velocidade
Um hreflang implementado corretamente não deixa o site mais lento
O hreflang é suportado apenas pelo Google e pelo Yandex. O Bing usa a meta tag Content-Language e os cabeçalhos HTTP, mas trabalha com a estrutura de URLs e com o geotargeting pelas Ferramentas para Webmasters. Se o seu público inclui usuários de língua russa, o hreflang continua necessário para o Yandex funcionar corretamente.
Quando usar o hreflang
Nem todo site multilíngue precisa de hreflang: é importante entender quando o atributo resolve de fato um problema.
| Situação | Precisa de hreflang | Observações |
|---|---|---|
| Um idioma, países diferentes (en-US, en-GB) | Sim | Conteúdo diferente (preços, grafia, promoções) |
| Idiomas diferentes (en, de, fr) | Sim | Principal caso de uso do hreflang |
| Um idioma, uma região | Não | Não há por que duplicar links para si mesmo |
| Conteúdo idêntico em todas as versões de idioma | Não | Use o canonical |
| Tradução parcial (70%+ do conteúdo) | Sim | Mesmo traduções parciais precisam de marcação |
| Tradução automática sem revisão | Não | O Google pode tratar isso como spam |
/en-us/ e /en-gb/ sem nenhuma diferença), é melhor usar o canonical em vez do hreflang.Sintaxe e formatos
O hreflang usa códigos de dois padrões: ISO 639-1 para o idioma e ISO 3166-1 alpha-2 para a região. Formato: language ou language-REGION.
<!-- Language only -->
<link rel="alternate" hreflang="ru" href="https://example.com/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/" />
<!-- Language + region -->
<link rel="alternate" hreflang="en-US" href="https://example.com/en-us/" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/en-gb/" />
<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/" />
<link rel="alternate" hreflang="fr-CA" href="https://example.com/fr-ca/" />
<!-- x-default: page for users without a matching locale -->
<link rel="alternate" hreflang="x-default" href="https://example.com/" />A região no hreflang é sempre escrita em maiúsculas (en-GB, fr-CA), e o idioma, em minúsculas (en, fr). Muitas implementações usam minúsculas em tudo: o Google entende as duas formas, mas seguir o formato canônico é uma boa prática.
| Código | Significado |
|---|---|
| ru | Russo (qualquer região) |
| en | Inglês (qualquer região) |
| en-US | Inglês dos Estados Unidos |
| en-GB | Inglês do Reino Unido |
| de-AT | Alemão da Áustria |
| zh-Hans | Chinês simplificado |
| zh-Hant | Chinês tradicional |
| x-default | Página para região ou idioma não definido |
Formas de implementação
O hreflang pode ser implementado de três formas. A escolha depende da tecnologia e do porte do site.
1. Tag HTML na seção head
É o método mais comum. As tags <link rel="alternate" hreflang="..."> são adicionadas ao <head> de cada página. O ponto crucial: todas as versões da página precisam apontar para todas as outras versões, incluindo a própria.
<!-- Page /en/about — links to ALL versions -->
<head>
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="ru" href="https://example.com/about/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/about/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/about/" />
<link rel="canonical" href="https://example.com/en/about/" />
</head>2. Cabeçalho HTTP Link
Para PDFs, imagens e outros recursos que não são HTML, usam-se cabeçalhos HTTP. Esse método também funciona para qualquer página, mas exige configuração do servidor.
# Nginx: add hreflang via HTTP headers
add_header Link '</en/about/>; rel="alternate"; hreflang="en", </about/>; rel="alternate"; hreflang="ru", </de/about/>; rel="alternate"; hreflang="de"';3. Sitemap XML
A abordagem ideal para sites grandes (10.000+ páginas). Todas as relações hreflang são descritas no sitemap, o que reduz o peso do HTML e centraliza a gestão.
<?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://example.com/en/about/</loc>
<xhtml:link rel="alternate" hreflang="en"
href="https://example.com/en/about/"/>
<xhtml:link rel="alternate" hreflang="ru"
href="https://example.com/about/"/>
<xhtml:link rel="alternate" hreflang="de"
href="https://example.com/de/about/"/>
<xhtml:link rel="alternate" hreflang="x-default"
href="https://example.com/en/about/"/>
</url>
</urlset>x-default: página de seleção de idioma
O valor x-default indica a página para usuários cujo idioma ou região não corresponde a nenhuma das alternativas declaradas. O Google mostra essa versão quando não há um hreflang correspondente.
- Página de seleção de idioma — o usuário chega em
/choose-language/e escolhe a versão - Versão principal do site — geralmente a versão em inglês ou aquela que o Google deve mostrar por padrão
- Página inicial — se o site tiver vários idiomas, o x-default aponta para
/
Canonical + hreflang
Canonical e hreflang resolvem problemas diferentes, mas funcionam juntos. A regra é simples: quando a página tem hreflang, o canonical sempre aponta para si mesmo (canonical autorreferente).
<!-- CORRECT: canonical points to self + hreflang covers all versions -->
<link rel="canonical" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="ru" href="https://example.com/about/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/about/" />
<!-- WRONG: canonical points to a different language version -->
<link rel="canonical" href="https://example.com/ru/about/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />Se o canonical da página em inglês apontar para a versão em russo, o Google tratará a página em inglês como duplicata e não a incluirá no índice. Por isso, hreflang sem canonical autorreferente é praticamente inútil.
Erros comuns
Segundo auditorias, cerca de 60% dos sites com hreflang têm pelo menos um erro crítico. Veja os mais comuns.
Erro 1: falta de links recíprocos
O problema mais comum. A página A aponta para a página B via hreflang, mas a página B não aponta de volta para a página A. O Google ignora esse hreflang: ele é inválido sem reciprocidade.
Erro 2: códigos de idioma incorretos
hreflang="en_US"com sublinhado em vez de hífen — código inválidohreflang="english"— uma palavra em vez de código ISOhreflang="zh"em vez dehreflang="zh-Hans"ouhreflang="zh-Hant"— o chinês exige o especificador de scripthreflang="ru-RU"em vez dehreflang="ru"— código de região desnecessário para um idioma sem dialetos
Erro 3: hreflang em páginas não indexáveis
Se a página estiver bloqueada no robots.txt ou marcada com noindex, o hreflang dela não faz sentido. O Google não processa hreflang em páginas que não consegue indexar.
Erro 4: redirecionamentos automáticos por idioma
Alguns sites redirecionam o usuário com base no idioma do navegador: um visitante russo pede /about/ e é redirecionado para /ru/about/. O Google vê um redirecionamento 301 e não consegue processar o hreflang corretamente. Solução: entregar o conteúdo sem redirecionar e usar a troca por JavaScript ou cookies.
Erro 5: links de hreflang apontando para 404 ou redirecionamentos
O hreflang deve apontar para URLs finais e canônicas. Links que passam por redirecionamento ou levam a uma página 404 invalidam o atributo para aquela versão.
Ferramentas de verificação
| Ferramenta | O que verifica | Custo |
|---|---|---|
| Google Search Console | Erros de hreflang no relatório de segmentação internacional | Gratuito |
| Aleyda Solis hreflang tool | Validade das tags de uma página, reciprocidade dos links | Gratuito |
| TechnicalSEO hreflang checker | Verificação em lote, exportação de erros | Gratuito / pago |
| Screaming Frog | Rastreamento completo com análise de hreflang | Pago |
| Ahrefs Site Audit | Erros de hreflang dentro da auditoria de SEO | Pago |
| Semrush Site Audit | Relatório específico de hreflang | Pago |
Perguntas frequentes
O hreflang afeta as posições nos resultados de pesquisa?
Toda página do site precisa de hreflang?
O que acontece se o hreflang apontar para uma URL com redirecionamento 301?
Dá para usar o hreflang só no sitemap, e não no HTML?
Quanto tempo o Google leva para processar um novo hreflang?
Check it with SpiderHead
Free and local: run the audit on your own machine.



