Paste a page URL to check its JSON-LD, microdata and RDFa, including @graph and multi-item markup. See every type and property, what schema.org doesn't recognise, and which required properties a rich result still needs. Free, no account needed.
The report has four parts. The verdict at the top counts errors, warnings and notices. Fix errors first: they stop markup from being used at all or block a rich result. Warnings are worth fixing but don't break anything on their own.
Which formats the page uses (JSON-LD, microdata or RDFa), how many items each holds, every schema.org type found, and any JSON-LD block that isn't valid JSON. A block with a syntax error is skipped entirely by search engines, so it is always an error.
For each item that matches a rich result type, such as Product, Recipe, Event or FAQPage, the properties that type requires and recommends. "Missing required properties" means the item can't get that rich result until you add them. Nested requirements are written with a dot, so offers.price means the Offer inside offers has no price.
Every top-level item with its properties, exactly as written, and nested items such as an author inside an Article indented below it. Items that point to each other by @id, as most SEO plugins do inside @graph, appear as references.
Each issue, most serious first: unknown types (often a capitalisation slip such as product instead of Product), properties schema.org doesn't define, properties that don't belong to the type, dates and durations not written in ISO 8601, and empty values.
Use the full address of the page you want to test. Structured data belongs to individual pages, so test a product, article or recipe page rather than only your home page.
We read each JSON-LD script, including arrays and @graph wrappers, plus microdata (itemscope and itemprop) and RDFa Lite (typeof and property). Nodes that share an @id are combined, the way search engines combine them.
Every type and property is checked against the current schema.org vocabulary, including whether each property is defined for that type or one of its parent types.
Items of 13 common types are checked for the properties Google lists as required and recommended, with nested items such as offers, reviews and breadcrumb entries checked too.
Need this on every page? The TaskGlaze site audit flags invalid JSON-LD, missing schema and incomplete product markup across your whole site. See the site audit.
Most structured data problems come from a handful of habits. Follow these and your markup will pass both schema.org and rich result checks.
JSON-LD sits in one script tag, separate from your HTML, so redesigns don't break it. Google recommends it, and it is the easiest format to generate from a CMS. Use microdata or RDFa only when a platform forces it.
Each top-level item needs "@context": "https://schema.org" and an @type. Without the context, the type names mean nothing; without the type, nothing about the item can be read.
When a page describes a WebPage, an Organization, a BreadcrumbList and an Article, put them in one @graph array and link them with @id references. That keeps one copy of each entity instead of nesting the same organization three times.
Types and properties are case-sensitive. Product, not product; datePublished, not datepublished. A one-letter slip creates a type or property schema.org doesn't know, and the whole item is ignored for rich results.
Dates look like 2026-10-25 or 2026-10-25T09:30:00+01:00. Durations such as cookTime look like PT30M or PT1H15M. Phrases like "yesterday" or "30 minutes" can't be read.
Ratings, prices, FAQs and authors in your markup must appear on the page. Markup that describes hidden or different content can lead to a manual action and the loss of all rich results for the site.
Give image, logo, url and sameAs values as full https:// addresses. Relative paths are resolved against the page, which works until the same markup is reused on another URL.
Structured data usually comes from a theme or plugin template, so one change can break it on thousands of pages at once. Re-run this check on one page of each template after an update.
These are the properties the validator checks for each type, taken from Google's rich result documentation. Required properties must be present for the rich result; recommended ones improve how it can appear.
| Type | Required | Recommended |
|---|---|---|
| Article, NewsArticle, BlogPosting | None | headline, image, datePublished, dateModified, author (with name) |
| Product | name, plus one of offers, review or aggregateRating | image, description, brand, sku; offers need price and priceCurrency |
| FAQPage | mainEntity: Questions with name and acceptedAnswer.text | Shown only for well-known government and health sites |
| HowTo | name, step | image, totalTime, supply, tool; no longer shown as a rich result |
| BreadcrumbList | itemListElement: ListItems with position, name and item | item may be left off the last entry |
| Organization | None | name, url, logo, sameAs, description |
| LocalBusiness | name, address | url, telephone, geo, openingHoursSpecification, priceRange, image |
| Event | name, startDate, location | description, endDate, eventStatus, eventAttendanceMode, image, offers, organizer, performer |
| Recipe | name, image | author, datePublished, description, prepTime, cookTime, totalTime, recipeIngredient, recipeInstructions, nutrition, aggregateRating, video |
| Review | author, itemReviewed, reviewRating.ratingValue | datePublished; itemReviewed is implied when the review is nested in the item |
| VideoObject | name, thumbnailUrl, uploadDate | description, contentUrl, embedUrl, duration, expires, interactionStatistic |
| SoftwareApplication | name, offers (with price), and aggregateRating or review | applicationCategory, operatingSystem |
| JobPosting | title, description, datePosted, hiringOrganization, jobLocation | validThrough, employmentType, baseSalary, identifier, directApply; remote jobs use jobLocationType TELECOMMUTE |
JSON doesn't allow a comma after the last property. One stray comma makes the whole block invalid, and every item in it disappears.
An SEO plugin and a theme can both output Organization or Article markup. Duplicate, slightly different items confuse search engines. Keep one source.
"@type": "product" is not a schema.org type. The validator suggests the correct spelling when it recognises the word.
price should be a number like 19.99, with the currency in priceCurrency as USD or EUR. "$19.99" in price is a common reason product snippets fail.
aggregateRating must reflect real reviews shown on the page. Self-serving reviews of your own business are not eligible for review stars.
author belongs to creative works, not to Product; address belongs to places and organizations. A property on the wrong type is ignored.
Markup injected late by a script may be missed by crawlers that don't render pages. Server-render JSON-LD when you can.
An Offer without a price, a Question without an acceptedAnswer, or a Review without a reviewRating fails the rich result even though the parent item looks complete.
Formats, rich results, and what to fix first.
A schema validator reads the structured data on a page and checks it against the schema.org vocabulary. This one also checks the required and recommended properties for common rich result types, so you can see both whether the markup is valid and whether it can earn a rich result.
Yes. It reads every JSON-LD script on the page, including arrays and @graph, plus microdata and RDFa Lite using the schema.org vocabulary. Items from all three formats are shown and validated the same way.
@graph is a JSON-LD array that holds several items in one block, usually linked by @id references. It is valid and common: most SEO plugins output WebPage, WebSite, Organization and BreadcrumbList this way. The validator checks each item in the graph separately.
Either the page doesn't include any, or it is added by JavaScript after the page loads. This check reads the HTML your server returns. If your platform adds markup with JavaScript, server-rendering it is more reliable for every crawler.
Errors stop markup from working: invalid JSON, a missing @type, an unknown type, or a missing required property for a rich result. Warnings are worth fixing but don't block anything on their own, such as a missing recommended property or a property schema.org doesn't define.
Not necessarily. Valid markup with every required property makes a page eligible. Google still decides whether to show a rich result based on quality, relevance and its own policies, and some types such as FAQ and how-to are now shown rarely or not at all.
Article (including NewsArticle and BlogPosting), Product, FAQPage, HowTo, BreadcrumbList, Organization, LocalBusiness and its subtypes, Event, Recipe, Review and AggregateRating, VideoObject, SoftwareApplication and JobPosting. Subtypes such as Restaurant or NewsArticle are matched to their parent type.
schema.org defines which properties belong to which types. If a property isn't defined for the item's type or any of its parent types, search engines are likely to ignore it. Check whether it belongs on a nested item instead, for example price on the Offer rather than the Product.
Not on this page. It checks live pages, which is what search engines see. To test a change before publishing, deploy it to a staging URL that is publicly reachable and check that.
Not directly. Structured data helps search engines understand a page and can earn rich results, which often lift click-through rate. Pages don't rank higher just for having schema.
Three per tool per day without an account, or fifteen per tool per day when you are signed in to your TaskGlaze account. Each free tool has its own count.
We check every link against public lists of phishing and scam sites before loading it, and refuse ones that look unsafe. A refused link doesn't use one of your daily checks.
More free checks from TaskGlaze, with the same daily allowance for each tool.
TaskGlaze audits structured data, canonicals, redirects and more across every page of your site, on a schedule.