Schema Markup Validator
Find syntax errors, schema.org mistakes and missing Google properties in your markup.
Check structured data
Fetching the page from MySmartCoPilot’s server… slow sites can take up to a minute.
Result
This is a pre-check, not Google’s test. It compares your markup with Google’s documentation and with schema.org, and points at the exact line. Google’s own test decides what Google can read, and a rich result is never guaranteed.
Google rich results
What to fix
More problems were found than are listed. Fix the ones above and check again.
Items found
About the Schema Markup Validator
Enter a page address, or paste its HTML or a block of JSON-LD, and the validator finds the structured data in it — every <script type="application/ld+json"> block and any Microdata — and checks it in three layers. First the JSON: a syntax error is reported with its line and column and a copy of the line, the way a code editor would mark it. Then the schema.org layer: a missing or wrong @context, a type or property that does not exist (with “did you mean” for typos), a property used on a type it does not belong to, and values of the wrong kind, such as a date that is not ISO 8601, a relative URL, a price with a currency symbol in it, or an availability that is not one of schema.org’s values.
The third layer is a pre-check against Google’s documentation. For each feature Google Search documents — Article, Breadcrumb, Product and merchant listings, Event, Recipe, Job posting, Local business, Video, Review snippets, Q&A and more — it compares your markup with the properties Google says are required and recommended, and lists what is missing. It is a pre-check, not Google’s test: the result links to Google’s Rich Results Test, which decides what Google actually shows.
How to use it
- Enter the page address in Page URL, or switch to Paste code and paste the page’s HTML, or just the JSON-LD (text that starts with
{or[). Add the page address next to pasted code so relative@idvalues and links can be resolved. - Press Check markup. In URL mode MySmartCoPilot’s server fetches the page once; the checking runs in your browser, and pasted code never leaves it.
- Read the summary first: how many items were found, and how many errors, warnings and tips. The Google rich results table shows, for each feature, whether the required properties are there and which recommended ones are not.
- Work through What to fix, errors first. Each finding gives the block and line (and column, for JSON-LD), what is wrong, how to fix it and the documentation behind the rule. Use the filters to hide tips.
- Open Items found to see the data as the validator read it. When the markup is fixed, press Open the Rich Results Test to confirm with Google.
Examples
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Executive Anvil",
"image": "anvil.jpg",
"offers": {
"@type": "Offer",
"price": "$119.99",
"priceCurrency": "USD",
"availability": "in stock"
}
}Error: The price “$119.99” is not a plain number Warning: “image” is not a full URL (“anvil.jpg” is a relative address) Warning: “in stock” is not a value of “ItemAvailability” (Did you mean “InStock”?)
The price error matters most: Google reads the price as a number, so the currency belongs in priceCurrency. The other two are easy to miss because the markup is valid JSON.
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "ACME",
}Error: JSON syntax error: Trailing comma is not allowed before '}' Where: JSON-LD, line 5, column 1
Nothing in a block is read until its JSON is valid, which is why a syntax error is always listed first.
Common uses
- Checking JSON-LD before it goes live: paste the markup from a template, a plugin or a tag manager and fix it while it is cheap to fix.
- Finding out why a page gets no rich result: a missing required property, a value in the wrong format, or markup Google no longer shows.
- Reviewing what an SEO or theme plugin actually outputs: items are listed by type and position, with duplicates and look-alike contexts called out.
- Giving a developer an exact list of problems with line numbers, or downloading the findings as CSV to track them.
What is checked
- JSON syntax: strict JSON, with the position of the error, a copy of the line and hints for the usual causes (trailing commas, comments, curly quotes, HTML entities, a CDATA wrapper, a repeated property name).
- JSON-LD structure:
@contextpresent and pointing at schema.org,@typeon every item,@graphmembers, nested objects with a type, references by@id. - The schema.org vocabulary: types and properties that exist, properties used on the wrong type, superseded terms, and values that fit the property: URLs, numbers, dates and times, durations, booleans and the named values of enumerations such as availability.
- Google’s features: required properties (an item that lacks one is not eligible, per Google) and recommended ones, plus the rules Google states for values, such as a rating inside its scale, a price that is a number, a description of 50 to 5000 characters for a dataset, or a
priceValidUntilthat is not in the past. - The page: JSON-LD in a script of the wrong type,
itempropoutside anitemscope, old data-vocabulary.org markup, identical items repeated, an error status.
Why it is a pre-check
Google says that markup that passes its tests can still be left out of search results: a rich result is never guaranteed, and the content marked up has to be visible on the page and true to it. The Rich Results Test is the authority on what Google can read, and the URL Inspection tool in Search Console shows what Googlebot saw. This validator reads the same documentation, points at the exact line, and explains the fix — but it cannot see your page’s visible content, your robots rules or Google’s ranking decisions.
The vocabulary checks are a different test from Google’s: a property that schema.org does not define is a warning here because it is not valid schema.org, whether or not Google would have used it.
Features Google no longer shows
Google’s search gallery lists the features it supports now. Some markup types still exist in schema.org but no longer earn a rich result: FAQPage, HowTo, ClaimReview, SpecialAnnouncement, and the SearchAction behind the sitelinks search box. The validator does not call that markup wrong. It tells you, as a tip, that Google no longer shows a result for it, and links Google’s changelog.
Sources
The rules come from Google Search Central’s structured data documentation and the general structured data guidelines, feature by feature (each finding links its page); from the JSON-LD 1.1 specification; and from the schema.org vocabulary, used under its CC BY-SA 3.0 licence. Google’s Rich Results Test and the Schema Markup Validator are the tools to confirm a result.
Limitations
- The validator reads the HTML as the server sends it and never runs scripts. JSON-LD that a page adds with JavaScript is invisible to it, although Google can read it. To check that markup, copy the rendered HTML from your browser’s developer tools (Elements, Copy outerHTML) and paste it.
- JSON-LD and Microdata are read; RDFa is not. The page says when it seems to use RDFa.
- It cannot tell whether the marked-up content is visible on the page, original or accurate, which Google’s guidelines require, or whether a review or rating is genuine.
- Google’s documentation changes. The rules follow it, but a feature can change before this list does; the Rich Results Test is the final word. Only the properties the documentation marks as required or recommended for every item are listed; the ones it marks “if applicable” are left out.
- Codes are checked by shape, not against lists: a currency must be three letters, but “ABC” is not looked up in the ISO 4217 list; countries, languages and time zones are not checked.
- A site can answer MySmartCoPilot’s server differently from Googlebot or your browser, the server reads at most 2 MiB of a page, and pages that are not UTF-8 may show accented characters wrongly. Each visitor can run a limited number of fetches per hour. Pasted code has no limit.
Privacy
In Page URL mode the address is sent to MySmartCoPilot’s server, which fetches the page from the website. MySmartCoPilot does not store the address, the HTML or the result. For abuse prevention, the server log records only the host name, status code and time of each request, never the full URL or your IP address. In Paste code mode the markup stays in your browser.
Frequently asked questions
Is this the same as Google’s Rich Results Test?
No. The Rich Results Test is Google’s own tool and the authority on what Google can read and show. This validator is a pre-check that reads the same documentation, shows the exact line of each problem and also checks the markup against the whole schema.org vocabulary, which Google’s test does not. Use this one to find and fix problems, then confirm with Google’s.
What does “Unknown property” mean, and should I remove it?
schema.org has no property with that name. Most often it is a typo, a wrong capital letter (names are case-sensitive) or a property that belongs to a different type. Fix or remove it. If you add your own properties on purpose, put them in a separate vocabulary with its own prefix so that they are not mistaken for schema.org properties.
Why does it say Google no longer shows FAQPage?
Google removed the FAQ rich result from Search and withdrew its documentation. FAQPage is still valid schema.org and other consumers may read it, so it is a tip and not an error. Whether to keep the markup is your decision.
Does an error here mean my page will get no rich result?
A missing required property means the item is not eligible for that feature, according to Google. Warnings (missing recommended properties, values in the wrong format) do not block eligibility but can make the result worse or stop Google reading one value. Even a page with no findings is only eligible, never guaranteed.
Can I check markup that is not public yet?
Yes. Use Paste code and paste the HTML or the JSON-LD. Nothing is sent anywhere. Add the page’s future address in the optional box so relative references can be resolved.
JSON-LD or Microdata?
Google says all three formats it supports (JSON-LD, Microdata and RDFa) are fine when the markup is valid, and recommends JSON-LD because it sits apart from the visible text and is easier to maintain. Both are checked here the same way.