Page SEO Analyzer: Auditoria SEO On-Page Grátis
Cole o HTML de uma página e receba uma auditoria com pontuação cobrindo meta tags, headings, canonical, Open Graph, Twitter Card, JSON-LD e acessibilidade.
O que é o Page SEO Analyzer?
O Page SEO Analyzer faz parsing do HTML de uma página e reporta o que de fato move ranking on-page: tamanho de title e description, hierarquia de headings, URL canonical, cobertura de Open Graph e Twitter Card, dados estruturados em JSON-LD, além de uma lista longa de sinais técnicos como charset, hreflang, scripts que bloqueiam o render e alt de imagens. Eu uso essa ferramenta quando um cliente me manda um único template para auditar mas não tenho acesso ao CMS — você cola o HTML renderizado uma vez e recebe uma lista numerada de correções. Erros, alertas e notas informativas têm código de cor e ficam ordenados por severidade, e um detalhamento em cinco abas traz à tona cada sinal que o parser encontrou, então você confere com a mesma facilidade o que está presente quanto o que falta.
Funcionalidades principais
- Pontuação SEO com detalhamento por categoria — toda análise gera uma pontuação geral 0-100, mais subscores por categoria para crawlability, conteúdo, social, dados estruturados e acessibilidade, então você vê onde a página está perdendo pontos.
- Auditoria de meta tags — extrai e valida title (tamanho mais estimativa de largura em pixels contra o limite de ~600px do Google em desktop), description, canonical, robots, viewport, charset e
<html lang>, sinalizando campos faltantes ou grandes demais. - Visão de hierarquia de headings — lista cada H1 a H6 na ordem do documento com indentação, marca H1 ausente, múltiplos H1s e níveis pulados (por exemplo H2 indo direto para H4).
- Cobertura de Open Graph e Twitter Card — verifica
og:title,og:description,og:image,og:url,og:type,og:site_name, além dos quatro campostwitter:*, e avisa quandoog:urle<link rel="canonical">divergem. - Parsing e validação de JSON-LD — extrai cada bloco
<script type="application/ld+json">, faz o parse, conta blocos não parseáveis separadamente, e mostra o@typeresolvido em cada schema. - Verificações de alt e dimensões de imagens — conta imagens sem
alt, comaltvazio, com nome de arquivo como alt (IMG_1234.jpg), sem width/height explícitos (sinal de Cumulative Layout Shift) e imagens below-fold semloading="lazy". - Auditoria de links — contagens internas vs externas, detecção de anchor text genérico (click here, read more, learn more), links de fragmento na mesma página apontando para IDs que não existem, e
target="_blank"semrel="noopener". - Aba Tech — status num relance para canonical, charset, viewport, html lang, robots, favicon, contagem de hreflang, main landmark, preload hints, scripts que bloqueiam o render, tags obsoletas (
<center>,<font>,<marquee>...) e base href. - Parsing no navegador — usa o
DOMParsernativo para percorrer o HTML; sem upload, sem API externa.
Como usar o Page SEO Analyzer
Passo 1: Cole seu HTML
A única entrada da página é uma textarea rotulada "HTML Input". Cole o código HTML completo de uma página — geralmente o que você obtém em "Exibir código-fonte" do navegador (Ctrl+U / Cmd+Option+U), no corpo de resposta de um curl -L, ou no HTML renderizado exportado do seu framework. O limite de 2 MB é aplicado; páginas maiores disparam um aviso antes de parsear porque o DOMParser na main thread começa a engasgar.
Passo 2: Clique em Analyze
Pressione o botão Analyze abaixo da textarea. O parsing roda no seu navegador; os resultados aparecem na hora. Se a textarea estiver vazia, a ferramenta mostra um toast "Please enter HTML to analyze" em vez de falhar em silêncio.
Passo 3: Leia o resumo da pontuação
Uma linha de 4 cards aparece no topo: o Score geral (verde a partir de 80, amarelo 50-79, vermelho abaixo de 50), Errors, Warnings e a contagem de Schemas encontrados. Abaixo dos cards, a lista Issues mostra cada achado ordenado por severidade — primeiro erros (XCircle vermelho), depois alertas (AlertTriangle amarelo), depois notas informativas (CheckCircle azul). Cada issue tem uma mensagem i18n com os números reais preenchidos (por exemplo "8 of 12 images missing alt text").
Passo 4: Aprofunde nas abas
Cinco abas ficam abaixo dos issues:
- Meta — title com contagem de caracteres e badge "Optimal" entre 50-60 caracteres, description com o mesmo badge entre 150-160 caracteres, além de canonical e robots.
- Headings — cada heading na ordem do documento com badge
H1-H6e o texto. A indentação visualiza a profundidade de aninhamento. - Social — cards de Open Graph e Twitter Card lado a lado com cada campo preenchido ou marcado como "Not set".
- Schema — cada bloco JSON-LD com seu
@typee um dump JSON formatado. - Tech — 16 cards pequenos de status cobrindo charset, viewport, hreflang, main landmark, preload hints, scripts que bloqueiam o render, imagens sem dimensões, cobertura lazy-load, tags obsoletas, contagens de links internos/externos e base href.
Passo 5: Corrija e re-analise
Aplique correções na fonte, cole o novo HTML, clique em Analyze de novo. Cada execução grava uma entrada de histórico resumindo erros, alertas e contagem de headings, então você consegue comparar duas passadas no mesmo template. Supporters podem ainda salvar snapshots rotulados, gerar relatório PDF e puxar trechos de correção traduzidos para os achados mais comuns.
Exemplos práticos
Auditando uma landing de marketing
Uma landing tem <title>Welcome to ProductX — The All-in-One Customer Platform</title> (74 caracteres, bem acima da linha de aviso de 60) e nenhum <meta name="description">. Colando o HTML, retorna: um alerta titleTooLong, um erro missingDescription e um alerta titlePixelTooLong porque o title também passa do limite de ~600px do Google em desktop. Reduza o title para uns 50-60 caracteres, escreva uma description de 150-160, rode de novo e a aba Meta mostra os badges verdes "Optimal" ao lado das duas medidas.
Validando dados estruturados Article antes de publicar
Um template de blog post adiciona um bloco JSON-LD Article. Cole o HTML renderizado; a aba Schema mostra Schema #1 (Article) com o bloco completo formatado. Se faltar uma vírgula, a lista de issues mostra invalidJsonLd com a contagem e a aba schema não vai listar aquele bloco — verificação rápida antes do push. O card de Open Graph ao lado também mostra se og:type é article (Facebook espera isso para posts de artigo).
Detectando smells de acessibilidade e performance
Uma página passa num scan rápido de Lighthouse, mas a aba Tech é mais completa. Render-blocking scripts mostra 4 em amarelo porque quatro <script src> no <head> não têm async nem defer. Images Missing Dimensions mostra 12 porque a equipe não está setando width e height. Lazy Images mostra 1 / 14 — só uma das imagens elegíveis below-fold usa loading="lazy". Cada um é um fix pequeno que se acumula entre templates.
Dicas e boas práticas
Cole HTML renderizado, não HTML fonte. Frameworks modernos renderizam meta tags, headings e JSON-LD via JavaScript. Se você cola o código fonte pré-render, o analyzer vê um <head> vazio e reporta uma lista longa de erros falso-positivos. Use "Copy outerHTML" no DevTools sobre o elemento <html>, ou faça curl na URL com -L para seguir os redirects.
Corrija primeiro erros, depois alertas, depois info. A lista de issues já vem ordenada por severidade. Erros (vermelho) bloqueiam crawl/indexação — noindexDetected, missingViewport, invalidJsonLd. Alertas (amarelo) são lacunas reais — tamanho de title, alt faltando, canonical faltando. Info (azul) são empurrões — metaKeywordsDeprecated, genericAnchorText, paginationLinks. Não persiga score perfeito silenciando achados info; eles são sinais, não erros.
Compare dois snapshots do mesmo template. Rode o analyzer antes e depois de uma correção e veja como as contagens de Errors e Warnings mudam. O painel de histórico abaixo da ferramenta guarda as últimas execuções como uma fonte rápida de diff. Para auditorias maiores, snapshots de supporter permitem rotular execuções e restaurar o HTML depois.
Confie na verificação de pixels, não só na contagem de caracteres. Dois titles de 60 caracteres podem renderizar em larguras diferentes por causa das formas das letras — "WWW Information Initiative" é mais largo que "lily lily lily lily lily i" com a mesma contagem de caracteres. A truncagem de SERP do Google é por pixels em torno de 600px. O alerta titlePixelTooLong pega titles que cabem no orçamento de caracteres mas mesmo assim são cortados.
Problemas comuns e troubleshooting
"Please enter HTML to analyze" — a textarea está vazia ou só com whitespace. Cole HTML real (não precisa começar com <!DOCTYPE html>; fragmentos parciais parseiam bem, mas um <head> faltando deixará a maioria dos campos como "not set").
"HTML too large (max 2 MB)" — a entrada passa de 2 MB. Reduza para a seção que importa (geralmente o <head> mais o esqueleto do body basta para a maioria das verificações), ou salve o HTML em arquivo e use um script local. O limite de 2 MB existe porque o DOMParser na main thread pode engasgar ou congelar a aba em entradas maiores.
"Failed to parse HTML" — o parser não conseguiu interpretar a entrada. Geralmente significa que a entrada nem é HTML (você colou JSON ou uma URL por engano). Confirme que a entrada começa com < e contém sintaxe de tags.
Score mais baixo que o esperado em página que você sabe que está boa. Veja a aba Tech. Muitos pontos saem de achados informativos que não aparecem no resumo de issues — favicon ausente, sem preload hints em página rica em conteúdo, anchor text genérico na navegação. Nenhum bloqueia, mas todos descontam do score.
Contagem de JSON-LD está um a menos do que o esperado. Aquele bloco de schema tem erro de sintaxe JSON e aparece na lista de issues como invalidJsonLd em vez de na aba schema. Cole o bloco no Formatador JSON para achar a vírgula faltando ou a chave não fechada.
A contagem de hreflang parece certa, mas hreflangInvalid está disparando. Valores hreflang precisam ser BCP-47 — en, en-US, pt-BR, ou o especial x-default. A ferramenta marca códigos que não casam com ^([a-z]{2,3}(-[A-Za-z0-9]+)*|x-default)$ (case-insensitive). Culpados comuns: en_US com underline, english, ou whitespace no fim.
Privacidade e segurança
O Page SEO Analyzer faz parsing de HTML no seu navegador usando o DOMParser nativo. O HTML que você cola não sai do seu dispositivo, e não há endpoint de servidor que receba isso. Isso importa para staging e páginas não publicadas — você pode auditar um template em rascunho ainda atrás de autenticação sem expô-lo a um crawler de terceiros. Depois que o JavaScript da ferramenta carrega, a análise em si roda offline.
Perguntas frequentes
Como a ferramenta decide o que conta como issue sério versus empurrão?
Três níveis de severidade mapeiam a orientação do W3C/Google para cada sinal. Erros são bloqueadores — diretivas noindex, <meta viewport> ausente, falhas de parsing em JSON-LD, H1 faltando em página de conteúdo. Alertas são lacunas reais que prejudicam aparência em SERP ou acessibilidade mas não bloqueiam indexação — title ou description fora do tamanho recomendado, mismatch entre canonical e og:url, target="_blank" sem rel="noopener". Achados info são empurrões de qualidade — anchor text genérico, favicon ausente, tags obsoletas. A severidade é setada na etapa de geração de issues no código fonte, não dá para configurar por execução.
O analyzer pode buscar uma URL para mim?
Atualmente não. A textarea aceita só HTML colado, porque fetching no navegador contra origens arbitrárias é bloqueado por CORS e exigiria um proxy de servidor. Se precisar auditar uma URL remota, rode curl -L -A "Mozilla/5.0" https://example.com > page.html no terminal e cole o conteúdo do arquivo.
Por que minha verificação de tamanho de title passa mas titlePixelTooLong ainda dispara?
Porque o Google trunca titles em torno de 600 pixels no render padrão Arial 20px, não em 60 caracteres. Letras largas (M, W, maiúsculas em geral, em-dashes) empurram a contagem de pixels para cima do limite mesmo quando a contagem de caracteres parece bem. A estimativa de pixels usa o measureText do canvas contra 20px Arial,Helvetica,sans-serif — uma aproximação próxima do que o Google usa em SERPs de desktop.
O que o score significa de fato?
O score é uma soma ponderada por cinco categorias: crawlability (motores de busca conseguem indexar isso), conteúdo (title, description, headings), social (Open Graph, Twitter Card), dados estruturados (presença e validade de JSON-LD) e acessibilidade (alt, lang, landmarks). Cada issue subtrai um número fixo de pontos baseado na severidade. Score 80+ indica que os sinais principais estão presentes e bem formados; 50-79 significa lacunas reais; abaixo de 50 significa que pelo menos um bloqueador de nível erro está disparando. Trate o score como resumo direcional, não como nota absoluta.
A ferramenta verifica algo que requer rodar a página?
Não — toda verificação é estática em parse-time. Coisas que precisam de execução ou rede (timing de Core Web Vitals, códigos de resposta do servidor, fetch do robots.txt, alcance do sitemap) ficam fora do escopo. Para isso, use o Em breve: Verificador de Links Quebrados para validação em crawl-time e as Em breve: Ferramentas de Sitemap para diagnósticos de sitemap.
Posso auditar uma página protegida por login?
Sim, e é um motivo para usar essa ferramenta. Abra a página logado, copie o HTML renderizado do DevTools (clique direito em <html> → Copy → Copy outerHTML), cole, analise. Nada sai do seu navegador, então páginas autenticadas e templates não publicados são seguros para testar.
Ferramentas relacionadas
- Em breve: Gerador de Meta Tags — gere o title, description, Open Graph e Twitter Card que esse analyzer verifica.
- Em breve: Gerador de Schema — construa JSON-LD válido de Article, FAQ, Product e Organization sem escrever o JSON na mão.
- Em breve: Pré-visualização de SERP — veja como seu title e description vão aparecer no Google antes de mandar a mudança.
- Em breve: Suite de Acessibilidade — auditoria de acessibilidade mais profunda cobrindo ARIA, contraste, navegação por teclado e labels de formulário.
- Formatador JSON — debuga alertas
invalidJsonLdre-formatando e validando o bloco em questão.
Teste o Page SEO Analyzer agora: Em breve: Page SEO Analyzer