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 hreflang conecta as versões de idioma com links recíprocos: cada página precisa apontar explicitamente para todas as outras.
O hreflang afeta qual versão da página é exibida ao usuário, mas não o ranqueamento diretamente. O Google não penaliza a ausência dele, mas sem ele você perde relevância nos resultados de pesquisa.

O que é o hreflang

Como o hreflang conecta as versões de idioma de um site multilíngue.

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.

2011

Ano de introdução

O Google introduziu o hreflang para sites multilíngues

179+

Códigos de região

Códigos de região ISO 3166-1 alpha-2 suportados pelo Google

100%

Reciprocidade

Todas as versões da página devem apontar umas para as outras

≤ 10 ms

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çãoPrecisa de hreflangObservações
Um idioma, países diferentes (en-US, en-GB)SimConteúdo diferente (preços, grafia, promoções)
Idiomas diferentes (en, de, fr)SimPrincipal caso de uso do hreflang
Um idioma, uma regiãoNãoNão há por que duplicar links para si mesmo
Conteúdo idêntico em todas as versões de idiomaNãoUse o canonical
Tradução parcial (70%+ do conteúdo)SimMesmo traduções parciais precisam de marcação
Tradução automática sem revisãoNãoO Google pode tratar isso como spam
Se o conteúdo de duas versões da página for totalmente idêntico (por exemplo, /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.

html
<!-- 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ódigoSignificado
ruRusso (qualquer região)
enInglês (qualquer região)
en-USInglês dos Estados Unidos
en-GBInglês do Reino Unido
de-ATAlemão da Áustria
zh-HansChinês simplificado
zh-HantChinês tradicional
x-defaultPá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.

html
<!-- 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
# 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
<?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>
Não misture os métodos: se o hreflang estiver implementado no HTML, não o adicione também ao sitemap. O Google processará as duas fontes, o que pode gerar conflitos.

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 /
O x-default não é obrigatório, mas o Google recomenda fortemente adicioná-lo. Sem ele, usuários sem uma localidade correspondente recebem a versão que estiver no índice por acaso.

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).

html
<!-- 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álido
  • hreflang="english" — uma palavra em vez de código ISO
  • hreflang="zh" em vez de hreflang="zh-Hans" ou hreflang="zh-Hant" — o chinês exige o especificador de script
  • hreflang="ru-RU" em vez de hreflang="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

FerramentaO que verificaCusto
Google Search ConsoleErros de hreflang no relatório de segmentação internacionalGratuito
Aleyda Solis hreflang toolValidade das tags de uma página, reciprocidade dos linksGratuito
TechnicalSEO hreflang checkerVerificação em lote, exportação de errosGratuito / pago
Screaming FrogRastreamento completo com análise de hreflangPago
Ahrefs Site AuditErros de hreflang dentro da auditoria de SEOPago
Semrush Site AuditRelatório específico de hreflangPago

Perguntas frequentes

O hreflang afeta as posições nos resultados de pesquisa?
Não. O hreflang não é um fator direto de ranqueamento. Ele afeta qual versão da página é exibida para um usuário específico, mas não a posição na página de resultados. No entanto, uma implementação correta melhora indiretamente as métricas: a taxa de rejeição cai, o tempo no site e a conversão crescem, porque o usuário vê a versão relevante para ele.
Toda página do site precisa de hreflang?
Só as páginas que têm equivalentes em outros idiomas. Páginas de serviço (login, checkout, rotas de API), páginas com noindex e páginas sem equivalente em outros idiomas não precisam de hreflang.
O que acontece se o hreflang apontar para uma URL com redirecionamento 301?
O Google tentará seguir o redirecionamento, mas o resultado é imprevisível. Alguns parsers de hreflang param na URL intermediária. Sempre aponte para a URL canônica final, sem redirecionamentos.
Dá para usar o hreflang só no sitemap, e não no HTML?
Sim. Essa é até a abordagem preferida para sites grandes. O Google oficialmente suporta os dois métodos. O essencial é não usar os dois ao mesmo tempo nas mesmas páginas.
Quanto tempo o Google leva para processar um novo hreflang?
Normalmente de alguns dias a algumas semanas, dependendo da frequência de rastreamento do site. Para acelerar: envie ao Google Search Console um sitemap com hreflang e solicite a reindexação das páginas principais.

Check it with SpiderHead

Free and local: run the audit on your own machine.

Try it