Live structured data validation
We recently shipped the Rules Engine — fire 100+ SEO checks on every page as you browse. This week's release is the natural follow-up: structured data validation, live, against all of schema.org.
Not a link to Google's Rich Results Test. Not copy-pasting JSON into a third-party validator. Validation that runs in milliseconds inside the browser you're already using, against the same rules Google publishes, as you move from page to page.
What it validates

921 schema types. All of them.
The type registry is generated from schema-dts — the same TypeScript definitions Google maintains — so if a type exists on schema.org, SERP Lens knows about it. Misspell Articel? You get an error at @type with a pointer back to schema.org. Use a valid but obscure type like MusicAlbum? Passes the type check. No false alarm.
On top of that, 25 dedicated handlers cover every Google rich-result type with property-level rules straight from Google's docs: Article, NewsArticle, BlogPosting, Product, FAQPage, Event (and 24 subtypes), LocalBusiness (and 30+ subtypes), BreadcrumbList, Organization, WebSite, Course, Movie, Recipe, VideoObject, JobPosting, Dataset, QAPage, ProfilePage, SoftwareApplication, DiscussionForumPosting, VacationRental, MathSolver, Quiz, ImageObject license metadata, EmployerAggregateRating, Review snippets, and ItemList carousels.
Each handler encodes the actual rules Google enforces:
Article headlines flagged past 110 characters — the point at which Google starts truncating
Images checked for 16:9, 4:3, and 1:1 aspect ratio coverage
Geo coordinates warned when precision drops below 5 decimal places
ISO 8601 dates, durations, time formats, currency codes, URLs — all validated at the format level
Author fields flagged when they're bare strings instead of Person or Organization objects
Review ratings, aggregate ratings, postal addresses, interaction counters — each with a dedicated check
If it's in Google's rich results documentation, the validator knows about it.
@graph, flattened. @id, resolved.

The thing that breaks most structured data tools: real sites don't ship one schema per page. They ship a @graph with a dozen interlinked nodes — an Organization, a WebSite, a BreadcrumbList, a Product, an Offer, a Review — each referencing the others through @id. This approach is common and made popular by WordPress plugins like RankMath and Yoast.
SERP Lens flattens the graph and resolves references recursively. When a Product points to { "@id": "<https://example.com/#org>" }, the validator follows the pointer, pulls in the Organization, and validates the resolved shape the way schema.org intended. Cycle detection keeps self-referencing graphs from looping. Every resolution is surfaced in the UI with a Linked marker so you can see exactly which nodes were stitched together.
It's the difference between "your brand.@id looks like a string" and "your brand resolves to an Organization missing sameAs."
Two views. Same issues.
The panel opens on a tree view. Every property on every schema, grouped by type, collapsible down to the leaf. Severity dots sit next to any field with an issue. They bubble up: an error at offers[0].price lights up offers[0] and offers, so you can navigate from the summary straight to the broken field without expanding every node by hand.
Toggle the header icon and the same panel becomes a JSON-LD view.

Syntax-highlighted, line-numbered, with per-line severity colouring — the line with the bad date is red, the line with the missing recommended field is yellow, green identifies schema via @id. Tooltips carry the full message and the recommendation.
Two ways to look at the same validation result. Pick whichever matches how your brain parses the problem.
Runs in-app
Zero network calls. Your JSON-LD never leaves the machine. The schema.org registry ships with the app. Validate a staging site behind SSO, a localhost page, a dev environment — the validator doesn't care.
A Validate externally button is still there if you want Google's official Rich Results Test for a final gut-check. Opens in a new tab. Same browser.
What it does, and what's next
In this release: JSON-LD extracted from <script type="application/ld+json">. Full schema.org type validation across 921 types. Property-level rules for the 25 rich-result handlers. Recursive @graph resolution with cycle detection. Tree view, JSON-LD view, line highlighting, bubbled severity dots, CSV export.
Not in this release: microdata and RDFa extraction. These are less common in modern SEO work, but we’re interested to here how many users actually want this.
Ships today
Structured data validation lands in the latest SERP Lens release. The rule of thumb we keep coming back to: if you're doing it in another tab, we probably shouldn't be asking you to. Structured data was in another tab.
About the authors
SERP Lens Team
SERP Lens is the web browser built for SEO professionals, managed by a small team of highly experienced SEO consultants.


