How do I test and validate my structured data?

Run one live URL for every template through Google's Rich Results Test and the Schema Markup Validator, and then compare every marked up value with what the page shows. Passing both tests is the minimum. The markup also has to describe the page a visitor sees, and Google says correct markup still does not guarantee a rich result.

By Margareta Petrovic, founder of Visibility Mesh. We checked every statement in this guide against its primary source on September 30, 2026.

Test one live URL for every template on the site, including the templates that never appear in a sales demo.

Both tools check whether the markup is well formed and uses the vocabulary correctly. Neither one compares it with the page. The Schema Markup Validator will say nothing about a price of 12 dollars on a page that shows 120. Step 4 catches that, so give it the most time.

Before you start

  • List your templates with one live URL for each. A store usually has the home page, a product with variants, a product without variants, a collection, an article and an about or contact page.
  • Get Search Console access for the property.
  • Save the raw HTML of each URL. Step 4 compares values against it.

Steps

Step 1. Run each template URL through the Rich Results Test

Open the Rich Results Test and paste the live URL. The test uses Google's smartphone crawler unless you switch it to desktop. It shows which rich result types it found on the page, with any errors and warnings. Test the URL rather than a copied snippet. Google recommends the URL for markup that JavaScript adds. The code option runs into JavaScript limits that a live URL does not.

Write down what the test reports for each template. An item with only warnings stays valid. Google treats an item with a critical issue as invalid, and an invalid item cannot appear as a rich result.

Step 2. Run the same URL through the Schema Markup Validator

Open the Schema Markup Validator and test the same URL. The validator comes from schema.org, not from Google. It reads the markup against the schema.org vocabulary and lists every item it finds, including types Google has no rich result for. The same list is the quickest way to count the Organization or Product nodes on a page.

Step 3. Confirm Google sees the markup on the live page

In Search Console, inspect the URL and run Test live URL. The live test lists the structured data Google detected among its enhancements, for the rich result types the tool supports. Compare it with your saved raw HTML. A block that appears here and not in the raw HTML was added by JavaScript. Google can read markup that JavaScript adds. Google also warns that Product markup added this way can make Shopping crawls less frequent and less reliable. Keep product markup in the server response.

Step 4. Compare every marked up value with the visible page

Put the markup and the page side by side and check each value a visitor can also see.

Google's structured data guidelines say not to mark up content that is not visible to readers of the page.
Marked up value Compare it with
name The main heading on the page
price and priceCurrency The price a visitor sees for the same variant
availability The stock message on the page
aggregateRating and reviewCount The stars and the review count on the page
datePublished and dateModified The dates on the article, and the last real edit
image The main image on the page

Any difference is a finding, even when both tools pass. Fix the page or the markup, and record which one you changed so the next theme update does not undo it.

Step 5. Count the entities from every source

A theme, an SEO plugin and several apps can each write their own block. Count the Product, Organization and Article nodes from every source on the page. If two nodes describe the same thing, use the method for two Organization nodes on one site. The same method works for duplicate Product nodes.

Step 6. Watch the Search Console reports after release

The rich result reports sit under Enhancements in Search Console. The product reports sit under Shopping. Each report lists items as valid or invalid. Critical issues appear in a table called Why items are invalid, and the others in Improve item appearance. The reports show a sample of items from indexed pages only.

When you fix an issue, confirm the fix with Test live URL and then click Validate fix in the report. Google checks a sample of pages first, and validation can take two weeks or more. Rerun steps 1 and 3 on the live URL the same day, so you catch a typo before Google's validation finishes.

Check that it worked

The check passes when every template passes both tools without critical issues and every marked up value matches the visible page. After Google crawls the pages again, the Search Console reports should show the items as valid. Keep one results table with a row per template. Each row holds both tool results, the value comparison and the Search Console status.

If it did not work

  • If you tested a code snippet, test the live URL instead. A snippet misses what the template, the apps and the scripts add.
  • If a warning worries you, read what it names. A warning leaves the item valid. Add the property when the page has the fact, and leave it out when it does not.
  • If one product passes, test the others before you trust the result. A product with variants, a sold out product and a product without reviews often fail in different ways.
  • If everything passes and no rich result appears, that can still be correct. Google says it does not guarantee rich results for correct markup.
  • If the markup describes something the page hides, such as a rating nobody can see, remove the value or show the fact on the page.
  • If a page is missing from a Search Console report, check that it is indexed. The reports include indexed pages only.

Platform notes

On Shopify, the Liquid structured_data filter outputs a Product for a product without variants and a ProductGroup for one with variants. It also works on article objects. Themes and apps print more blocks of their own, so test each template after every theme update and every app install.

On WordPress, an SEO plugin usually builds the main graph. WooCommerce adds its own product JSON-LD, and developers can change it through the woocommerce_structured_data_product filter. When two plugins both write markup, test the page with each one switched off in turn on a staging copy.

On any other platform, the tools and steps are the same. You make the fix wherever that platform writes its markup.

What Visibility Mesh checks and what it does not

The Visibility Mesh scan reads the JSON-LD on each page it crawls and reports what is missing. For example, it reports Product markup without a price, priceCurrency and availability, or an Organization node without a name, url and logo. Its fix steps ask for values that match the page. No scan can promise a rich result, because Google decides that. On Shopify and WordPress, AI Visibility Setup: Schema Mesh reads each page and its markup side by side. It fixes every place where they disagree before it adds anything (how the setup works).

Questions people ask

What is the difference between the Rich Results Test and the Schema Markup Validator?

Google's Rich Results Test checks your markup against Google's own rich result features and shows which ones the page may be eligible for. The Schema Markup Validator comes from schema.org and checks the markup against the schema.org vocabulary, including types Google does not use. Run both on the same live URL. Neither tool compares the markup with what the page shows.

Does valid structured data guarantee a rich result?

It does not, and Google says so itself. Google does not guarantee that structured data will show up, even when the Rich Results Test finds it correct. Its reasons include markup that does not represent the main content of the page and markup about content hidden from the user. Valid markup only makes a page eligible for a rich result.

Does FAQ markup still matter?

Google stopped showing the FAQ rich result in Search on May 7, 2026, and removed its documentation on June 15, 2026. So FAQPage markup no longer earns a rich result in Google. It still labels each question and its answer for any machine that reads the page. Keep it only where the questions and answers are visible on the page, word for word.

Why does the test pass on one product and fail on another?

Every product runs through the same template with its own data. A product with variants, a sold out product and a product with no reviews each take a different path through that template. Test one of each, and test again after a theme update or a new app.

Sources

For the reasons behind step 4, read why valid is not enough and when the markup says one thing and the page another.

Run the free scan to see how five key pages of your site read to a machine, markup included.

See whether this applies to your site

This article is about what AI can read; the scan checks your structured data page by page.

The free Visibility Mesh scan checks whether AI crawlers can reach your website and reads the structured data and text of 5 key pages. The scorecard has 3 complete findings, and each one names the page and the fix. No install, no call, no card.

Run the free scan