Como validar Schema Markup: validadores, passos e erros comuns
Validar schema markup significa responder a duas perguntas diferentes. Primeira: os dados estruturados são um schema.org correto que uma máquina consegue ler: JSON válido, tipos e propriedades reais, valores no formato certo? Segunda: eles atendem aos requisitos do Google para um rich result específico, como um snippet de produto ou estrelas de avaliação? O Schema Markup Validator, em validator.schema.org, responde à primeira pergunta, o Teste de Rich Results do Google responde à segunda, e o nosso validador de schema verifica a sintaxe, o vocabulário schema.org e os campos obrigatórios do Google em um único relatório. Depois de publicar, os relatórios de rich results no Search Console mostram o que o Google realmente encontrou em todo o site.
Qual validador usar hoje
| Ferramenta | O que verifica | JavaScript | Use para |
|---|---|---|---|
| Teste de Rich Results (Google) | Apenas os tipos de dados estruturados que podem gerar um rich result no Google, com os campos obrigatórios e recomendados pelo Google. Aceita URL ou código, JSON-LD, Microdata e RDFa. O rastreador padrão é o smartphone; o desktop é opcional. | Sim: analisa a página renderizada | “O Google vai aceitar isto para um rich result?” |
| Schema Markup Validator (schema.org) | Qualquer tipo e propriedade do schema.org em JSON-LD, Microdata ou RDFa. Sem regras específicas do Google. | Não documentado: cole o código em caso de dúvida | Tipos que o Google não usa, correção geral |
| Validador de schema do PromoPilot | Sintaxe JSON com linha e coluna, vocabulário schema.org, campos obrigatórios e recomendados do Google para 11 famílias de tipos, vínculos de @graph e @id, entidades duplicadas | Não: lê o HTML que o servidor envia | Descobrir por que um bloco falha e obter uma cópia corrigida |
| Relatórios de rich results do Search Console | O que o Googlebot encontrou no seu site: itens válidos e inválidos, problemas ao longo do tempo | Sim, como parte da indexação | Monitoramento após a publicação |
Na prática, você vai usar duas delas: um validador enquanto escreve o markup e o Teste de Rich Results ou o Search Console para o lado do Google.
Como validar schema markup passo a passo
- Descubra o que há na página. Abra o código-fonte da página (Ctrl+U ou Cmd+Option+U) e procure por
application/ld+json(JSON-LD),itemscope(Microdata) etypeof(RDFa). Se um plugin diz gerar markup mas o código-fonte não tem nada, provavelmente ele é adicionado por JavaScript: veja a seção sobre isso mais abaixo. - Corrija a sintaxe antes de tudo. Uma vírgula sobrando ou uma aspa curva invalida todo o bloco JSON-LD, e os mecanismos de busca ignoram tudo. Um validador mostra a linha e a coluna do erro.
- Verifique o vocabulário. Tipos começam com letra maiúscula (
Product), propriedades usam camelCase (datePublished), e a propriedade deve pertencer ao tipo. Enumerações são URLs completas (https://schema.org/InStock), e datas e durações seguem a ISO 8601. - Verifique os requisitos do Google para o recurso desejado. Passe a URL pelo Teste de Rich Results. Um erro significa que o item não é elegível para aquele rich result. Um aviso significa que falta um campo recomendado: o item continua elegível, só com menos informações.
- Compare o markup com o que os visitantes veem. Preço, avaliação, autor e datas no JSON-LD devem corresponder ao que está visível na página. As políticas do Google proíbem marcar conteúdo que não é visível para os leitores.
- Publique e monitore. Use a Inspeção de URL no Search Console para verificar a URL ativa e solicitar a indexação, depois acompanhe os relatórios de rich results desse tipo nas semanas seguintes.
Exemplo: um bloco Product com erros e a versão corrigida
Este bloco parece inofensivo, mas tem quatro problemas:
{
"@context": "https://schema.org",
"@type": "product",
"name": "Trail running shoes",
"offers": {
"@type": "Offer",
"price": "1 299,00 UAH",
"availability": "in stock",
}
}- a vírgula depois da última propriedade torna o JSON inválido, então nada mais no bloco é lido;
productem minúsculas não é um tipo do schema.org: os nomes diferenciam maiúsculas de minúsculas;- o preço contém um espaço, uma vírgula e uma moeda; o preço é apenas um número e a moeda vai em
priceCurrency; in stocké texto livre, não um valor da enumeraçãoItemAvailability.
A versão corrigida:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Trail running shoes",
"image": "https://example.com/img/shoes.jpg",
"offers": {
"@type": "Offer",
"price": "1299.00",
"priceCurrency": "UAH",
"availability": "https://schema.org/InStock"
}
}
Para um snippet de produto no Google, um Product precisa de um name e de pelo menos um entre offers, review ou aggregateRating; dentro de um Offer, price é obrigatório.
Erros comuns e como corrigi-los
| O que você vê | Correção |
|---|---|
| Parsing error / unexpected token | Procure uma vírgula sobrando antes de } ou ], uma vírgula faltando entre propriedades ou aspas sem escape dentro de um valor. |
| Aspas curvas “ ” no código | O código foi colado pelo Word ou por um editor visual. Cole o JSON-LD no modo HTML/código do seu CMS. |
Comentários // dentro do JSON-LD | Remova-os. A ajuda do Google diz que o Teste de Resultados Ricos ignora comentários, mas o padrão JSON-LD não os permite, então outros parsers podem falhar. |
| Tipo ou propriedade desconhecida | Verifique a grafia e as maiúsculas: datepublished → datePublished, localbusiness → LocalBusiness. |
| Propriedade inválida para este tipo | Mova-a para o objeto correto, por exemplo: price pertence a um Offer, não diretamente a um Product. |
| Data inválida | 13.10.2026 → 2026-10-13 ou 2026-10-13T09:00:00+03:00. |
| Duração inválida | "cookTime": "30 min" → "PT30M"; uma hora e meia é "PT1H30M". |
| Duas entidades Organization diferentes | Muitas vezes o plugin de SEO e o tema geram uma cada. Mantenha uma, dê a ela um @id e faça referência a ela nos outros blocos. |
| Tipos de data-vocabulary.org | O Google não oferece mais suporte a esse vocabulário antigo. Reescreva a marcação com schema.org. |
Marcação válida não garante um resultado rico
O Google afirma claramente nas diretrizes de dados estruturados que não garante resultados ricos, mesmo quando a marcação passa no Teste de Resultados Ricos. A marcação correta torna a página elegível; o algoritmo decide se exibe o recurso para uma determinada consulta e usuário. Motivos comuns pelos quais um item válido ainda não aparece:
- O recurso não é mais exibido. Veja a lista abaixo.
- Problemas de política. Marcação de conteúdo que não está na página, dados enganosos ou desatualizados, ou avaliações falsas. Uma ação manual por dados estruturados remove a elegibilidade para resultados ricos; segundo o Google, ela não afeta o ranqueamento na pesquisa na web.
- Avaliações em causa própria. As estrelas de avaliação para LocalBusiness e Organization são exibidas apenas em sites que avaliam outras empresas. Uma empresa que marca avaliações sobre si mesma não receberá estrelas.
- A página ainda não foi indexada, ou o Google não a rastreou novamente desde que você alterou a marcação.
O que o Google deixou de exibir
- Resultados ricos de FAQ: limitados a sites governamentais e de saúde de autoridade desde setembro de 2023, não exibidos de forma alguma desde 7 de maio de 2026; a documentação foi removida em junho de 2026.
- How-to: removido em setembro de 2023 no desktop e no celular.
- Caixa de pesquisa de sitelinks (WebSite + SearchAction): descontinuada em novembro de 2024.
- Breadcrumbs: não são mais exibidos nos resultados para celular desde janeiro de 2025; continuam sendo exibidos no desktop.
- Course info, Estimated salary, Learning video, Special announcement, Vehicle listing: documentação removida em setembro de 2025.
Essa marcação continua sendo schema.org válido e não quebra nada; o Google simplesmente não a transforma em um recurso visual. Mantê-la ou não é uma questão de esforço de manutenção, não de risco.
JSON-LD adicionado por JavaScript ou pelo Google Tag Manager
Muitos sites inserem dados estruturados com um script ou uma tag de HTML personalizado no Google Tag Manager. O guia do Google sobre como gerar dados estruturados com JavaScript confirma que a Pesquisa Google consegue processar marcações presentes no DOM quando renderiza a página. Duas consequências:
- Ferramentas que leem apenas o HTML bruto, incluindo a nossa, não enxergam essas marcações. Teste essas páginas com o Teste de Resultados Rich (ele trabalha com o código renderizado) ou com a Inspeção de URL no Search Console. Outra opção: abra a página no Chrome DevTools, copie o elemento
<html>renderizado (Elements → Copy → Copy outerHTML) e cole em um validador. - Para marcação de Product, o Google avisa que marcações geradas dinamicamente podem tornar as varreduras do Shopping menos frequentes e menos confiáveis. Se preço e disponibilidade mudam com frequência, coloque o JSON-LD no HTML do lado do servidor.
No GTM, monte a marcação a partir de variáveis da página, em vez de digitar os valores na tag. Caso contrário, a marcação se afasta do que os visitantes veem.
Verificando dados estruturados no Search Console
Os relatórios de resultados rich ficam na seção Melhorias; snippets de produto e listagens de comerciantes ficam em Shopping. Algumas coisas que você deve saber ao lê-los:
- Um relatório só aparece depois que o Google encontra marcação válida de um tipo compatível. Não é esperado que haja relatório de FAQ ou How-to.
- Os números contam itens, não páginas: uma página com três objetos Event gera três itens.
- O relatório mostra uma amostra, não todas as URLs. Para uma página específica, use a Inspeção de URL.
- Um item com problema crítico é inválido e não pode aparecer como resultado rich; problemas não críticos são avisos.
- Depois de corrigir um problema, inicie a validação na página de detalhes do problema; o relatório mostra o status da validação.
Como fazer no PromoPilot
Informe uma URL ou cole o código no validador de schema. Ele encontra todos os itens JSON-LD, Microdata e RDFa e os verifica em três camadas:
- Sintaxe: erros de JSON com linha e coluna, o motivo em linguagem simples e correções automáticas seguras (vírgulas finais, comentários, aspas curvas, quebras de linha dentro de valores, vários objetos em sequência), com um bloco corrigido pronto para copiar.
- Vocabulário: tipos e propriedades conforme o schema.org (atualmente a versão 30.1), com dicas para erros de digitação e maiúsculas/minúsculas incorretas, termos substituídos, valores de enumeração, datas e durações ISO 8601.
- Regras do Google: campos obrigatórios e recomendados para artigos, produtos, avaliações, breadcrumbs, organizações, negócios locais, eventos, receitas, vídeos, aplicativos de software e vagas de emprego.
Ele também monta o @graph, segue as referências @id e sinaliza entidades duplicadas. O código colado pode ter até 512 KB; uma página buscada fica em cache por 10 minutos. Para criar marcação do zero, use o gerador de schema (Article, Product, FAQ, Organization, LocalBusiness, Breadcrumbs) ou o gerador de schema FAQ.
O que nosso validador não faz
- Ele não executa JavaScript, então marcações adicionadas pelo GTM ou por um aplicativo de página única ficam invisíveis para ele. Ele avisa quando a página usa GTM ou parece ser um SPA.
- Ele não compara a marcação com o texto visível. Um preço no JSON-LD diferente do da página é uma violação de política, mas isso não pode ser detectado automaticamente.
- Ele não pode prometer um resultado rich, ninguém fora do Google pode.
Leituras relacionadas
- Dados estruturados e Schema.org: o que são e quais tipos importam.
- Featured snippet: o bloco de resposta que os dados estruturados não controlam.
- Verificação de meta tags e prévia do snippet: o restante de como uma página aparece na busca.