# Inspetor de meta, Open Graph e JSON-LD

> Cole uma página, ou só o seu head, e leia tudo o que ela declara do modo como cada padrão lê: o title e a codificação de caracteres pelo HTML Standard, cada elemento meta classificado (os nomes do próprio padrão, o registro MetaExtensions do WHATWG, as diretivas pragma, as não conformes), cada elemento link com os seus tokens rel (canonical pela RFC 6596, alternates hreflang, ícones, manifest), o objeto Open Graph com os seus arrays e propriedades estruturadas pelo ogp.me, as propriedades de card twitter:* como registradas, as regras de robots e googlebot pela lista publicada do Google, o viewport, e cada bloco JSON-LD analisado e esboçado pelo JSON-LD 1.1. Quarenta e seis achados, cada um citando a frase em que se apoia. Analisado de modo inerte com o parse5; nada é buscado ou executado.

- Tool: https://ronutz.com/pt-BR/tools/meta-og-jsonld-inspector
- Family: Web e HTTP

---

## O que faz

Recebe uma página, ou só o conteúdo do seu head, e lê o que ela declara do modo como cada padrão lê. O HTML é analisado de modo inerte com o parse5 (o parser por trás do explicador de estrutura HTML e do testador de seletores CSS), então um head colado sem as tags `html` ou `head` é colocado onde o parser o põe, exatamente como um navegador faria. Nada é buscado, resolvido, executado ou renderizado: URLs ficam como strings, scripts ficam como texto, o JSON é analisado com `JSON.parse` e nunca avaliado. A API hospedada roda o mesmo código.

## O que lê, e contra o quê

- **title e codificação** (HTML Living Standard 4.2.2, 4.2.5.4): um title com texto; uma declaração de codificação de caracteres, `utf-8`, uma vez, com o elemento terminando dentro dos primeiros 1024 bytes (o deslocamento em bytes é mostrado).
- **Cada elemento meta** (4.2.5): classificado pelo modo como se identifica, name, http-equiv, charset, itemprop, ou o property do RDFa (a forma do Open Graph, conforme através do HTML+RDFa 1.1), e pelo que a chave é: um dos oito nomes de metadados padrão (4.2.5.1), um nome registrado na wiki MetaExtensions do WHATWG (viewport, robots, os nomes de verificação, twitter:* e outros), uma diretiva pragma (4.2.5.3: content-type, default-style, refresh, x-ua-compatible, content-security-policy) ou uma que o padrão chama de não conforme (content-language, set-cookie), ou desconhecido. Cada nome conhecido carrega a frase do próprio padrão ou do registro. As regras de uso único (description, color-scheme, application-name por língua) são verificadas, e um elemento meta sem nenhum dos atributos identificadores ou sem `content` é um erro.
- **Cada elemento link** (4.6.7): os tokens rel com os que o padrão define marcados; `rel=canonical` pela RFC 6596 (relativo, vários); `rel=alternate` com `hreflang` listados, com se há um `x-default` entre eles; ícones, apple-touch-icon, mask-icon e manifest.
- **Open Graph** (ogp.me): as quatro propriedades obrigatórias (og:title, og:type, og:image, og:url), as opcionais, arrays (o primeiro valor é o preferido, como diz o ogp.me), as propriedades estruturadas de og:image, og:video e og:audio ligadas à raiz antes delas, e uma propriedade estruturada sem raiz antes dela reportada como tal; a forma language_TERRITORY de og:locale; og:type contra os tipos globais; os namespaces verticais (article, book, profile, music, video, payment) e qualquer propriedade que o ogp.me não liste. Open Graph escrito com `name=` em vez de `property=` também é lido, com uma nota.
- **twitter:\*** propriedades de card como registradas no MetaExtensions: twitter:card com os quatro tipos que o registro nomeia (summary, photo, app, player; `summary_large_image` é reportado como de uso comum, já que a documentação de cards do X não está mais publicada), e cada nome verificado contra o registro.
- **robots, googlebot e os outros nomes de rastreador** contra a lista de regras publicada do Google: regras atuais com os seus valores (max-snippet, max-image-preview, max-video-preview, unavailable_after), regras aposentadas (noarchive, nocache, nositelinkssearchbox), desconhecidas, e conflitos dentro do que um rastreador recebe ("the more restrictive rule applies").
- **viewport**, separado em partes, com um aviso quando `user-scalable=no` ou um `maximum-scale` abaixo de 2 impede os 200 por cento do WCAG 2.2 SC 1.4.4; **refresh**, separado em segundos e URL; uma **Content Security Policy** num elemento meta, encaminhada ao avaliador de CSP, e sinalizada quando o elemento meta não é filho de head (o padrão então a ignora).
- **JSON-LD** (JSON-LD 1.1 seção 7): cada `script type="application/ld+json"` analisado; o @context, se o nível superior é um @graph, um esboço dos nós com @type, @id e uma propriedade de nome, nós sem @type contados; JSON inválido reportado com a mensagem do parser; as sequências que a seção 7.2 manda escapar (`</script`, `<!--`) sinalizadas; um script de outro type que contenha `@context` reportado como parecido.

## Os achados

Quarenta e seis regras, M1 a M46, cada uma citando a frase em que se apoia: erros são requisitos de conformidade violados (sem title, dois titles, duas descriptions, charset ausente, não UTF-8 ou tardio, um meta sem atributo identificador ou sem content, JSON-LD inválido); avisos são regras de "should" e expectativas documentadas de consumidores (um viewport que restringe o zoom, vários canonicals, uma propriedade obrigatória do Open Graph ausente, og:image sem og:image:alt, uma propriedade estruturada antes da raiz, um og:locale malformado, twitter:* sem twitter:card, JSON-LD sem @context, regras de robots em conflito, um pragma não conforme, um meta de CSP fora do head, sem lang na raiz); notas são fatos que vale saber (sem description, sem viewport, sem canonical, sem Open Graph, um canonical ou og:image relativo, um noindex, uma regra aposentada, um meta refresh, um nome desconhecido); e "em ordem" marca o que a página acerta.

## O que não faz

Não busca nada, então não pode dizer se uma imagem existe, qual o seu tamanho, se um alvo canonical responde, ou como uma dada plataforma vai renderizar um card de compartilhamento. Não valida JSON-LD contra o vocabulário do schema.org; reporta os tipos e a estrutura. O que um rastreador ou uma plataforma social faz com uma tag é citado da documentação publicada dessa parte, com a sua data; onde uma parte retirou a documentação (a marcação de cards do X), o inspetor diz isso em vez de adivinhar.

## Fontes

- [HTML Living Standard, o elemento meta e os nomes de metadados](https://html.spec.whatwg.org/multipage/semantics.html#the-meta-element) (lido em 2026-10-05)
- [HTML Living Standard, tipos de link](https://html.spec.whatwg.org/multipage/links.html#linkTypes) (lido em 2026-10-05)
- [Wiki do WHATWG, MetaExtensions](https://wiki.whatwg.org/wiki/MetaExtensions) (lido em 2026-10-05; última edição em 12 de outubro de 2023)
- [The Open Graph protocol](https://ogp.me/) (lido em 2026-10-05)
- [HTML+RDFa 1.1, Second Edition, W3C Recommendation 17 March 2015](https://www.w3.org/TR/html-rdfa/) (lido em 2026-10-05)
- [JSON-LD 1.1, W3C Recommendation 16 July 2020, seção 7](https://www.w3.org/TR/json-ld11/#embedding-json-ld-in-html-documents) (lido em 2026-10-05)
- [RFC 6596, The Canonical Link Relation](https://www.rfc-editor.org/rfc/rfc6596) (lido em 2026-10-05)
- [Google Search Central, Meta tags and attributes that Google supports](https://developers.google.com/search/docs/crawling-indexing/special-tags) (lido em 2026-10-05; última atualização 2025-12-10)
- [Google Search Central, Robots meta tag, data-nosnippet, and X-Robots-Tag specifications](https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag) (lido em 2026-10-05; última atualização 2026-03-24)
- [WCAG 2.2, SC 1.4.4 Resize Text](https://www.w3.org/TR/WCAG22/#resize-text) (lido em 2026-10-05)
- [parse5](https://github.com/inikulin/parse5) (lido em 2026-10-05)

## Standards and references

- [HTML Living Standard (WHATWG): 4.2.2 the title element; 4.2.5 the meta element; 4.2.5.1 standard metadata names; 4.2.5.2 other metadata names; 4.2.5.3 pragma directives; 4.2.5.4 specifying the document's character encoding](https://html.spec.whatwg.org/multipage/semantics.html#the-meta-element) - one title; exactly one of name, http-equiv, charset, itemprop; the eight standard names and their once-only rules; the pragma states and the non-conforming ones; UTF-8, once, within 1024 bytes
- [HTML Living Standard (WHATWG): 4.6.7 link types; 4.1.1 the html element (lang)](https://html.spec.whatwg.org/multipage/links.html#linkTypes) - the rel tokens the standard defines on link; the lang encouragement
- [WHATWG wiki, MetaExtensions (last edited 12 October 2023)](https://wiki.whatwg.org/wiki/MetaExtensions) - viewport, robots, google-site-verification, msvalidate.01 and the twitter:* card properties as registered extensions
- [The Open Graph protocol (ogp.me)](https://ogp.me/) - the four required properties; optional properties; structured properties of og:image, og:video, og:audio; arrays (first wins) and the rule that structured properties follow their root; object types and the vertical namespaces
- [HTML+RDFa 1.1, Second Edition, W3C Recommendation 17 March 2015: 4 Extensions to the HTML5 Syntax](https://www.w3.org/TR/html-rdfa/) - the property attribute on meta (the Open Graph form) is conforming through RDFa Lite's attributes
- [JSON-LD 1.1, W3C Recommendation 16 July 2020: 3.1 the context; 4 keywords; 7 embedding JSON-LD in HTML documents; 7.2 restrictions for contents of JSON-LD script elements](https://www.w3.org/TR/json-ld11/#embedding-json-ld-in-html-documents) - a data block is a script of type application/ld+json; @context, @type, @id, @graph; the sequences to escape
- [RFC 6596, The Canonical Link Relation (April 2012)](https://www.rfc-editor.org/rfc/rfc6596) - the preferred IRI from resources with duplicative content; a relative, self-referential or cross-host target is allowed
- [Google Search Central, Meta tags and attributes that Google supports (last updated 2025-12-10)](https://developers.google.com/search/docs/crawling-indexing/special-tags) - description in snippets; robots and googlebot; charset recommendation; meta refresh advice; viewport; rating; google-site-verification
- [Google Search Central, Robots meta tag, data-nosnippet, and X-Robots-Tag specifications (last updated 2026-03-24)](https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag) - the rules and their values; conflicts resolved by the more restrictive rule; retired rules; the user agent tokens
- [WCAG 2.2, W3C Recommendation 12 December 2024: SC 1.4.4 Resize Text](https://www.w3.org/TR/WCAG22/#resize-text) - text resizable up to 200 percent, the sentence behind the zoom-restricting viewport finding
- [parse5 8.0.1, the HTML parser (MIT)](https://github.com/inikulin/parse5) - parse() with sourceCodeLocationInfo; the default tree adapter

## Related reading

- [O que o head de uma página declara, e quem lê cada linha](https://ronutz.com/pt-BR/learn/what-a-page-head-declares-and-who-reads-it.md): O head de uma página HTML é escrito para máquinas, e cada linha é lida por uma máquina diferente sob regras diferentes: o navegador lê o title, a codificação e as diretivas pragma pelo HTML Standard; um rastreador de busca lê description, robots e canonical pela sua própria documentação publicada e pela RFC 6596; uma plataforma social lê Open Graph pelo ogp.me e twitter:* por um registro de 2023; um consumidor de dados estruturados lê JSON-LD pela Recomendação do W3C. O que cada parte exige, o que apenas prefere, o que é ignorado em silêncio, e o punhado de regras (um title, uma description, UTF-8 uma vez e cedo, exatamente um atributo identificador por meta) que são erros e não conselhos.
