Lá em 2021 herdei um site de e-commerce com 14.000 páginas de um cliente cuja agência anterior tinha "feito o SEO internacional". Três semanas em uma auditoria encontrei 31.000 erros de hreflang no Google Search Console. Trinta e um mil. O site tinha sete variantes de idioma e cada página única estava perdendo sua tag de auto-referência. As páginas em alemão apontavam para URLs em francês. O x-default apontava para uma URL que fazia 301-redirect para outro lugar completamente. O tráfego orgânico de mercados não-ingleses tinha ficado estagnado por oito meses e ninguém tinha conectado os pontos.
Esse projeto é provavelmente a razão mais importante pela qual agora trato implementação de hreflang como um problema de engenharia de primeira classe, não um detalhe que você emenda durante um sprint de tradução.
Então vamos entrar nisso direito.
---
O que hreflang Realmente Faz (e O Que Não Faz)
Vou ser breve porque a maioria das pessoas já tem uma ideia geral. hreflang é um atributo HTML (ou cabeçalho HTTP, ou entrada de sitemap XML) que diz ao Google qual versão de uma página corresponde a qual combinação de idioma e região. Não muda rankings diretamente. Muda qual URL o Google mostra para qual usuário em qual país.which URL Google shows to which user in which country.
É só isso. É um sinal, não uma diretiva. Google pode ignorá-lo se a implementação estiver quebrada ou contraditória. E faz. Regularmente.
O que não faz: não bloqueia usuários de acessar a versão regional errada, não substitui sua estratégia de conteúdo, e absolutamente não compensa páginas traduzidas fracas que são apenas cópias traduzidas por máquina sem esforço de localização.not do: it doesn't block users from accessing the wrong regional version, it doesn't replace your content strategy, and it absolutely doesn't compensate for thin translated pages that are just machine-translated copies with no localisation effort.
Vale a pena ler a documentação de hreflang do próprio Google antes de qualquer coisa. É mais seca que uma bolacha dura, mas é precisa.Google's own hreflang documentation before anything else. It's drier than a stale biscuit but it's accurate.
---
Os Cinco Erros Que Vejo em Quase Toda Auditoria
Tags de Auto-Referência Faltando
Este é o grande. Toda página em um cluster hreflang deve incluir uma tag apontando para si mesma. Não apenas as outras variantes. Para si mesma.
Se sua página em inglês em example.com/en/product/ tem tags apontando para /de/product/ e /fr/product/ mas esquece o hreflang="en" apontando de volta para /en/product/, todo o cluster é tecnicamente inválido. Google não vai necessariamente lançar um erro grave, mas vai reduzir sua confiança em todo o conjunto de sinal.example.com/en/product/ has tags pointing to /de/product/ and /fr/product/ but forgets the hreflang="en" pointing back to /en/product/, the whole cluster is technically invalid. Google won't necessarily throw a hard error but it will reduce its confidence in the entire signal set.
Vi este erro em sites criados por desenvolvedores que leram um post de blog, viram um exemplo com duas variantes, e nunca notaram a tag de auto-referência porque o exemplo foi mal escrito. Não estou nomeando nomes.
Tags de Retorno Estão Faltando ou Quebrados
hreflang é uma relação de mão dupla. Se sua página em inglês aponta para sua página em alemão, a página em alemão deve apontar de volta para a página em inglês. Perca essa tag de retorno e o Google vê um aperto de mão quebrado.
No projeto de 2021 que mencionei, um desenvolvedor tinha adicionado hreflang apenas no template em inglês. Os templates em alemão, francês e espanhol não tinham hreflang nenhum. Então o Google estava recebendo meia conversa e sensatamente ignorando tudo.
Códigos de Idioma Errados
Use tags de idioma BCP 47. Isso significa en para inglês genericamente, en-GB para inglês britânico, en-US para inglês americano. Não en_GB. Não english. Não ENG.BCP 47 language tags. That means en for English generically, en-GB for British English, en-US for American English. Not en_GB . Not english . Not ENG.
Encontrei lang="english-uk" em um site de fintech que auditamos na Seahawk no ano passado. O desenvolvedor claramente tinha apenas adivinhado o formato. Estava ao vivo há 14 meses.lang="english-uk" on a fintech site we audited at Seahawk last year. The developer had clearly just guessed the format. It had been live for 14 months.
x-default Está Faltando ou Errado
x-default deve apontar para uma página que atenda usuários cujo idioma ou região não correspondem a nenhuma de suas outras variantes. Geralmente sua página inicial ou uma página de seleção de idioma. Não é apenas um sinônimo para "versão em inglês". Já vi x-default apontando para uma URL que retorna 404, apontando para uma cadeia de redirecionamentos, e uma vez, memoravelmente, apontando para um ambiente de staging. should point to a page that handles users whose language or region doesn't match any of your other variants. Usually your homepage or a language-selection page. It is not just a synonym for "English version". I've seen x-default pointing at a URL that returns a 404, pointing at a redirect chain, and once, memorably, pointing at a staging environment.
Se você não tem uma página de fallback sensata, na verdade é melhor omitir x-default do que usá-lo incorretamente. Mas geralmente você deve ter um.
Usando Canonical e hreflang Incorretamente Juntos
Suas tags canonical e tags hreflang não devem se contradizer. Se /en-gb/page/ tem um canonical apontando para /en/page/, mas também tem hreflang declarando a si mesma como en-GB, você criou um conflito de sinais. O canonical está efetivamente dizendo "não sou a versão preferida desta URL" enquanto hreflang está dizendo "sou a versão preferida para usuários de inglês britânico". Google tem que escolher uma interpretação e frequentemente escolhe nenhuma delas./en-gb/page/ has a canonical pointing to /en/page/, but also has hreflang declaring itself as en-GB, you've created a signal conflict. The canonical is effectively saying "I'm not the preferred version of this URL" while hreflang is saying "I am the preferred version for British English users". Google has to pick one interpretation and it often picks neither.
---
Como Implementar em Sites Grandes Sem Perder a Sanidade
Template-Level vs. Page-Level
Em um site com 50 páginas, você poderia criar manualmente cada tag hreflang. Em um site com 5.000 páginas, você não consegue. Você precisa gerá-las programaticamente.
A abordagem mais limpa que encontrei é armazenar seus mapeamentos de URL em uma fonte de dados estruturada (uma tabela de banco de dados ou até um arquivo JSON simples para projetos menores) e gerar as tags no momento da renderização. Em WordPress, Yoast SEO e Rank Math lidam com isso razoavelmente bem para configurações padrão, mas ambos falham quando suas estruturas de URL diferem entre idiomas em vez de seguir um padrão previsível de prefixo /en/, /de/, /fr/./en/, /de/, /fr/ prefix pattern.
Se suas URLs são não-uniformes (digamos, slugs traduzidas como example.com/en/running-shoes/ e example.com/de/laufschuhe/), você precisa de uma tabela de mapeamento explícita. Nenhum plugin descobrirá isso automaticamente. Aprendi isso da forma custosa com um cliente de vestuário esportivo em 2022 cujos slugs traduzidos eram completamente independentes dos em inglês.example.com/en/running-shoes/ and example.com/de/laufschuhe/), you need an explicit mapping table. No plugin will figure that out automatically. I learned this the expensive way on a sportswear client in 2022 whose translated slugs were completely independent of the English ones.
Método de XML Sitemap
Para sites muito grandes, prefiro o método de XML sitemap ao invés de tags HTML inline. Mantém a <head> limpa, é mais fácil auditar programaticamente, e você pode atualizar o sitemap sem tocar nos templates da página.<head> clean, it's easier to audit programmatically, and you can update the sitemap without touching page templates.
O formato fica assim (conceitualmente, sem bloco de código): cada bloco <url> contém múltiplas entradas <xhtml:link>, uma por variante de idioma incluindo a auto-referencial. A declaração de namespace xmlns:xhtml deve estar presente no elemento <urlset> ou tudo quebra silenciosamente.<url> block contains multiple <xhtml:link> entries, one per language variant including the self-referencing one. The xmlns:xhtml namespace declaration must be present in the <urlset> element or the whole thing breaks silently.
Uma pegadinha: o método de sitemap só funciona se o Google rastreou e indexou seus sitemaps recentemente. Se você tem problemas de orçamento de rastreamento em um site grande, o método HTML é mais confiável porque o Googlebot lê as tags inline enquanto rastreia cada página.
HTTP Headers para Conteúdo Não-HTML
Tem PDFs ou outros arquivos não-HTML que precisam de hreflang? Use HTTP headers. Seu servidor retorna um header Link com atributos rel="alternate" e hreflang. Isso é raro na prática, mas já vi grandes sites de legal e financeiro com milhares de documentos PDF multi-idioma onde isso realmente importa.Link header with rel="alternate" and hreflang attributes. This is rare in practice but I've seen large legal and financial sites with thousands of multi-language PDF documents where this actually matters.
---
Ferramentas Que Realmente Ajudam
Olha, usei muitas ferramentas ao longo dos anos. Aqui está o que eu realmente uso:
- Screaming Frog SEO Spider: Execute um rastreamento, vá para a aba hreflang. Ela vai sinalizar tags de retorno faltantes, auto-referências faltantes, URLs quebradas e códigos de idioma inválidos tudo em um lugar. Esse é meu primeiro passo em todo audit internacional. Por £199/ano é a melhor ferramenta de SEO técnico que conheço em relação ao custo-benefício.: Run a crawl, go to the hreflang tab. It will flag missing return tags, missing self-references, broken URLs, and invalid language codes all in one place. This is my first stop on every international audit. At £199/year it's the best-value technical SEO tool I know.
- Ahrefs Site Audit: Uma boa verificação secundária, especialmente se você quer fazer referência cruzada com dados de tráfego orgânico na mesma plataforma.: Good secondary check, especially if you want to cross-reference with organic traffic data in the same platform.
- hreflang Tags Testing Tool by Merkle: Gratuita, em https://www.merkle.com/en/merkle-labs/hreflang-testing-tool.html. Cole uma URL, ela verifica todo o cluster. Excelente para verificar páginas específicas no meio de uma correção.: Free, at https://www.merkle.com/en/merkle-labs/hreflang-testing-tool.html. Paste a URL, it checks the entire cluster. Brilliant for spot-checking specific pages mid-fix.
- Google Search Console: O relatório International Targeting em Legacy Tools. Lento para atualizar, mas é a fonte de verdade sobre como o Google está realmente lendo sua implementação.: The International Targeting report under Legacy Tools. Slow to update but it's the ground truth for how Google is actually reading your implementation.
- Sitebulb: Se você prefere um rastreador visual com relatórios mais amigáveis para iniciantes, o Sitebulb faz um bom trabalho visualizando as relações de clusters hreflang.: If you prefer a visual crawler with more beginner-friendly reporting, Sitebulb does a solid job of visualising hreflang cluster relationships.
O que não uso: as ferramentas geradores de hreflang que produzem um bloco de tag estático para você copiar e colar. Funcionam bem para aprender a sintaxe. São inúteis para qualquer coisa acima de 20 páginas porque você volta a manter manualmente.
---
Auditoria em Escala: Um Processo que Funciona
Aqui está o passo a passo real que executo em cada auditoria internacional, refinado depois de fazer isso em 200+ sites multilíngues:
- Rastreie o site com Screaming Frog, certificando-se de que a renderização de JavaScript está ativada se o site usa um framework JS.
- Exporte os dados de hreflang para uma planilha. Agrupe URLs pelo cluster pretendido.
- Verifique cada cluster para: tag auto-referenciadora, tags de retorno de todas as variantes, códigos BCP 47 válidos, alinhamento canônico consistente.
- Verifique URLs x-default para códigos de status 200. Não 301s. 200s.
- Faça referência cruzada com seus sitemaps XML se estiver usando o método sitemap. Cada URL no sitemap deve retornar 200.
- Execute uma amostra de 20-30 páginas através da ferramenta de teste Merkle para verificar se o Google realmente está lendo o que você pensa que está lendo.
- Puxe o relatório International Targeting do Search Console e procure especificamente por erros de "No return tag". Esses são quase sempre o sintoma de templates que não foram atualizados quando um novo idioma foi adicionado.
- Corrija, faça um novo rastreamento em 2 semanas, verifique se a contagem de erros diminuiu no Search Console (pode levar 4-6 semanas para os dados do GSC refletirem completamente as correções).
Isso não é um processo único. Coloque um rastreamento recorrente no seu calendário a cada trimestre. Sites internacionais mudam. Novas páginas são adicionadas, páginas antigas são redirecionadas, e clusters de hreflang quebram silenciosamente quando ninguém está observando.
---
Quando Não Usar hreflang
Isso é pulado na maioria dos guias e me deixa furioso.
Se você tem um idioma mas múltiplas regiões (digamos, Reino Unido e Austrália ambos em inglês), hreflang vale a pena usar, mas apenas se o conteúdo for realmente diferente o suficiente para servir esses usuários de forma distinta. Se suas páginas UK e AU forem 95% idênticas, você pode criar mais confusão do que clareza. O Google pode optar por mostrar uma variante universalmente e seus sinais de hreflang serão largamente ignorados mesmo assim.
Se você tem muito baixo tráfego de mercados internacionais, gastar uma semana implementando hreflang pode não ser o melhor uso do tempo. Uma hierarquia de URL bem estruturada com atributos <html lang=""> e configurações de geotargeting no Search Console vai cobrir você adequadamente até que o volume de tráfego justifique uma implementação completa.<html lang=""> attributes and geotargeting settings in Search Console will cover you adequately until the traffic volume justifies a full implementation.
E se seu site for um aplicativo de página única com carregamento dinâmico de conteúdo, acerte o lado da renderização primeiro. Já vi hreflang implementado perfeitamente no shell HTML estático enquanto o conteúdo real da página era renderizado em JavaScript e o Googlebot só estava vendo um spinner de carregamento. Corrija a indexabilidade antes de se preocupar com os sinais de internacionalização.
---
FAQ
Tags hreflang afetam rankings diretamente?
Não. Sinais hreflang dizem ao Google qual URL servir para qual usuário, não como classificar essa URL. Indiretamente, colocar a página certa na frente do usuário certo reduz pogo-sticking e melhora métricas de engajamento, o que pode ter um efeito indireto nos rankings. Mas não há ganho direto de ranking ao adicionar tags hreflang.
Quanto tempo leva para o Google processar mudanças de hreflang?
Normalmente 4-8 semanas para que as mudanças se reflitam completamente nos dados do Search Console. A frequência de rastreamento importa aqui. Para sites grandes com taxas de rastreamento lentas, pode chegar a 12 semanas. Não faça mudanças e verifique os resultados no dia seguinte. Você vai ficar louco.
Posso usar hreflang em uma loja Shopify?
Sim, mas a internacionalização nativa do Shopify (via Markets) cuida de muito disso para você se está usando subpastas ou subdomínios. Se estiver usando lojas separadas para diferentes regiões, você precisará implementar hreflang manualmente via customização de tema ou app. Usei a orientação de SEO internacional do próprio Shopify como ponto de partida aqui. É razoavelmente completa.Shopify's own international SEO guidance as a starting point here. It's reasonably complete.
Qual é a diferença entre direcionamento de idioma e direcionamento de país?
Direcionamento de idioma (p. ex., hreflang="es") diz: mostre isso para falantes de espanhol independentemente de onde estejam. Direcionamento de país (p. ex., hreflang="es-MX") diz: mostre isso para falantes de espanhol no México especificamente. Use tags apenas de idioma quando seu conteúdo é o mesmo para todos os falantes desse idioma. Use tags idioma-país quando preços, moeda ou conteúdo significativo diferem por região.hreflang="es") says: show this to Spanish speakers regardless of where they are. Country targeting (e.g., hreflang="es-MX") says: show this to Spanish speakers in Mexico specifically. Use language-only tags when your content is the same for all speakers of that language. Use language-country tags when pricing, currency, or significant content differs by region.
Meus erros de hreflang aumentaram depois que os corrigi. Por quê?
Geralmente porque corrigir algumas tags fez o Google rastrear suas páginas com mais agressividade e agora está encontrando erros que não estava reportando antes. É um artefato de relatório, não um sinal de que as correções pioraram as coisas. Continue assim, faça um re-rastreamento em 4 semanas.
---
Hreflang é genuinamente uma daquelas coisas onde acertar 90% é quase tão ruim quanto acertar 0%. Os sinais quebrados criam ruído que o Google aprende a desconfiar. Dedique tempo para fazer isso corretamente, audite regularmente, e trate como a infraestrutura que é. Seu tráfego orgânico internacional agradecerá silenciosamente, que é o melhor tipo de agradecimento.
