JSON-LD parse error
jsonld_parse_errorShort answer
At least one <script type="application/ld+json"> block on the page could not be parsed as JSON. Search engines skip an unparseable block entirely, so whatever markup it contained (product, article, breadcrumb) does nothing. This issue affects rich results in search. The usual causes are a trailing comma, an unescaped quote or line break inside a string, or a template that printed PHP/Liquid output in the wrong place. Make the schema valid JSON.
Why it matters
Unlike HTML, JSON has no error recovery: one stray comma invalidates the whole block. The rest of the page is unaffected (indexing and ranking do not depend on structured data), but every rich result that block would have produced is lost.
How Glimana detects it
Glimana parses every JSON-LD block during the crawl and fires when any block fails to parse. The evidence shows the number of failing blocks; the Rich Results Test or a JSON validator shows the exact position.
How to fix it
- Copy the block from the page source into a JSON validator (or the Rich Results Test) to see the line and column of the error.
- Fix the usual suspects: a trailing comma after the last property, a
"inside a title or description that was not escaped as\", a raw newline inside a string, a template variable that printed nothing (leaving"name": ,). - Escape at the source. The template should run values through a JSON encoder (
json_encode,| json,JSON.stringify) rather than inserting them into a hand-written string.
If the block comes from an SEO plugin, the error is usually in a custom schema field or a theme snippet; disable custom schema temporarily to find which. Quotes in post titles are a classic cause with hand-written schema snippets in the theme.
Theme JSON-LD must use | json on every value ("name": {{ product.title | json }}) instead of "name": "{{ product.title }}"; a product title with a quote or an apostrophe breaks the second form.
Build the schema as an array/object and serialise it with the language's JSON encoder; never concatenate strings. Add a test that parses the emitted block.
How the fix is verified
Re-crawl; the task closes when every JSON-LD block on the page parses.