Home / Knowledge Base / Tools and integrations / How to Validate Schema Markup: Validators, Steps and Common Errors

How to Validate Schema Markup: Validators, Steps and Common Errors

Tools and integrations 10 min read Updated 13.10.2026
Check structured data twice: the Schema Markup Validator (validator.schema.org) tells you whether it is correct schema.org, and Google’s Rich Results Test tells you whether it qualifies for a rich result. Both replaced the retired Structured Data Testing Tool.

Validating schema markup means answering two separate questions. First: is the structured data correct schema.org that a machine can read — valid JSON, real types and properties, values in the right format? Second: does it meet Google’s requirements for a specific rich result, such as a product snippet or review stars? The Schema Markup Validator at validator.schema.org answers the first question, Google’s Rich Results Test answers the second, and our schema validator checks syntax, the schema.org vocabulary and Google’s required fields in one report. After you publish, the rich result reports in Search Console show what Google actually found across the whole site.

Where did the Structured Data Testing Tool go?
Google retired its old Structured Data Testing Tool. The Google-specific checks moved to the Rich Results Test, and the general validator moved to schema.org as the Schema Markup Validator. If an old tutorial sends you to the Testing Tool, use one of these two instead.

Which validator to use now

ToolWhat it checksJavaScriptUse it for
Rich Results Test (Google)Only the structured data types that can produce a Google rich result, with Google’s required and recommended fields. Accepts a URL or code, JSON-LD, Microdata and RDFa. The default crawler is smartphone, desktop is optional.Yes — it looks at the rendered page“Will Google accept this for a rich result?”
Schema Markup Validator (schema.org)Any schema.org type and property in JSON-LD, Microdata or RDFa. No Google-specific rules.Not documented — paste the code if in doubtTypes Google does not use, general correctness
PromoPilot schema validatorJSON syntax with line and column, schema.org vocabulary, Google’s required and recommended fields for 11 families of types, @graph and @id links, duplicate entitiesNo — reads the HTML the server sendsFinding why a block breaks and getting a fixed copy
Search Console rich result reportsWhat Googlebot found on your site: valid and invalid items, issues over timeYes, as part of indexingMonitoring after release

In practice you will use two of them: a validator while writing the markup, and the Rich Results Test or Search Console for the Google side.

How to validate schema markup step by step

  1. Find out what is on the page. Open the page source (Ctrl+U or Cmd+Option+U) and search for application/ld+json (JSON-LD), itemscope (Microdata) and typeof (RDFa). If a plugin claims to output markup but the source has none, it is probably added by JavaScript — see the section on that below.
  2. Fix syntax before anything else. One trailing comma or one curly quote makes the whole JSON-LD block invalid, and search engines skip all of it. A validator shows the line and column of the error.
  3. Check the vocabulary. Types start with a capital letter (Product), properties are camelCase (datePublished), and the property must belong to the type. Enumerations are full URLs (https://schema.org/InStock), dates and durations follow ISO 8601.
  4. Check Google’s requirements for the feature you want. Run the URL through the Rich Results Test. An error means the item is not eligible for that rich result. A warning means a recommended field is missing: the item is still eligible, just with less information.
  5. Compare the markup with what visitors see. Price, rating, author and dates in the JSON-LD must match the visible page. Google’s policies forbid marking up content that is not visible to readers.
  6. Publish and monitor. Use URL Inspection in Search Console to check the live URL and request indexing, then watch the rich result reports for that type over the following weeks.

Example: a broken Product block and the fixed version

This block looks harmless but has four problems:

{
  "@context": "https://schema.org",
  "@type": "product",
  "name": "Trail running shoes",
  "offers": {
    "@type": "Offer",
    "price": "1 299,00 UAH",
    "availability": "in stock",
  }
}
  • the comma after the last property makes the JSON invalid, so nothing else in the block is read at all;
  • product in lower case is not a schema.org type — names are case-sensitive;
  • the price contains a space, a comma and a currency; the price is a plain number and the currency goes in priceCurrency;
  • in stock is free text, not a value of the ItemAvailability enumeration.

The corrected version:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Trail running shoes",
  "image": "https://example.com/img/shoes.jpg",
  "offers": {
    "@type": "Offer",
    "price": "1299.00",
    "priceCurrency": "UAH",
    "availability": "https://schema.org/InStock"
  }
}

For a Google product snippet, a Product needs a name and at least one of offers, review or aggregateRating; inside an Offer, price is required.

Common errors and how to fix them

What you seeFix
Parsing error / unexpected tokenLook for a trailing comma before } or ], a missing comma between properties, or an unescaped quote inside a value.
Curly quotes “ ” in the codeThe code was pasted through Word or a visual editor. Paste JSON-LD in the HTML/code mode of your CMS.
Comments // inside JSON-LDRemove them. Google’s help says the Rich Results Test ignores comments, but the JSON-LD standard does not allow them, so other parsers may fail.
Unknown type or propertyCheck spelling and case: datepublished → datePublished, localbusiness → LocalBusiness.
Property not valid for this typeMove it to the right object, for example price belongs in an Offer, not directly in a Product.
Invalid date13.10.2026 → 2026-10-13 or 2026-10-13T09:00:00+03:00.
Invalid duration"cookTime": "30 min" → "PT30M"; an hour and a half is "PT1H30M".
Two different Organization entitiesOften the SEO plugin and the theme both output one. Keep one, give it an @id and refer to it from other blocks.
data-vocabulary.org typesGoogle no longer supports this old vocabulary. Rewrite the markup with schema.org.

Valid markup does not guarantee a rich result

Google states plainly in its structured data guidelines that it does not guarantee rich results, even when the markup passes the Rich Results Test. Correct markup makes a page eligible; the algorithm decides whether to show the feature for a given query and user. Common reasons a valid item still shows nothing:

  • The feature is no longer shown. See the list below.
  • Policy problems. Markup for content that is not on the page, misleading or outdated data, or fake reviews. A manual action for structured data removes eligibility for rich results; according to Google, it does not affect ranking in web search.
  • Self-serving reviews. Review stars for LocalBusiness and Organization are shown only for sites that review other businesses. A company that marks up ratings of itself will not get stars.
  • The page is not indexed yet, or Google has not recrawled it since you changed the markup.

What Google stopped showing

  • FAQ rich results — limited to authoritative government and health sites from September 2023, not shown at all since 7 May 2026; the documentation was removed in June 2026.
  • How-to — removed in September 2023 on desktop and mobile.
  • Sitelinks search box (WebSite + SearchAction) — retired in November 2024.
  • Breadcrumbs — no longer shown in mobile results since January 2025; still shown on desktop.
  • Course info, Estimated salary, Learning video, Special announcement, Vehicle listing — documentation removed in September 2025.

This markup is still valid schema.org and does not break anything; Google simply does not turn it into a visual feature. Whether to keep it is a question of maintenance effort, not of risk.

JSON-LD added by JavaScript or Google Tag Manager

Many sites inject structured data with a script or a Custom HTML tag in Google Tag Manager. Google’s guide on generating structured data with JavaScript confirms that Google Search can process markup that is in the DOM when it renders the page. Two consequences:

  • Tools that read only the raw HTML, including ours, will not see such markup. Test these pages with the Rich Results Test (it works with the rendered code) or with URL Inspection in Search Console. Another option: open the page in Chrome DevTools, copy the rendered <html> element (Elements → Copy → Copy outerHTML) and paste it into a validator.
  • For Product markup Google warns that dynamically generated markup can make Shopping crawls less frequent and less reliable. If price and availability change often, put the JSON-LD into the server-side HTML.

In GTM, build the markup from page variables rather than typing values into the tag, otherwise the markup drifts away from what visitors see.

Checking structured data in Search Console

The rich result reports are in the Enhancements section; product snippets and merchant listings are under Shopping. A few things to know when reading them:

  • A report appears only after Google finds valid markup of a supported type. No report for FAQ or How-to is expected.
  • The numbers count items, not pages: one page with three Event objects gives three items.
  • The report shows a sample, not every URL. For a specific page, use URL Inspection.
  • An item with a critical issue is invalid and cannot appear as a rich result; non-critical issues are warnings.
  • After fixing an issue, start validation from the issue details page; the report shows the validation status.

How to do it in PromoPilot

Enter a URL or paste code into the schema validator. It finds every JSON-LD, Microdata and RDFa item and checks it in three layers:

  1. Syntax: JSON errors with line and column, the reason in plain language, and safe automatic fixes (trailing commas, comments, curly quotes, line breaks inside values, several objects in a row) with a corrected block ready to copy.
  2. Vocabulary: types and properties against schema.org (currently release 30.1), with hints for typos and wrong case, superseded terms, enumeration values, ISO 8601 dates and durations.
  3. Google rules: required and recommended fields for articles, products, reviews, breadcrumbs, organizations, local businesses, events, recipes, videos, software apps and job postings.

It also assembles @graph, follows @id references and flags duplicate entities. Pasted code can be up to 512 KB; a fetched page is cached for 10 minutes. To create markup from scratch, use the schema generator (Article, Product, FAQ, Organization, LocalBusiness, Breadcrumbs) or the FAQ schema generator.

What our validator does not do

  • It does not run JavaScript, so markup added by GTM or a single-page app is invisible to it. It tells you when the page uses GTM or looks like an SPA.
  • It does not compare the markup with the visible text. A price in JSON-LD that differs from the page is a policy violation, but it cannot be caught automatically.
  • It cannot promise a rich result — nobody outside Google can.

Related reading

FAQ

Is Google’s Structured Data Testing Tool still available?
No. Google retired it. Google-specific checks are now in the Rich Results Test, and the general schema.org validator lives at validator.schema.org as the Schema Markup Validator.
What is the difference between the Rich Results Test and the Schema Markup Validator?
The Rich Results Test checks only the types that can produce Google rich results and applies Google’s required and recommended fields. The Schema Markup Validator checks any schema.org markup for correctness but knows nothing about Google’s rules.
My markup is valid, so why is there no rich result?
Valid markup makes a page eligible, but Google does not guarantee rich results. The feature may no longer be shown (FAQ, How-to), the markup may break Google’s policies, for example self-serving reviews or content not visible on the page, or the page has not been recrawled yet.
Should I delete FAQPage markup now that Google does not show FAQ rich results?
You do not have to. Google stopped showing FAQ rich results on 7 May 2026, but the markup remains valid schema.org and does not break anything. Keep it or remove it depending on how much effort it costs to maintain.
Why does a validator find no markup when Google does?
The markup is probably added by JavaScript or Google Tag Manager. Tools that read only the raw HTML do not see it. Use the Rich Results Test or URL Inspection, which work with the rendered page, or paste the rendered HTML from DevTools.
Does structured data improve rankings?
Google presents structured data as a way to help it understand a page and to make the page eligible for rich results. It does not promise higher rankings for having markup.
Was this article helpful?
Try it on your project Everything described in the article is available in the dashboard — the registration bonus is already in your balance.
Open dashboard