Learn
Structured Data Errors Guide: Fix JSON-LD, Schema Markup, and Rich Results
A practical guide to structured data errors: what blocks rich results versus what is only a warning, the common JSON-LD mistakes, and how to validate the fix.
Run a fresh DomainLens audit and use the report as your priority list.
What structured data does and where it fails
Structured data is machine-readable markup — almost always JSON-LD — that tells search engines what a page is about: a product with a price, an article with an author, a recipe with a cook time. When it is valid and matches the visible content, the page becomes eligible for rich results: star ratings, prices, FAQs, breadcrumbs, and other enhanced listings.
It fails in two ways. Technically, the JSON-LD can be malformed or missing required properties, so Google cannot parse it. Editorially, the markup can describe something the page does not actually show, which is a guidelines violation that can trigger a manual action. Both remove your rich-result eligibility, but you debug them very differently.
Errors vs warnings: what actually blocks rich results
The Rich Results Test and Search Console both split issues into errors and warnings, and the distinction matters:
- Errors are missing required properties (e.g. a Product with no name, an Offer with no price). They make the item ineligible for the rich result — fix these first.
- Warnings are missing recommended properties (e.g. no aggregateRating, no image). The item is still eligible, but a more complete result may win the slot.
- Invalid values — wrong types, bad date formats, prices as text — are treated as errors for the affected field.
- A page can have valid syntax and still be ineligible if the item type is not one Google supports for rich results.
The most common JSON-LD mistakes
- Markup that does not match the visible page — a review rating or price in JSON-LD that a user cannot see is a policy violation.
- Missing required fields: Product without offers/price, Article without headline, BreadcrumbList without position on each item.
- Wrong data types: price or rating as a string with a currency symbol, dates not in ISO 8601, URLs that are relative instead of absolute.
- Multiple conflicting blocks — two Organization or two Product entities on one page with different values.
- JSON-LD injected by JavaScript that does not survive into the rendered HTML the crawler indexes.
How to find and fix schema errors
- Run the URL through Google’s Rich Results Test on the live page and read each error and warning by item.
- Cross-check with the Schema Markup Validator (schema.org) for pure syntax and vocabulary problems.
- In Search Console, use the enhancement reports (Products, Breadcrumbs, FAQ) to see errors at scale across templates.
- Fix required properties first, then align every value with what the page actually displays, then add recommended properties to strengthen eligibility.
- If the markup is JS-injected, confirm it exists in the rendered HTML, or move it server-side.
Mistakes that get rich results demoted or removed
- Marking up content that is not visible on the page, or adding review markup to non-review pages — both can trigger a manual action.
- Fixing one product template and assuming the whole catalogue is clean; schema errors are per-template and scale fast.
- Chasing warnings while ignoring the one error that makes the item ineligible.
- Adding schema for types Google does not render, then wondering why no rich result appears.
How to validate schema markup
After the fix, re-run the Rich Results Test on the live URL and confirm zero errors for the item type you want, then watch the relevant enhancement report in Search Console as the fix rolls out across templates over the following days.
In DomainLens, structured data is checked as part of the same audit as titles, canonicals, and rendering — so a Product or Article block that is malformed, missing, or only present after JavaScript surfaces alongside the rest of the page’s technical SEO, not in a separate silo.