Free Schema Validator: test your schema markup and rich results

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.

Enter the full URL of the page you want to test.

Reading the result

What your schema validator result means

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.

  • Overview

    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.

  • Rich result checks

    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.

  • Structured data on the page

    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.

  • What we found

    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.

How it works

How the schema validator works

  1. 1

    Enter the page URL

    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.

  2. 2

    We read every format

    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.

  3. 3

    We validate against schema.org

    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.

  4. 4

    We check rich result properties

    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.

Accuracy and limits

What this validator does and doesn't do

  • It reads the HTML your server returns. Markup that only appears after JavaScript runs isn't included.
  • It checks required and recommended properties for 13 common types. Meeting them makes a page eligible; it doesn't guarantee a rich result.
  • It doesn't check whether the markup matches the visible content. Google requires that, so make sure it does.
  • Unknown properties are flagged as warnings, because search engines ignore them rather than reject the page.
  • One page per check: three a day without an account, fifteen when signed in.

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.

Guide

How to write schema markup that validates

Most structured data problems come from a handful of habits. Follow these and your markup will pass both schema.org and rich result checks.

  • 1. Prefer JSON-LD

    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.

  • 2. Start every block with @context and @type

    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.

  • 3. Use @graph for several items

    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.

  • 4. Copy names exactly

    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.

  • 5. Write dates and durations in ISO 8601

    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.

  • 6. Mark up only what visitors can see

    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.

  • 7. Use absolute URLs

    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.

  • 8. Test after every template change

    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.

Reference

Rich result types and the properties they need

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.

TypeRequiredRecommended
Article, NewsArticle, BlogPostingNoneheadline, image, datePublished, dateModified, author (with name)
Productname, plus one of offers, review or aggregateRatingimage, description, brand, sku; offers need price and priceCurrency
FAQPagemainEntity: Questions with name and acceptedAnswer.textShown only for well-known government and health sites
HowToname, stepimage, totalTime, supply, tool; no longer shown as a rich result
BreadcrumbListitemListElement: ListItems with position, name and itemitem may be left off the last entry
OrganizationNonename, url, logo, sameAs, description
LocalBusinessname, addressurl, telephone, geo, openingHoursSpecification, priceRange, image
Eventname, startDate, locationdescription, endDate, eventStatus, eventAttendanceMode, image, offers, organizer, performer
Recipename, imageauthor, datePublished, description, prepTime, cookTime, totalTime, recipeIngredient, recipeInstructions, nutrition, aggregateRating, video
Reviewauthor, itemReviewed, reviewRating.ratingValuedatePublished; itemReviewed is implied when the review is nested in the item
VideoObjectname, thumbnailUrl, uploadDatedescription, contentUrl, embedUrl, duration, expires, interactionStatistic
SoftwareApplicationname, offers (with price), and aggregateRating or reviewapplicationCategory, operatingSystem
JobPostingtitle, description, datePosted, hiringOrganization, jobLocationvalidThrough, employmentType, baseSalary, identifier, directApply; remote jobs use jobLocationType TELECOMMUTE
Common mistakes

Common schema markup mistakes

  • A trailing comma in JSON-LD

    JSON doesn't allow a comma after the last property. One stray comma makes the whole block invalid, and every item in it disappears.

  • Two plugins writing the same schema

    An SEO plugin and a theme can both output Organization or Article markup. Duplicate, slightly different items confuse search engines. Keep one source.

  • Lowercase type names

    "@type": "product" is not a schema.org type. The validator suggests the correct spelling when it recognises the word.

  • Price written with a currency symbol

    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.

  • Review stars on pages without reviews

    aggregateRating must reflect real reviews shown on the page. Self-serving reviews of your own business are not eligible for review stars.

  • Properties on the wrong type

    author belongs to creative works, not to Product; address belongs to places and organizations. A property on the wrong type is ignored.

  • Markup only in a JavaScript bundle

    Markup injected late by a script may be missed by crawlers that don't render pages. Server-render JSON-LD when you can.

  • Forgetting nested requirements

    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.

Schema Validator FAQ

Schema validator questions, answered

Formats, rich results, and what to fix first.

What is a schema validator?

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.

Does it support JSON-LD, microdata and RDFa?

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.

What is @graph and is it valid?

@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.

Why does the page have no structured data?

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.

What is the difference between an error and a warning?

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.

If my markup is valid, will I get rich results?

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.

Which rich result types does it check?

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.

Why is a property flagged as not expected on a 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.

Can I paste code instead of a URL?

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.

Does structured data improve rankings?

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.

How many checks can I run?

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.

Is it safe to check any URL?

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.

Try these free tools

More free checks from TaskGlaze, with the same daily allowance for each tool.

Valid schema on one page is a start

TaskGlaze audits structured data, canonicals, redirects and more across every page of your site, on a schedule.

Start Free Trial →