JSON-LD Formatter & Validator
Format, beautify and validate JSON-LD structured data — paste raw JSON or a full <script> tag and check @context, @type and the required properties Google needs for Article, Product, FAQPage, BreadcrumbList, LocalBusiness, Event and more. Runs entirely in your browser.
Input
Output
| Node | Property | Requirement | Result |
|---|---|---|---|
| No data yet | |||
Guides
Paste JSON-LD you already have — copied out of a CMS plugin, a template, or AI-generated markup — and check it before it ships. This tool formats the JSON, confirms @context actually points at schema.org, checks every @type it finds against the properties Google's rich-result docs require, and tells you which rich results the markup would actually be eligible for.
How to use it
- Paste your structured data into the box — either the raw JSON object, or the whole
<script type="application/ld+json">…</script>tag copied straight from a page's<head>. The tag wrapper is stripped automatically. - Read the Result line for the overall verdict: how many nodes were found, which rich results they're eligible for, and how many problems or warnings turned up.
- The Validation checklist table lists every check —
@context,@type, and each required/recommended property — with a Present, Missing or Not set status so you know exactly what to fix. - Copy the Formatted JSON-LD back out once it's clean.
What gets checked
@context— flagged unless it resolves tohttps://schema.org(a string, an array containing it, or a@vocabmapping).@type— checked against a curated list of real schema.org type names. An unrecognized type gets a soft warning, not a hard error — schema.org has 800+ types, so this tool doesn't claim to know all of them.- Required and recommended properties, per type, for the schema.org types Google actually renders rich results for: Article (and its subtypes like BlogPosting/NewsArticle), Product, FAQPage, BreadcrumbList, Event, LocalBusiness (and common subtypes like Restaurant/Store/Hotel), Organization, Person, Recipe, VideoObject, HowTo, JobPosting and WebSite.
@grapharrays — every node inside a@graphis checked individually, inheriting the document's top-level@contextwhen it doesn't declare its own.
Why AI-generated JSON-LD needs this
A model asked for structured data will often invent a plausible-sounding @type that isn't real, or emit a technically valid object that's missing the one property (datePublished, offers.price, thumbnailUrl…) Google actually requires for the rich result. Both mistakes validate as syntactically correct JSON, so nothing catches them until Search Console reports zero rich results weeks later. This checks for exactly that gap.
Does this generate JSON-LD from scratch?
No — for that, use the Schema Markup Generator, which fills a form and produces valid JSON-LD for you. This tool is for markup you already have and want to check or reformat.
Is my data private?
Yes. Parsing and validation run entirely in your browser (or in the API/Node runtime if you call it programmatically) — nothing is uploaded or logged.
What if my @type isn't in the checklist?
It's still validated for @context/@type correctness; it just doesn't get a required-property checklist, since only types with a defined Google rich result have one. Recognized-but-unchecked types (like WebPage or ImageObject) show @type … OK with no follow-up rows.
Use it from code
REST API
curl -X POST https://api.iotools.cloud/v1/tool/json-ld-formatter-validator \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonLdInput": "<script type=\"application/ld+json\">\n{\n \"@contex…"
}'Swap in your own key from your account. The tool's fields are the body — no wrapper.
Ask an AI agent
Use the IOTools `json-ld-formatter-validator` tool (JSON-LD Formatter & Validator) on this input:
YOUR_INPUT_HEREPaste this at any agent connected to the IOTools MCP server, then add your input.
| Cost per call | From 5 credits |
|---|