Free SEO tool

Free Schema Markup Validator (JSON-LD Checker)

Paste code or check a live page. Get errors and warnings with the reason for each, a health score, a check of @graph links, and corrected code you can copy.

Values checked, not just fields@graph links checkedAuto-fixLive URL or paste
What it is

What is a schema markup validator?

A schema markup validator reads your JSON-LD structured data and reports missing required fields, wrong values and structural mistakes, so you can fix them before search engines read the page. This one also checks the links between items in an @graph and, for a live URL, whether the marked-up text appears on the page.

What it checks

What this validator tests

CheckWhat it looks atHow to fix it
SyntaxValid JSON, curly quotes, comments, trailing commas, single quotesAuto-repaired for checking, and fixed in the corrected code.
Required and recommended fieldsPer type, including nested items such as offers, author and addressFill the fields the checker names. Each shows what it unlocks.
ValuesDates, prices, currencies, ratings, review counts, URLs, durations, enumsUse the exact formats shown in the message.
Types and propertiesMisspelt types and properties, missing @type on nested itemsTake the suggested spelling.
@graph and @idMissing and duplicate @id values, repeated Organization or WebSite itemsDefine every @id once and point to it.
Page match (URL mode)Whether marked-up text appears on the pageOnly mark up what visitors can see.
Types

Schema checker: supported types and what each one needs

This schema checker has built-in checklists for the types below. For each one it flags missing required fields as errors and missing recommended fields as warnings. Other types are still parsed and shown, but without a checklist.

TypeRequiredRecommended
Article (also BlogPosting, NewsArticle)headlineimage, datePublished, dateModified, author
Productname, plus one of offers, review or aggregateRatingimage, description, offers, aggregateRating, brand, sku
Offerprice, priceCurrencyavailability, url, priceValidUntil
AggregateRatingratingValue, plus reviewCount or ratingCountNone
ReviewitemReviewed, reviewRating, authordatePublished, reviewBody
LocalBusiness (and subtypes)name, addressimage, telephone, url, openingHours, geo, priceRange, sameAs
Organizationnameurl, logo, sameAs, description, telephone
Personnameurl, image, sameAs, jobTitle
WebSiteurlname
FAQPagemainEntity, with each Question having a name and acceptedAnswer, and each Answer having textNone
BreadcrumbListitemListElement, with each item having a position and nameitem (the URL)
Eventname, startDate, locationendDate, description, image, eventStatus, eventAttendanceMode, offers, organizer
Recipename, imagerecipeIngredient, recipeInstructions, author, datePublished, description, totalTime, aggregateRating
HowToname, step (each step needs text or a name)image, description, totalTime
SoftwareApplication (also WebApplication)name, plus one of offers, aggregateRating or reviewoperatingSystem, applicationCategory, description
Servicenameprovider, description, areaServed, serviceType
VideoObjectname, thumbnailUrl, uploadDatedescription, duration, contentUrl, embedUrl
JobPostingtitle, description, datePosted, hiringOrganization, jobLocationvalidThrough, baseSalary, employmentType
Coursename, descriptionprovider

These lists are this tool's checklists, based on the fields that matter for common rich results. Google's requirements vary by feature and change, so confirm them in Google's structured data gallery before you rely on a result.

Values

JSON-LD validator: the value rules it checks

A field can be present and still be wrong. This validator checks the format of values, not just whether a field exists:

ValueFlaggedUse instead
URLwidget.jpghttps://example.com/widget.jpg
Date2026/10/012026-10-01 or 2026-10-01T09:00:00+05:30
Price"$19.99" or "1,499"19.99 or 1499
Currencyusd or RsUSD or INR
Rating9 on a 1 to 5 scale4.5, within bestRating and worstRating
Review or rating count0A whole number of 1 or more, or leave the field out
Position in a list0 or 1.51, 2, 3
AvailabilityInStock (a warning, with an auto-fix)https://schema.org/InStock
Duration30 minutesPT30M
Latitude and longitudeOut of range numbers-90 to 90 and -180 to 180

It also warns about headlines over 110 characters, publish or modified dates in the future, and phone numbers that look too short.

Fixes

Common schema markup errors and how to fix them

1. Trailing comma or curly quotes

A comma after the last item, or quotes copied from a word processor, makes the whole block invalid JSON. The tool repairs these to be able to check the rest, then tells you to fix the original.

Wrong:  { "@type": "Product", "name": "Widget", }
Right:  { "@type": "Product", "name": "Widget" }

2. Price outside the offers object

The validator checks exact property paths. A price placed directly on a Product does not count as an offer, so the report says the Product needs at least one of offers, review or aggregateRating.

Wrong:  { "@type": "Product", "name": "Widget", "price": 19.99 }
Right:  { "@type": "Product", "name": "Widget",
          "offers": { "@type": "Offer", "price": 19.99, "priceCurrency": "USD" } }

3. A price with a currency symbol

Wrong:  "price": "$19.99"
Right:  "price": 19.99, "priceCurrency": "USD"

4. An http context or a missing @context

Wrong:  "@context": "http://schema.org"
Right:  "@context": "https://schema.org"

5. A date in the wrong format

Wrong:  "datePublished": "2026/10/01"
Right:  "datePublished": "2026-10-01"

6. A rating outside its scale, or a review count of 0

Wrong:  "aggregateRating": { "ratingValue": 9, "reviewCount": 0 }
Right:  "aggregateRating": { "ratingValue": 4.6, "reviewCount": 128 }

Use real ratings from reviews visitors can see. If there are no reviews, remove the whole rating block.

7. A nested item with no @type

Nested items such as an offer, address, rating or step should say what they are. The tool names the type it expects, and its corrected code adds it for you.

To use the auto-fix, paste your code, read Corrected code, then copy it and fill in any real data it could not invent. Only safe fixes are applied automatically: straight quotes, comments, trailing commas, single quotes, https context, date and price format, uppercase currency and full schema.org URLs for enum values.

Score

How the schema health score is calculated

The score starts at 100. Each error takes off 12 points and each warning takes off 3, and the score never goes below 0. So one error and two warnings gives 100 - 12 - 6 = 82. The number is a quick summary of the report, not a Google score, and it says nothing about whether a page will get a rich result.

@graph

@graph and @id: how connected schema is checked

Many sites and SEO plugins output one @graph that holds several items, such as a WebSite, an Organization and an Article, and let them refer to each other by @id. The validator checks each item in the graph on its own, then checks the links between them:

  • Each @id should be defined once. A duplicated @id is an error.
  • A reference such as { "@id": "https://example.com/#organization" } should point to an item that is defined. When it does not, you get a warning on pasted code and an error on a live page.
  • Repeated Organization, WebSite or FAQPage items get a warning, because a plugin and a hand-written block often both output the same one.

When you paste only part of a page, a reference can look undefined because its target sits elsewhere on the page. That is why this check is a warning for pasted code.

How to use it

How to validate JSON-LD

  1. Paste your code, or switch to Check a live URL and enter a page address.
  2. Press Validate. Start with the Fix first list.
  3. Open each item to see what passes and what is missing.
  4. Copy the corrected code if fixes were applied, then add the real data for missing fields.
  5. Confirm the live page in the Google Rich Results Test.
Eligibility

Valid schema but no rich result: why

Valid markup makes a page eligible. It does not make Google show a rich result. Google decides based on the page, the query and its own policies. Two types in this tool carry a note for that reason:

Other common reasons a valid page shows no rich result: the marked-up text is not visible on the page, the page has a quality or policy problem, the markup describes the wrong thing, or Google has not recrawled the page yet. In URL mode this tool warns when marked-up text, such as a headline or product name, is not found in the page's visible text.

Google's guide to generative AI features also says structured data isn't required for generative AI search and that there is no special schema.org markup to add. Valid markup is still worth having for the rich results Google supports and for clarity.

Compared

This validator vs the schema.org validator and Google's Rich Results Test

These tools answer different questions, so use more than one.

ToolWhat it tells youUse it for
This validatorRequired and recommended fields, value formats, @graph links, and corrected code, for common rich-result types.A fast first pass while you build or fix markup.
Schema Markup Validator (validator.schema.org)Whether the markup is valid against the full schema.org vocabulary.Checking types and properties, including ones Google does not use.
Google Rich Results TestWhether a page is eligible for Google's rich results.The final check before you rely on a rich result.

A good workflow is to paste your code here, fix what it finds, confirm the vocabulary in the schema.org validator, and then test the live page in the Rich Results Test. To build the code first, use the Schema Markup Generator.

Limits

What this schema validator does not do

  • It reads JSON-LD and microdata. It does not check RDFa and tells you when it finds it.
  • It does not confirm eligibility for a Google rich result. Use the Rich Results Test for that.
  • In URL mode it reads the HTML your server sends. Schema added by JavaScript after the page loads is not seen, and the report says so when it finds none.
  • Only the types in the table above have checklists. Other types are parsed and shown without checks.
  • It checks one page or one pasted block at a time.
  • Pasted code is checked in your browser and is not sent anywhere. In URL mode our server fetches the public page for you and does not keep it.
  • It cannot tell whether your markup is true. Every value must match what visitors can see.
FAQ

Schema validator FAQ

What is a schema markup validator?

A schema markup validator reads your JSON-LD structured data and reports missing required fields, wrong values and structural mistakes, so you can fix them before search engines read the page.

How do I validate JSON-LD schema markup?

Paste your JSON-LD, or a full page source, into the box, or enter a live page URL, and press Validate. The tool parses each block, checks required and recommended fields for the schema type, checks values such as dates and prices, and lists every error and warning.

Does this replace the Google Rich Results Test?

No. Think of it as a fast first pass. This tool checks structure, required fields and values instantly in your browser. In URL mode our server fetches the page for you. The Google Rich Results Test is still the final word on whether a live page qualifies for a rich result.

Why does it say a field is missing when I can see it in my code?

The most common cause is nesting, for example putting price directly on a Product instead of inside its offers object. The validator checks exact schema.org property paths, so a value in the wrong place reads as missing.

Can I validate more than one schema at once?

Yes. Paste a full page source or several script tags and every JSON-LD block is checked. If your JSON-LD uses an @graph array with several types, each item is checked separately, and references between items are checked too.

Which schema types does the validator support?

It has built-in checklists for Article, NewsArticle, BlogPosting, Product, Offer, LocalBusiness, Organization, FAQPage, Review, BreadcrumbList, Event, Recipe, HowTo, Person, WebSite, WebApplication, SoftwareApplication, Service, VideoObject, JobPosting and Course. Other types are still parsed and shown, without a checklist.

What is the difference between this validator and the Schema.org validator?

The Schema.org validator checks your markup against the full schema.org vocabulary. This tool focuses on the fields that matter for common rich results, plus value checks such as dates, prices and headline length, and it runs instantly in your browser.

Why is my schema not showing rich results even though it validates?

Valid markup only makes a page eligible. Google decides whether to show a rich result based on page quality, search intent and its own policies, and it has restricted some types such as FAQ.

What are the most common schema markup errors?

The most common errors are invalid JSON such as a trailing comma, a missing type, a wrong or missing context, required fields left empty, and values in the wrong place such as price outside the offers object.

Is my schema data sent anywhere?

Not when you paste code. Everything is parsed and checked in your browser with plain JavaScript, and nothing you paste is sent to a server or stored. If you use Check a live URL, our server fetches that public page for you and does not keep it.

What is the difference between a schema checker and a schema validator?

None in practice. People use schema checker, schema validator, structured data tester and JSON-LD validator for tools that test structured data. This page is all four.

How do I check the schema on my page?

Switch to Check a live URL and enter the page address, or view the page source and paste all of it into the box. The report lists every JSON-LD and microdata block found, with errors, warnings and a score.

How do I validate schema before I publish?

Paste the JSON-LD code into the box. You do not need a live page. Fix the errors, then publish and check the live URL as well.

What does the corrected code do?

It applies safe fixes automatically, such as straight quotes, removing trailing commas, https in the context, ISO dates and plain prices. It cannot add real data for missing fields, so you still need to fill those in.

What does "referenced but not defined" mean?

An item points to another by @id, such as a publisher, but no item with that @id was found. It may be defined in another block on the page or may be missing. Define it once and keep the same @id everywhere.

Does it check microdata and RDFa?

It checks JSON-LD and microdata. It shows microdata converted to JSON-LD so you can read it. It does not check RDFa.

Can I check many pages at once?

No. It checks one page or pasted block at a time. For a site-wide view, use the Technical SEO Auditor, which reports the schema types found on each page.

Why does my WordPress site show two Organization items?

An SEO plugin and a manually added block, or two plugins, usually both output one. Keep one and remove the other, or merge them using a shared @id.

What score should I aim for?

100 means no errors or warnings, but a lower score is fine if the remaining warnings are for recommended fields you cannot honestly fill. Fix every error first.

Should I mark up content that is not on the page?

No. Only mark up what visitors can see. Google can ignore markup that does not match the page, and in URL mode this tool warns when it cannot find the marked-up text.

Does structured data help with AI search?

Google's guide to generative AI features says structured data isn't required for generative AI search and that there is no special schema.org markup to add. It still matters for the rich results Google supports. Other AI tools may treat it differently, so do not rely on it for citations.

Want your schema audited across the whole site?

I check structured data on every template, fix what breaks, and watch it stays valid.