Home / Tools / Structured Data (JSON-LD) Validator

Structured Data (JSON-LD) Validator

Paste a JSON-LD script (with or without the surrounding script tag) to check its syntax and required fields.

sdv.log
waiting for input
Paste JSON-LD, then click "Validate".

Why validating structured data before publishing matters

Structured data is only useful if it's actually well-formed and complete — a JSON-LD block with a small syntax error, such as a missing comma or an unescaped quote inside a string, will typically fail to parse at all, meaning the entire block is silently ignored rather than partially read. Beyond pure syntax, each schema.org type has certain properties that are effectively required for the markup to be meaningful — a Product without a name, or an Article without a headline, isn't really describing anything useful even if the JSON itself is technically valid.

This validator does two things in sequence: it first attempts to parse your pasted text as JSON using the browser's own native JSON parser, which will immediately catch any syntax error and report exactly what went wrong. If parsing succeeds, it walks through the resulting object (including nested objects, since real-world schema often nests a Person inside an Article's author field, or an Offer inside a Product) and checks each typed object against a list of properties commonly considered required or highly recommended for that specific @type.

What "required" means here, and its limits

The specific fields checked for each schema type reflect commonly cited guidance for that type's minimum useful markup — a headline for an Article, a name for a Product, an address for a LocalBusiness, and so on. This is a helpful baseline check, but it isn't a complete implementation of the full schema.org specification, which defines dozens of optional properties for every type with its own nuanced recommendations depending on context. Passing this validator's checks means your markup covers the essentials for that type to be meaningfully interpreted — it doesn't guarantee eligibility for every specific rich result feature, which can have its own additional requirements beyond the base schema fields.

The validator also checks for a top-level @context field, which should typically be set to "https://schema.org" — a value search engines rely on to correctly interpret the vocabulary being used. A missing @context is flagged as a warning rather than a hard failure, since some structured data is nested inside a parent object that already establishes the context, but it's worth confirming that's genuinely the case for your specific markup rather than an oversight.

Using this alongside the Schema Markup Generator

If you built your structured data using the Schema Markup Generator elsewhere on this site, running the result through this validator is a quick sanity check that confirms nothing was accidentally broken while editing the generated code afterward — for instance, if you manually added an extra field or edited a value in a way that introduced a stray unescaped character. For structured data pulled from a content management system's automated output, this validator is useful specifically because CMS-generated JSON-LD sometimes breaks silently when a content field contains a special character, like a straight quote inside a product name, that wasn't properly escaped during generation.

Making validation a routine step, not a one-time check

Structured data is easy to get right once and then forget about, but content and templates both change over time in ways that can quietly break previously valid markup — a product name field that starts allowing special characters it didn't before, a template update that changes how a date is formatted, or a migration that alters how content fields are populated. Treating this validator as a quick step to run whenever structured data is added or a template touching it is updated, rather than a one-time check when the markup was first written, catches these regressions while they're still easy to trace back to a specific change.

Frequently asked questions

What does it mean if my JSON fails to parse entirely?

It means there's a genuine syntax error somewhere in the text — commonly a missing comma between fields, an extra trailing comma, or an unescaped quotation mark inside a text value. The error message shown points to roughly where the parser gave up, which is usually very close to the actual mistake.

Does passing this check guarantee my page is eligible for rich results?

No. It confirms your markup has valid JSON syntax and includes the fields commonly considered essential for that schema type, but individual rich result features can have their own additional eligibility requirements beyond the base schema.

Why is a missing @context only a warning, not an error?

In some structured data setups, a nested object is intentionally missing its own @context because it inherits one from a surrounding parent object. Since that's a legitimate pattern, this is flagged as a warning to double-check rather than treated as an automatic failure.

Is my structured data sent anywhere during validation?

No. Both the JSON parsing and the field checks happen entirely in your browser using JavaScript's built-in JSON parser, and nothing is transmitted to a server.