Free structured data checker
Enter a page's URL, or paste its JSON-LD or HTML. The checker finds every <script type="application/ld+json"> block and tells you, for each one, whether it parses as JSON, whether it has a schema.org @context, which @type each node has, whether it uses a type Google no longer shows rich results for, and which properties Google requires or recommends for common types are missing.
This checks the common rules. For Google's own verdict on rich results, run the Rich Results Test.
Headlark writes JSON-LD from each page's own content on every build or deploy, keeps the types you already have, and rewrites it when the page changes. Free for 25 pages.
Write JSON-LD automatically: start freeWhat it checks
Every block on its own, because a syntax error in one block doesn't stop Google reading the others. A block can hold one object, an array of objects, or an object with an @graph list; each node in it is checked, and nodes inside a @graph share the top-level @context.
For these types it checks the properties from Google's structured data documentation and labels them the way Google does: "Google requires" means no rich result without it, "Google recommends" means the result can be richer with it.
| Type | Google requires | Google recommends (checked here) |
|---|---|---|
| Article, NewsArticle, BlogPosting | nothing | headline, image, datePublished, author |
| Product (product snippets) | name; and review, aggregateRating or offers | — |
| Organization | nothing | name, url, logo |
| BreadcrumbList | itemListElement; position, name and item on each ListItem (item can be left out on the last one) | — |
| WebSite (site names, on the home page) | name, url | alternateName |
| SoftwareApplication, MobileApplication, WebApplication | name; offers.price; and aggregateRating or review | applicationCategory, operatingSystem |
| Event | name, startDate, location, location.address | description, endDate, eventStatus, image, location.name, offers, organizer, performer |
| LocalBusiness | name, address | telephone, url, image, openingHoursSpecification, geo, priceRange |
Subtypes such as Restaurant or MusicEvent, objects nested inside other properties, and the values themselves (a valid date, a reachable image) aren't checked; the Rich Results Test does that.
To add or fix JSON-LD by hand, the guide JSON-LD for Astro and Docusaurus has components, the types that fit docs sites and blogs, and the common mistakes.
FAQ and How-to markup
Google stopped showing FAQ rich results on May 7, 2026 and removed their documentation in June. How-to rich results were retired in September 2023. FAQPage and HowTo markup doesn't hurt a page, but it no longer changes how the page looks in Google, so the checker flags it.
How it works
For a URL it reads only the HTML your server sends, like the SEO checker: JSON-LD that JavaScript adds after the page loads isn't there. If your site adds it that way, paste the HTML from your browser's inspector. Nothing is stored: the result is made on our server when you press the button and only shown to you.