Sitemap XML: como estruturar corretamente
Um sitemap XML é o arquivo que você entrega ao Google para dizer, em linguagem estruturada, quais URLs do seu site devem ser consideradas para indexação. Ele não força indexação — apenas facilita a descoberta. Quando o arquivo tem sintaxe válida, respeita os limites do protocolo e lista somente URLs que merecem estar no índice, o Search Console reconhece o envio sem apontar erros e reporta o que foi descoberto contra o que foi efetivamente indexado.
Este guia é procedural: cobre a estrutura obrigatória do XML, os limites técnicos, a decisão de o que incluir, a submissão no Search Console, o diagnóstico dos erros mais comuns e a verificação final.
---
Estrutura obrigatória do arquivo XML
O protocolo é o sitemaps.org versão 0.9. Todo sitemap precisa começar com a declaração XML e envelopar as URLs dentro do elemento raiz <urlset> com o namespace correto.
Esqueleto mínimo válido
``xml <?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://exemplo.com.br/</loc> <lastmod>2026-09-15T14:30:00-03:00</lastmod> </url> <url> <loc>https://exemplo.com.br/servicos/consultoria-seo</loc> <lastmod>2026-09-20</lastmod> </url> </urlset> ``
O que cada tag faz
<?xml version="1.0" encoding="UTF-8"?>— declaração obrigatória na primeira linha. A codificação precisa ser UTF-8; caracteres especiais (acentos,&,<,>, aspas) devem ser escapados como entidades (&,<,>,",').<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">— elemento raiz que envolve todas as entradas. O atributoxmlnsé obrigatório; sem ele o arquivo é rejeitado como formato inválido.<url>— envelope de cada URL listada. Cada bloco<url>representa uma página.<loc>— URL absoluta e canônica da página. Precisa incluir protocolo (https://), o mesmo host declarado como preferido no Search Console, e não pode ter mais de 2.048 caracteres.<lastmod>— data (ou data e hora) da última modificação real do conteúdo, em formato W3C Datetime. AceitaAAAA-MM-DDouAAAA-MM-DDTHH:MM:SS+HH:MM(com fuso). Só faça sentido preencher com a data em que o conteúdo foi de fato alterado — carimbar todos os<lastmod>com a data atual a cada build faz o Google descartar o valor por perda de confiança.<changefreq>e<priority>— historicamente parte do protocolo. Documentação pública do Google indica que esses dois campos são ignorados pelo Googlebot. São opcionais e, na prática, você pode omiti-los sem prejuízo — o esforço de calibrá-los não retorna benefício verificável de indexação.
Regras de codificação que costumam quebrar o arquivo
- Toda
<loc>precisa apontar para uma URL escapada. Exemplo: uma URL com?filtro=cor&tamanho=gvira<loc>https://exemplo.com.br/produto?filtro=cor&tamanho=g</loc>. - Não misture protocolos: se o site canônico é
https://, não liste versõeshttp://. - Não misture hosts:
www.exemplo.com.breexemplo.com.brsão propriedades distintas para o Search Console.
---
Limites técnicos por arquivo
Um único arquivo de sitemap tem dois limites rígidos definidos pelo protocolo:
- 50.000 URLs por arquivo, no máximo.
- 50 MB descompactado por arquivo, no máximo.
Quando o site excede qualquer um desses limites, você divide o inventário em múltiplos sitemaps e os agrega em um sitemap index — um arquivo XML que lista sitemaps em vez de URLs.
Estrutura do sitemap index
``xml <?xml version="1.0" encoding="UTF-8"?> <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <sitemap> <loc>https://exemplo.com.br/sitemap-paginas.xml</loc> <lastmod>2026-09-25</lastmod> </sitemap> <sitemap> <loc>https://exemplo.com.br/sitemap-blog.xml</loc> <lastmod>2026-09-28</lastmod> </sitemap> <sitemap> <loc>https://exemplo.com.br/sitemap-produtos.xml</loc> <lastmod>2026-09-28</lastmod> </sitemap> </sitemapindex> ``
Observações práticas sobre o index:
- O envelope muda de
<urlset>para<sitemapindex>, e cada item de<url>para<sitemap>. - Um sitemap index pode listar até 50.000 sitemaps filhos.
- Você pode comprimir sitemaps individuais em
.gz(o Googlebot aceita), mas o limite de 50 MB é medido no arquivo descompactado. - Recomenda-se segmentar por tipo de URL (páginas institucionais, blog, produtos, categorias). Isso ajuda o diagnóstico: se o Search Console reportar erro em um sitemap específico, você já sabe qual conjunto do site investigar.
---
O que incluir e o que excluir
O sitemap serve para sinalizar ao Google as URLs que você quer que sejam consideradas para o índice. Qualquer URL que não deveria ser indexada polui o arquivo, gera avisos no Search Console e desperdiça sinais de rastreamento.
Incluir apenas se a URL atender a TODOS estes critérios
- Retorna HTTP 200 (não é 3xx, 4xx nem 5xx).
- É a versão canônica — a mesma URL declarada em
<link rel="canonical">na própria página. - É indexável — não tem meta robots
noindexnem cabeçalhoX-Robots-Tag: noindex. - Não está bloqueada por
robots.txt— o Googlebot precisa conseguir rastrear. - Tem valor de busca — é uma página de destino real: institucional, produto, artigo, categoria com conteúdo próprio.
Excluir sempre
- URLs com
noindex— o sitemap está pedindo indexação de algo que a própria página proíbe. É um sinal contraditório. - Redirects (301/302) — liste o destino final, nunca a origem.
- URLs 404 ou 410 — páginas removidas não devem constar.
- URLs 5xx — erros de servidor precisam ser corrigidos antes de reintegrar ao sitemap.
- URLs bloqueadas por
robots.txt— se o robots proíbe, o Googlebot não consegue processar. - Variantes com parâmetros duplicados —
?utm_source=,?sessionid=, ordenação de filtros, paginação idêntica ao conteúdo da URL canônica. - Páginas de baixo valor — resultados de busca interna, páginas de tag vazias, carrinho, checkout, área logada, políticas repetidas em subdiretórios.
- Versões não-canônicas — HTTP quando o canônico é HTTPS,
wwwquando o canônico não temwww, com barra final quando o canônico não tem (e vice-versa).
Regra prática: se você precisa hesitar sobre incluir uma URL, provavelmente ela não deveria estar ali.
---
Hospedagem e submissão ao Google Search Console
1. Hospedar o arquivo em URL acessível
Coloque o sitemap principal na raiz do domínio: https://exemplo.com.br/sitemap.xml. O arquivo precisa estar acessível publicamente por HTTP GET, sem autenticação, retornando status 200 e content-type application/xml (ou text/xml).
2. Declarar o sitemap no robots.txt
No arquivo robots.txt da raiz, adicione a linha:
`` Sitemap: https://exemplo.com.br/sitemap.xml ``
Se houver um sitemap index, aponte para o index (não para cada filho). Você pode declarar múltiplas linhas Sitemap: se tiver arquivos independentes (por exemplo, um sitemap normal e um sitemap de imagens em domínio separado). Use sempre URLs absolutas.
3. Enviar pelo Search Console
- Abra o Search Console e selecione a propriedade correta (a mesma versão de host:
https://com ou semwww, conforme o canônico). - No menu lateral, acesse Sitemaps.
- No campo Adicionar novo sitemap, informe o caminho relativo do arquivo (ex.:
sitemap.xml). A ferramenta prefixa automaticamente o host da propriedade. - Clique em Enviar.
Após o envio, o Search Console tenta buscar o arquivo imediatamente e mostra o resultado inicial. Para um sitemap index, basta enviar o arquivo index — o Search Console descobre e passa a monitorar os sitemaps filhos automaticamente.
4. Aguardar processamento
O status muda de "Não foi possível buscar" ou "Em processamento" para "Sucesso" quando o arquivo é lido corretamente. O tempo varia — algumas horas até alguns dias para grandes volumes. Não reenvie o mesmo sitemap repetidamente enquanto ele está em processamento; isso não acelera nada.
---
Diagnóstico dos erros mais comuns
Quando o Search Console reporta um problema, ele indica a causa em texto curto. Estes são os erros mais frequentes e a leitura correta de cada um:
"Não foi possível buscar o sitemap" / "Erro de leitura" O Search Console não conseguiu baixar o arquivo. Verifique:
- A URL declarada existe e retorna 200 num teste com
curlou no próprio navegador anônimo. - O
robots.txtnão está bloqueando o caminho do sitemap (nada deDisallow: /sitemap.xml). - O servidor não está retornando 5xx no momento da leitura.
- Não há redirect na URL do sitemap — o arquivo precisa ser servido diretamente.
"Formato inválido" / "Erro de análise XML" A sintaxe XML está quebrada. Causas típicas:
- Caracteres não escapados dentro de
<loc>(o&mais comum). - Declaração XML fora da primeira linha ou com espaços/BOM antes dela.
- Namespace
xmlnsausente no<urlset>ou<sitemapindex>. - Encoding real do arquivo não é UTF-8, apesar da declaração dizer que é.
- Tag aberta sem fechar.
Cole um trecho do arquivo em um validador XML público ou rode xmllint --noout sitemap.xml para localizar a linha exata.
"URL não permitida" / "URL fora do escopo da propriedade" Há URLs no sitemap que não pertencem à propriedade cadastrada. Exemplo: você cadastrou https://exemplo.com.br e há entradas apontando para https://www.exemplo.com.br ou http://exemplo.com.br. Padronize todas as <loc> para o host exato da propriedade.
"URLs bloqueadas por robots.txt" Você listou URLs que o robots.txt proíbe de rastrear. Ou remova essas URLs do sitemap, ou libere-as no robots.txt — os dois sinais precisam ser coerentes.
"URL contém noindex" A página listada tem meta robots noindex ou cabeçalho X-Robots-Tag: noindex. Remova a URL do sitemap ou remova o noindex da página, dependendo de qual sinal está correto.
"Erro HTTP" (com código específico) As URLs retornam 3xx, 4xx ou 5xx. Corrija: remova redirects (liste o destino), tire 404 do arquivo, e resolva 5xx no servidor antes de reincluir.
"Sitemap consta como HTML" O servidor está entregando uma página HTML (frequentemente uma página de erro ou uma SPA que substitui o conteúdo real) no lugar do XML. Confira o Content-Type da resposta e certifique-se de que o arquivo é servido como arquivo estático, sem passar pelo roteador da aplicação.
"Excede o tamanho máximo" / "Excede o número máximo de URLs" Você bateu no limite de 50 MB ou 50.000 URLs. Divida em vários sitemaps e crie um sitemap index.
---
Verificação final
Depois que o status aparece como "Sucesso", valide dois indicadores no relatório do sitemap no Search Console:
- URLs descobertas — número de URLs que o Search Console leu do arquivo. Deve bater com a contagem que você espera. Se estiver muito abaixo, provavelmente parte das URLs foi rejeitada silenciosamente por erro individual (ver seção anterior) ou o arquivo foi truncado por tamanho.
- URLs indexadas vs. descobertas — este dado aparece no relatório de Indexação de páginas, filtrando por "Enviado pelo sitemap". Uma diferença entre descobertas e indexadas é esperada — nem toda URL enviada é aceita no índice. O Search Console detalha o motivo de cada exclusão (duplicada, canônica alternativa escolhida pelo Google, rastreada mas não indexada, etc.).
Rotina de revalidação após correção
Quando corrigir erros apontados:
- Ajuste o arquivo (remova a URL problemática, corrija a sintaxe, resolva o status HTTP).
- Publique a nova versão no mesmo caminho.
- No Search Console, abra o sitemap na lista e use Ver detalhes para acionar uma nova leitura. Não é necessário deletar e reenviar — o Search Console relê periodicamente e detecta o
<lastmod>atualizado no arquivo. - Acompanhe o status: se voltar a "Sucesso" e o número de erros zerar, a correção foi aceita.
O sitemap é um artefato vivo. A cada publicação, alteração ou remoção relevante no site, o arquivo (ou o sitemap filho apropriado) deve refletir o novo estado — e o <lastmod> das URLs efetivamente alteradas precisa ser atualizado. Um sitemap correto, mantido, e livre de URLs contraditórias é o que faz o Search Console reportar "Sucesso" e passar a ser útil como fonte de descoberta contínua para o Googlebot.