Structured data
Schema markup validator
Paste a URL, your HTML or a JSON-LD block to validate your schema markup for free. The validator extracts every JSON-LD block, checks that it parses, checks the required fields for common types, and explains each error and warning that can block Google rich results.
How it works
Paste, check, then confirm with Google
01
Paste a URL, HTML or JSON-LD
A URL is fetched for you with a ten second timeout; HTML or JSON-LD you paste is read as it is. Nothing you paste is stored.
02
Every block is checked
Each JSON-LD block, and each node inside a @graph, is parsed and checked for @context and @type, and for required fields on Organization, Article, Product, LocalBusiness, BreadcrumbList, SoftwareApplication and more. Microdata is detected and its type shown.
03
Fix, then confirm with Google
Fix the errors first, then the warnings that matter for your page. Then run Google's Rich Results Test, the authority on which rich results Google can show for the page.
Why it matters
What the validator checks, and how to read the results
Structured data tells search engines what a page is about in a standard format. Google says it uses structured data to understand a page and that it can enable rich results, such as review stars, prices and breadcrumbs. Broken markup fails quietly: malformed JSON, a missing required field or the wrong @type, and the page simply doesn’t qualify. The validator lists every problem it finds as an error or a warning.
Errors and warnings by schema type
| Type | Error when | Warning when |
|---|---|---|
| Every JSON-LD block | JSON that doesn't parse; a node with no @type | No @context, or a @context other than schema.org; a type outside the checked set below |
| Organization | No name | No url or logo |
| Article, BlogPosting, NewsArticle | No headline, author or datePublished | No image or publisher; a headline over 110 characters |
| Product | No name or offers; an offer with no price (or lowPrice) | No image; an offer with no priceCurrency |
| LocalBusiness, Restaurant, Store, Dentist, MedicalBusiness | No name or address | No telephone, opening hours or url |
| FAQPage | No mainEntity; a Question with no name or acceptedAnswer; an Answer with no text | None |
| BreadcrumbList | No itemListElement; a ListItem with no position, or with neither name nor item | None |
| SoftwareApplication, WebApplication, MobileApplication | No name or applicationCategory | No operatingSystem; neither offers nor aggregateRating |
| Microdata | None | Always: the item and its type are listed, and the full check is left to Google's Rich Results Test |
Any other schema.org type, such as Event, Recipe or Review, still gets the JSON, @context and @type checks. The validator just doesn’t know its required fields, and says so in a warning.
Errors vs warnings
An error means the item is broken or missing a field it needs. Fix every error first: Google says a page must include all the required properties to be eligible for a rich result, and a block that doesn’t parse is ignored entirely.
A warningmeans the markup is valid but a recommended field is missing, such as a product’s currency or a business’s phone number. The item can still qualify. Add a recommended field when you have accurate data for it; Google says fewer complete and accurate properties beat many badly formed ones. Google’s Rich Results Test uses the same split and reports results such as “valid items with warnings”.
Rich result eligibility: what valid markup does and doesn’t get you
Valid markup makes a page eligible. It never guarantees a rich result. Google’s structured data guidelines say it does not guarantee your structured data will show, even when the Rich Results Test passes. The same guidelines set three rules that no validator can check for you:
- Mark up only what readers can see on the page. Hidden content in markup breaks the guidelines.
- Keep it accurate and current. Fake reviews and out of date events can lose eligibility.
- A structured data manual action removes rich result eligibility for the page; Google says it doesn’t affect how the page ranks in web search.
Rich result types also change. Google stopped showing FAQ rich results from May 7, 2026 and removed their documentation, so a valid FAQPage no longer earns the expandable questions in search. The validator still checks FAQPage markup, because the markup still describes the page. The Rich Results Test help page lists the types Google supports today, including Article, Breadcrumb, Local business, Organization, Product snippet, Review snippet, Software app, Event, Recipe and Video.
JSON-LD vs microdata vs RDFa
Google supports all three formats and says they are equally fine when valid, and recommends JSON-LD as the easiest to implement and maintain.
- JSON-LD sits in a
<script type="application/ld+json">tag, apart from the visible HTML, so nested items like an address inside a business are easy to write. Google can also read JSON-LD that JavaScript adds after the page loads. This validator checks JSON-LD in full. - Microdataadds itemscope, itemtype and itemprop attributes to the visible HTML. The validator finds each item and its type; use Google’s test for the full check.
- RDFaalso uses HTML attributes. This validator doesn’t read it; Google’s Rich Results Test and the Schema.org validator both do.
If you are choosing now, use JSON-LD. It lives in one block, so a redesign that rewrites the visible HTML leaves it intact.
Common schema errors and how to fix them
| Problem | Usual cause | Fix |
|---|---|---|
| The block doesn't parse | A trailing comma, curly quotes pasted from a word processor, an unescaped quote inside a string, or a // comment | Use straight double quotes, escape quotes inside text as \", delete trailing commas and comments, then paste the block again. |
| Missing @type | The node describes something but never says what it is, often inside @graph | Add "@type" to every node, for example "LocalBusiness" or a more specific subtype such as "Dentist". |
| @context warning | No @context at the root, or a misspelled or old vocabulary URL | Set "@context": "https://schema.org" on the root object. |
| LocalBusiness missing address | The address is in the page footer but not in the markup | Add address as a PostalAddress with streetAddress, addressLocality, addressRegion, postalCode and addressCountry, matching your Google Business Profile. |
| Product offer missing price | The template outputs offers before the price loads, or for a variant with no price | Output price and priceCurrency inside each Offer, or lowPrice and highPrice inside an AggregateOffer. |
| BreadcrumbList item missing position | A CMS plugin that builds the trail without numbering it | Give each ListItem a position starting at 1, plus a name and an item URL. |
| Nothing found on a URL that has schema | The markup is added by JavaScript after the page loads, and the fetch doesn't run JavaScript | Open the page, copy the rendered HTML from your browser's developer tools and paste it in. |
Google’s Rich Results Test ignores comments inside JSON-LD, but the JSON-LD standard doesn’t allow them, so a block with comments can pass Google’s test and still fail elsewhere. Remove them before you publish.
Rich Results Test vs Schema.org validator vs this tool
The three tools answer different questions, and most teams use more than one.
| Tool | What it checks | Use it for |
|---|---|---|
| Google Rich Results Test | The rich result types Google supports, in JSON-LD, RDFa and microdata. Crawls a public URL as Google’s smartphone or desktop agent, checks robots.txt allows it, and can preview the result. | The final word on whether Google can show a rich result for a page. |
| Schema.org Markup Validator | Any schema.org type in JSON-LD, RDFa and microdata, including data added by JavaScript. It is based on Google’s old Structured Data Testing Tool and checks syntax and vocabulary, without Google’s feature requirements. | Types Google has no rich result for, and checking the full extracted graph. |
| Rank.ai schema markup validator | Every JSON-LD block, with required and recommended field checks for common types and a plain explanation of each error. Accepts a URL, raw HTML or a JSON-LD snippet, and runs in your browser. | A fast first pass while you write or fix markup, before the Google test. |
After launch, Google suggests watching the rich result status reports in Search Console, which catch markup that breaks later because of a template or serving change.
Schema markup, local search and AI answers
For a local business, LocalBusiness markup should repeat the name, address and phone on your Google Business Profile exactly; the NAP consistency guide covers why, and the location pages guide shows where the markup goes on each city page. Clinics have extra types to choose from, covered in schema markup for healthcare. Schema is one line of a full local SEO audit.
For AI answers, Google says its AI features need no special schema.org markup, only structured data that matches the visible text on the page. The Google search statistics page tracks how often AI Overviews appear and what they do to clicks. Check the rest of the page with the title tag checker, the robots.txt tester and the AI crawler checker, or work through the whole technical SEO audit checklist.
Free tools
More free tools
Title tag checker
Preview your title as a Google result and an AI citation, with length and estimated pixel width.
Robots.txt tester
Test any URL path against your robots.txt and see which rule allows or blocks each crawler.
AI crawler checker
See which of 14 AI crawlers and tokens your robots.txt blocks, and which of them feed AI search.
llms.txt generator
Draft an llms.txt file from your sitemap: a curated map of your site for AI tools that read one.
Meta description generator
Get three meta descriptions of up to 160 characters, each with a character count.
AI visibility checker
Ask ChatGPT, Claude and Gemini one question and see whether each answer names your domain or cites your site.
All free tools
AI visibility checker, Google Business Profile audit, Maps rank checker, schema validator and more.
Frequently asked
What is a schema markup validator?
What schema types do you validate?
What is the difference between an error and a warning?
Is this the same as Google's Rich Results Test?
Does valid schema guarantee rich results?
Do FAQ rich results still show in Google?
Should I use JSON-LD or microdata?
Why didn't anything show up when I pasted my URL?
Why does my microdata only get a warning?
Do you store anything I paste?
Does schema markup help with AI answers?
See if AI names you when customers ask who’s best.
Enter your website. In about two minutes, Rank.ai asks ChatGPT, Claude and Gemini 12 questions your customers ask and grades how often they name you.
- Your grade out of 100How often AI names you, cites your site, and how high it ranks you.
- Who gets namedEvery competitor in the answers, most named first.
- The pages AI readsThe sources behind each answer.
- Three fixesWhat to fix first, with a brief for the first page.