JSON-LD Validator
Check pasted JSON-LD (raw or script-tag-wrapped) for valid syntax and basic structure — never executed, never rendered as HTML.
@context, @type) only — it is not a complete schema.org semantic validator, and passing this check is not a guarantee of Google or Bing rich-result eligibility. Nothing you paste is ever executed or rendered as HTML.The Schema Markup Generator builds correct JSON-LD from a form for four specific types. This tool goes the other direction — checking JSON-LD you already have (yours or someone else's) for syntax errors and the basic structural markers most consumers expect, whether it came from this site or anywhere else.
Checked entirely in your browser — nothing you paste here is sent to a server.
Paste JSON-LD — raw, or wrapped in a full <script type="application/ld+json"> tag — and check it for valid JSON syntax plus the basic structural markers (@context, @type) most consumers expect. Nothing you paste is ever parsed as HTML or executed.
This is a syntax and structure check, not a complete schema.org semantic validator — it doesn't verify that a given type's required properties are present, and passing it is not a guarantee of a Google or Bing rich result.
How to use the JSON-LD Validator
- Paste your JSON-LD into the box, either the raw JSON or the whole script tag copied from your page source.
- Click Validate.
- If you see a red Invalid JSON message, fix the problem at the position it reports and validate again.
- Review any amber warnings about @context or @type, then use Copy to take the formatted version.
Example: Catching a trailing comma
Paste <script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Example Co",}</script> and click Validate. The tag is unwrapped and the trailing comma after "Example Co" is reported as invalid JSON; in Chrome the message reads Invalid JSON: Expected double-quoted property name in JSON at position 76 (line 1 column 77). Remove the comma and it reports Valid JSON (unwrapped from a <script> tag) with no warnings.
Questions about the JSON-LD Validator
- Why is the error position different from what I see in my editor?
- When you paste a full script tag, the position counts from the start of the JSON inside the tag, not from the start of what you pasted. The wording of the message comes from your browser's own JSON parser, so it can differ between browsers.
- Does it check markup that uses @graph?
- Yes. The top level needs @context but not @type, and each item inside @graph is checked for its own @type; items inherit the top-level @context. An item holding only @id is treated as a reference and not flagged.
- Can I check several script blocks at once?
- No. Paste one block at a time; two blocks pasted together are reported as more than one script block. If you need several items in one block, put them in a JSON array, and each item is checked separately.
- Why does the formatted output show \u003c instead of <?
- Every < is escaped so that the copied text cannot close a script tag early if a value contains </script>. JSON parsers read it back as the same character, so the data is unchanged.