Valid markup is necessary, but it does not guarantee a rich result
Describe the visible primary content accurately with supported properties and stable identifiers. Then validate the vocabulary and the requirements of the specific search feature; eligibility still does not guarantee that a search engine will show an enhancement.
- Fix JSON syntax before evaluating entities or rich-result rules.
- Mark up content that is visible and truthful on the page.
- Use the most specific applicable type and stable @id values.
- Test against both Schema.org and the target search feature documentation.
Three validation layers
- Syntax JSON must parse and Microdata or RDFa attributes must form readable values.
- Vocabulary model Types and properties should exist in Schema.org and connect to the intended entity.
- Feature eligibility Google rich-result types have required properties, policies, and content-specific rules.
- Search selection A fully valid page can still receive a normal result because display is algorithmic.
Model the page, not the template
Choose the primary entity that the page is actually about, then connect supporting entities such as the organization, author, offers, breadcrumbs, or images. Reuse stable @id identifiers so repeated organization and website references describe the same objects.
Do not generate ratings, prices, availability, dates, or authors that users cannot verify in the visible page. Boilerplate markup on an inapplicable page can be syntactically perfect and still violate quality guidelines.
Debug the generated production graph
Inspect the final server HTML and rendered DOM when JavaScript injects markup. Decode every JSON-LD block separately, then examine the combined entity graph for duplicate IDs, conflicting values, relative URLs, and template placeholders.
Use Schema.org validation for the general model and Google’s Rich Results Test for supported features. Finally use URL Inspection to confirm that Google can fetch and render the same data.
Validate from syntax to search eligibility
- 01Parse every JSON-LD block from the production page.
- 02Remove placeholders, duplicate IDs, and conflicting entity values.
- 03Match markup to visible current page content.
- 04Check Schema.org types and feature-specific required properties.
- 05Run Rich Results Test and inspect the rendered production URL.
Official references
The technical recommendations in this guide are aligned with these primary sources.