Schema audit tool
Audit the JSON-LD structured data of a page or a snippet: syntax errors with their exact line, @context and @type, @id links, and the properties Google requires for each rich result, including which features Google has retired.
- Errors shown at the exact line
- Google's required properties per type
- Pasted code stays in your browser
Structured data
Enter a URL to start
- SourceWaiting for inputURL or pasted code
- JSON syntax—Every block parsed
- Schema.org—@context, @type, @id
- Google—Rich result properties
Schema audit
Enter a page URL or paste JSON-LD above to see every structured data item, its errors and warnings, and whether it has what Google needs for a rich result.
Fair-use limit for URL audits: 30 per hour and 200 per day for each visitor IP address. Results are cached for 10 minutes. Pasted code has no limit.
What structured data does
JSON-LD describes what a page is about, such as a product, an article or a business, in a form search engines can read without guessing.
Syntax first
One trailing comma or a single quote makes the whole block unreadable, so nothing in it counts.
Schema.org vocabulary
@context names the vocabulary and @type the kind of thing. Type names are case-sensitive: Article, not article.
Eligible, not guaranteed
Google's required properties make a page eligible for a rich result. Google still decides whether to show it.
Features change
Google retired FAQ, HowTo and the sitelinks search box, and dropped seven more features in 2025. Old markup is harmless.
Google's rules the audit checks
Required properties decide eligibility; recommended ones improve the result. From Google Search Central, checked on October 16, 2026.
| Type | Required | Recommended |
|---|---|---|
Article, NewsArticle, BlogPosting |
None | headline, image, datePublished, dateModified, author |
BreadcrumbList |
itemListElement with at least 2 ListItems, each with position, name and item (item optional on the last) | None |
Product |
name, plus one of offers, review or aggregateRating; Offer needs price | image, description, priceCurrency, availability |
SoftwareApplication |
name, offers.price, plus aggregateRating or review | applicationCategory, operatingSystem |
Event |
name, startDate, location with address | description, endDate, eventStatus, image, offers, organizer, performer |
LocalBusiness and its subtypes |
name, address | telephone, url, geo, openingHoursSpecification, priceRange, image |
Organization |
None | name, url, logo, sameAs, description, address, contactPoint |
Recipe |
name, image | author, datePublished, description, recipeIngredient, recipeInstructions, totalTime |
VideoObject |
name, thumbnailUrl, uploadDate | description, contentUrl or embedUrl, duration |
JobPosting |
title, description, datePosted, hiringOrganization, jobLocation | baseSalary, employmentType, validThrough |
Review, AggregateRating |
author, itemReviewed, reviewRating.ratingValue; ratingValue plus ratingCount or reviewCount | datePublished, bestRating, worstRating |
How to use this tool
From a URL or snippet to markup that is ready for Google.
Enter a URL or paste code
Paste JSON-LD, a script tag or a whole HTML page, or open a .json, .html or .txt file.
Read the syntax check
Invalid JSON is shown with its line, column and the most likely cause.
Review each item
Every typed item gets its rich result status, issues and a table of its properties.
Confirm with Google
Run the Rich Results Test for Google's own verdict before you rely on a rich result.
What this tool does, and what it doesn't
A plain list, so you know exactly what to expect.
This tool does
- Find JSON syntax errors by line
- Follow @context through @graph
- Check @id links, URLs and dates
- Check Google's required properties
- Flag retired rich result features
- Audit pasted code in your browser
This tool does not
- Replace Google's Rich Results Test
- Guarantee rich results or rankings
- Audit Microdata or RDFa in detail
- See markup added by JavaScript
- Fix or rewrite your markup
- Store your URLs or code
Where your data goes
Pasted or uploaded code is audited in your browser and sent nowhere. For a URL, our server fetches the page and returns its JSON-LD to your browser; the result is kept for 10 minutes. Fair-use counters use a hashed IP address, as described in our privacy policy.
Why your results might look unexpected
The six situations people run into most, and what each one means.
Invalid JSON in a block
A trailing comma, a missing comma or a single quote. The error line shows where.
Many items from one block
SEO plugins put WebPage, Organization, Person and more into one @graph.
@id reference not found
An item points to an @id that is not on this page. Fine if it lives on another page.
FAQ or HowTo marked as retired
Google no longer shows these rich results. The markup is harmless.
No JSON-LD found
The markup may be added by JavaScript after load, or the page uses Microdata.
Missing required property
The item is valid Schema.org but cannot get that Google rich result yet.
Questions about schema audits
What does this schema audit check?
It checks that each JSON-LD block is valid JSON and points to the exact line of an error, that every item has a Schema.org @context and @type, that @id references resolve, and that URLs and dates are in the right format. For types that can show as a Google rich result, it checks the properties Google lists as required and recommended.
Does passing the audit mean I will get rich results?
No. Valid markup makes a page eligible, but Google decides whether to show a rich result, and the markup must describe content that is visible on the page. Use Google's Rich Results Test for Google's own verdict, and the Schema.org Validator for all Schema.org types.
Why does my FAQ markup show as retired?
Google stopped showing FAQ rich results in Search in May 2026, after limiting them to government and health sites in 2023. HowTo rich results and the sitelinks search box are also gone, and Google dropped seven more features, such as Course info and Claim review, in 2025. The markup does no harm and is still valid Schema.org, so you can keep or remove it.
Why are items inside @graph not missing @context?
In JSON-LD, the @context at the top of a block applies to everything inside it, including every item in an @graph array and every nested object. The audit follows that rule, so only a block without any @context is reported.
What does an @id reference warning mean?
Plugins such as Yoast SEO and Rank Math link items with @id, for example an Article whose author is {"@id": "https://example.com/#person"}. If no item on the page has that @id, the link points nowhere on this page. That is fine when the item is defined on another page, but often it is a sign of a missing or renamed node.
Does the tool check Microdata and RDFa?
It counts Microdata and RDFa types on a page so you know they are there, but it audits JSON-LD only, the format Google recommends. Use the Rich Results Test or the Schema.org Validator to check Microdata and RDFa in detail.
Is my URL or code sent to your server?
Pasted or uploaded code is checked in your browser and is not sent anywhere. For a URL, our server fetches the page and returns its JSON-LD to your browser, where the audit runs; the result is kept for 10 minutes. Fair-use counters use a hashed version of your IP address, as described in our privacy policy.