Unparsable structured data: find the broken JSON-LD and fix it

Updated · Check Before Publish

“Unparsable structured data” in Google Search Console means Google found structured data on the page but couldn't read it at all, so it ignores that block. The cause is almost always a syntax error in a JSON-LD <script>: a trailing comma, an unescaped quote, a missing bracket or an empty value left by a template. It doesn't remove the page from Google by itself; what you lose is whatever the markup was there for, such as eligibility for richer search listings.

What the status means, and what it doesn't

  • Unparsable structured data: the block couldn't be read. Nothing in it counts.
  • Invalid items in a rich result report (for example Product or Event): the block was read, but it lacks properties that particular feature requires. That's a different problem with a different fix.

Search Console usually names the error (for example a missing comma or bracket, or an incorrect value type) and the line it was found on. That line refers to the HTML Google fetched, which helps you find the block.

The usual causes

  1. A trailing comma after the last property. JavaScript tolerates it; JSON doesn't:
    {
      "@context": "https://schema.org",
      "@type": "Organization",
      "name": "Northfield Ceramics",
    }
  2. An unescaped double quote inside a value, often a product name with inches or a quoted phrase:
    "name": "27" Monitor"      ← breaks
    "name": "27\" Monitor"     ← valid
  3. An empty template variable. A template that prints a value directly leaves a hole when the value is missing:
    "price": ,
    "priceCurrency": "EUR"
  4. Curly quotes (“ ”) pasted from a word processor instead of straight quotes (").
  5. Two objects side by side in one script without an array or @graph around them, or an HTML comment inside the script.
  6. A value of the wrong type, for example an object where Google expects text. This one parses as JSON but can still be reported as an incorrect value type.

How to check the page

Search Console's report lists the affected URLs. Google's Rich Results Test shows parse errors for a single URL too. To see exactly which block is broken, paste the address below: the checker reads every JSON-LD block in the page's HTML and shows the parser's error message for each one that isn't valid JSON. For blocks that do parse, it also flags a missing @context, type names in the wrong case (product instead of Product), and dates, prices and currencies in the wrong format. Commonly expected properties that are missing are listed for review, never as errors, because schema.org itself makes no property mandatory.

Opens the Schema Markup Checker and runs it. Free, no account. The address is not stored and never goes into the URL bar.

Limits: it reads the HTML the server sends. JSON-LD added later by a tag manager or other script won't appear, although Google can render JavaScript and may still see it. Microdata and RDFa are detected but not validated. And whether a search engine shows a rich result is always its own decision.

If Search Console reports an error but the checker finds no JSON-LD at all, the markup is almost certainly being injected by script. Look in your tag manager or theme scripts, not the page template.

How to fix it

  1. Find what writes the block: an SEO plugin, the theme or template, a tag manager tag, or markup pasted by hand. Fix it there, so the next page it generates is right too.
  2. Generate JSON with a serializer, not by joining strings. Building JSON-LD with json_encode in PHP, JSON.stringify in JavaScript or your framework's equivalent escapes quotes and line breaks for you, and turns an empty value into null instead of a hole.
  3. Leave out properties you have no value for rather than printing them empty.
  4. Replace curly quotes with straight ones if the markup was pasted from a document.

How to confirm the fix

  1. Run the check again until every block parses. Clear any page cache or CDN first.
  2. Test the live URL in the Rich Results Test.
  3. In Search Console, open the Unparsable structured data report and choose Validate fix. Google rechecks the affected pages on its own schedule.

Launching the page soon? The website launch checklist covers structured data alongside the other things worth confirming before it goes live.

Fixed this one? Before you send people to the page, run the full pre-publish check for everything else: indexing signals, link preview, broken links, alt text, structured data and HTTPS in one pass.