wprichsnippets
Guide · WordPress · Testing and auditsCERT No. WP 0004

Testing structured data the right way

Schema type
Product Review Article
Checked against
Google Search Central and Search Console Help documentation, read November 2026
Author
The wprichsnippets.com editors
Published
Updated
Direct answerField 01

Use the Rich Results Test to check whether Google can read a page's markup and which rich results it is eligible for. Use the Schema Markup Validator to check any schema.org markup against the vocabulary. Use Search Console reports to watch markup across the whole site over time. Check the raw HTML for crawlers that skip JavaScript.

58 wordsUpdated November 8, 2026
FeatureFig. 01
A blank card under a magnifying lens beside a matching card on a small scale
Four checks, four different questions: what is in the HTML, what Google can use, what is valid schema.org, and what stays valid over time.

01Which tool should you use to test structured data?

Testing structured data means answering three different questions, and each has its own tool. The Rich Results Test is Google's tool for checking whether a page's structured data can produce Google rich results. The Schema Markup Validator is the schema.org community's tool for checking any markup against the schema.org vocabulary. Search Console's rich result reports show what Google found across your whole site after crawling it.

Most confusion comes from using one tool to answer another tool's question. A page can pass the validator and still be ineligible for any rich result. It can pass the Rich Results Test today and drop out of a Search Console report next month after a template change. And neither tool tells you what a crawler that does not run JavaScript receives.

The sections below take each tool in turn, explain how to read errors and warnings, then cover that fourth check: the raw HTML response. A workflow table at the end puts the steps in order for a WordPress site.

02What does the Rich Results Test check?

The Rich Results Test fetches a URL, or accepts a pasted code snippet, and reports which rich result types it found, with errors and suggestions for each item. According to Google's Rich Results Test help page, it supports JSON-LD, RDFa and microdata, fetches pages as Google-InspectionTool rather than with your credentials, and uses a smartphone user agent by default.

Three details from that page change how you should use it on WordPress:

  • It reads the rendered page. The code explorer uses the rendered source code, so JSON-LD injected by JavaScript is visible to it. That reflects how Google processes the page, and can mislead you about other crawlers, as the AI crawler section explains.
  • It needs public access. Page resources behind a firewall or a password are not available to the test. A staging site behind basic authentication cannot be tested by URL; paste the code instead, or expose the page temporarily through a tunnel.
  • It forgives comments. The tool ignores comments inside JSON-LD blocks, but the help page notes that comments are not supported by the JSON-LD standard and may cause errors in actual use. Remove them before publishing.

The test also respects crawl rules. If a robots.txt rule or a noindex directive prevents Google from crawling the page, the help page says the page cannot be tested, and the Crawling section of the result shows why. On WordPress that usually points to a staging copy with search engines discouraged, or a security layer that blocks unfamiliar user agents.

Use URL mode for anything live. Google's guide to generating structured data with JavaScript recommends the URL input over the code input, because the code input has JavaScript limitations such as CORS restrictions. Code mode is still useful for drafting a block before it ships, or for testing a template change on a page you cannot expose.

If some page resources fail to load, the help page warns that results can vary from one run to the next. Look for a page loading issues warning before you assume your markup changed between two tests.

One more limit: the Rich Results Test reports rich result types, so it only speaks to the types Google supports. A valid schema.org node that feeds no rich result, such as a Person describing an author, gets no verdict of its own. For those, you need the validator.

03What replaced the Structured Data Testing Tool?

The Schema Markup Validator replaced Google's old Structured Data Testing Tool, which many WordPress tutorials still link to. In a December 2020 Search Central post, Google said it would move the tool to a new domain serving the schema.org community and that it would no longer check for Google rich result types.

The main purpose of the tool will be to check syntax and compliance of markup with schema.org standards.

Google Search Central Blog, An update on the Structured Data Testing Tool · developers.google.com · read on

The post was updated twice. In May 2021 schema.org announced the new home, named the Schema Markup Validator, and in August 2021 Google began redirecting the old testing tool to a landing page that helps you choose the right tool. The validator lives at validator.schema.org.

Use the validator for what the Rich Results Test leaves out. The same post explains that it suits types Google does not consume, giving schema.org's ExercisePlan as an example, which makes it the better tool for checking an entity graph: Organization, Person, WebSite and how they connect through @id. Those nodes matter beyond Google's rich results, because they are how a page states who publishes it and who wrote it.

The validator does not tell you whether Google will show anything. A page that is perfectly valid schema.org can still miss a property Google requires for a rich result, so run both tools on any page where a rich result is the goal.

04How do Search Console enhancement reports work?

Search Console's rich result reports, listed under Enhancements, or under Shopping for product snippets and merchant listings, show the structured data Google found on your property after crawling. Google's rich result report overview lists one report per supported type, including Breadcrumbs, Product snippets, Merchant listings, Review snippets, Recipes and Videos.

Two caveats from that page are worth memorising. First, a report appears only when Google finds valid markup of a supported rich result type, so no report does not mean no markup. Second, the reports show a sample of detected items rather than a complete list, and their numbers count items, not pages.

Each report splits items into valid and invalid. An invalid item has at least one critical issue that prevents it from appearing as a rich result. A table of non-critical issues, labelled Improve item appearance, lists problems on items that are still valid. After you fix a template, start validation from the issue's page so Google rechecks the affected URLs, and use the URL Inspection tool to check a URL that is missing from the report.

These reports are where template regressions surface. A theme update that drops a property shows up as a rising invalid count across hundreds of items, which no amount of single-page testing would reveal in time.

05What is the difference between errors and warnings?

An error, called a critical issue in Search Console, makes an item invalid: it cannot appear as that rich result until it is fixed. A warning, a non-critical issue, leaves the item valid but flags a missing recommended property or a value that could be better. The Rich Results Test uses the same split, reporting items as valid, valid with warnings, or invalid.

Common Rich Results Test results and what to do
ResultWhat it meansWhat to do
Valid items detectedEligible for the listed rich result typesNothing; eligibility is not a guarantee
Valid items with warningsEligible, with recommended properties missingAdd recommended properties you can fill honestly
Invalid items detectedA required property is missing or has the wrong typeFix the template, then retest
Structured data with syntax errors detectedThe JSON could not be parsedCheck commas, braces, quotes and escaping
No items detectedNo supported markup was foundCheck the raw HTML, then the Schema Markup Validator
URL cannot be crawledGoogle could not fetch the pageCheck robots.txt, noindex and access control

Do not chase every warning. A warning for a missing recommended property is a suggestion, and filling it with invented data creates a bigger problem than the warning it removes. Fill a recommended property only when the page genuinely shows that information.

Syntax errors are different and always worth fixing. The help page lists the parsing errors behind them, such as a missing comma or brace, an invalid number, or a bad escape sequence in a string. On WordPress, one common source is JSON built by joining strings in PHP; encoding a PHP array with wp_json_encode() avoids the whole class of error.

06What do AI crawlers see when they fetch your page?

Google renders pages. Its JavaScript structured data guide says Google Search can understand and process structured data that is available in the DOM when it renders the page, which is why the Rich Results Test shows JSON-LD added by Google Tag Manager or a front-end script.

Other crawlers do not all document the same behaviour. The crawlers that fetch pages for AI answer engines, identified by user agents such as OAI-SearchBot, GPTBot and PerplexityBot, are described in their operators' own documentation, and where JavaScript rendering is not documented the cautious assumption is that only the raw HTML response is read. Our guide to how ChatGPT and Perplexity read structured data covers each crawler in more detail.

The test is simple: fetch the page without a browser and look for the script block.

  1. Run curl -s https://example.com/your-post/ | grep -c 'application/ld+json' to count the JSON-LD blocks in the raw HTML.
  2. Compare the count with the items the Rich Results Test found. If the test finds markup that curl does not, that markup is injected by JavaScript.
  3. Repeat with a crawler user agent, for example curl -s -A 'PerplexityBot' https://example.com/your-post/, to catch caching or security layers that serve bots a different page.
  4. Read the block itself, not only the count, and check that its values match the visible page.

On WordPress the fix for injected markup is to move JSON-LD generation from a tag manager or front-end script into PHP. Markup printed through a WordPress hook is part of the HTML response that every crawler receives; markup added in the browser exists only for crawlers that render.

07A testing workflow for WordPress

Put the tools in order and most problems surface before they reach Search Console.

Structured data testing workflow for a WordPress site
StepToolQuestion it answersWhen
1View source or curlIs the markup in the HTML response, and printed once?Every template change
2Rich Results Test, URL modeCan Google crawl the page, and which rich results is it eligible for?Before and after publishing
3Schema Markup ValidatorIs every schema.org type and property valid, including entities Google ignores?When adding types or plugins
4Search Console rich result reportsDo items stay valid across the site over time?Weekly, and after releases
5URL Inspection toolWhat did Google detect on the indexed version of this URL?When a URL is missing from a report

Test templates, not posts. On WordPress one template produces hundreds of pages, so pick one URL per template, such as a post, a page, a product and a category archive, and run the full workflow on each after any theme, plugin or WordPress update. Keep a dated note of each run: the URL, the template, the tool and the result. When a report changes weeks later, that log tells you whether the markup changed or Google's reading of it did.

When something tests clean but still does not show, move to the checklist for rich snippets that stop showing. When several plugins print markup, run the schema plugin audit before you fix anything, so you know which block each tool is reading.

Testing is one part of keeping structured data healthy on a WordPress site; the rest of the how-tos, from hand-written JSON-LD to WooCommerce, are in the WordPress section.

08Questions

Q1Is the Structured Data Testing Tool still available?

Not as a Google tool. Its schema.org checks moved to the Schema Markup Validator at validator.schema.org in 2021, and Google redirects the old address to a page that helps you choose between the validator and the Rich Results Test, depending on what you need to check.

Q2Why do the Rich Results Test and the Schema Markup Validator disagree?

They answer different questions. The Rich Results Test reports only the types Google supports for rich results and checks Google's required properties. The validator checks all schema.org markup against the vocabulary, so it shows more types and different warnings. Use both.

Q3Can I test a staging site?

Only if the test can reach it. The Rich Results Test fetches pages as an anonymous user, so pages behind a password or firewall fail. Paste the page's code into the code tab instead, or expose the page temporarily, and retest the live URL after launch.

Q4Why is a page missing from my Search Console rich result report?

The reports show a sample of items, not every page, and a report exists only once Google finds valid markup of a supported type. Use the URL Inspection tool on the missing URL to see whether Google detected structured data on its indexed version.

09Sources

  1. Rich Results TestSearch Console Help
  2. Rich result report overviewSearch Console Help