Is the schema markup preview free?
Yes. Previewing schema markup is completely free, with no signup, and your JSON-LD is parsed locally in your browser.
Does it upload my markup to a server?
No. This tool parses and previews JSON-LD entirely in your browser, so your markup is never sent to a server.
Does it support microdata or RDFa?
No. This version supports JSON-LD only, which keeps parsing reliable and avoids microdata and RDFa edge cases.
Does it tell me if I qualify for rich results?
No. It is an inspection and preview tool, not a rich-results eligibility checker. It confirms the markup parses and summarizes the entities it contains.
What does the entity summary show?
It shows a compact view of the entities and key properties found in your JSON-LD so you can quickly sanity-check the structure.
Why does pasting my <script type="application/ld+json"> block fail?
The input is handed directly to JSON.parse, which sees a < as the first character and stops with "Unexpected token '<'". Copy only what is between the script tags. The tool is a JSON-LD inspector, not an HTML scraper, so it never looks for a script element in your paste.
Does a clean parse mean I will get rich results?
No. A clean parse means the JSON is syntactically valid, which is the lowest bar there is. It says nothing about whether the @type is a real schema.org type, whether the properties Google requires for that rich result are present, or whether your page qualifies at all. Use Google's own Rich Results Test for eligibility.
Is @graph supported?
Yes. When the root object has an @graph array, each element is treated as an entity: the entity count is the array length and every @type across the graph is collected and de-duplicated, including nested arrays of types. The one gap is that the primary name and primary URL fields still read the root object, which in a graph document has neither, so those two show Missing.
Why does my array of entities report a count of 1?
The summary only unwraps @graph. A top-level array is treated as a single value, so the count reads 1, the type list comes back empty, and no root type is detected. It is a genuine gap in the summary and easy to work around: put your entities in {"@context": "https://schema.org", "@graph": [ ... ]} and the count and types resolve correctly.
How is the pretty-printed output formatted?
It is JSON.stringify with two-space indentation, so key order is preserved exactly as you wrote it and only the whitespace changes. That makes the output safe to paste straight back into your script tag, since nothing in the data is rewritten or reordered.
Is my markup uploaded?
No. The JSON is parsed by your browser and the summary is computed locally, so unreleased pages, internal URLs, and draft schema never leave the tab.