# Schema markup validator

> Test JSON-LD structured data on any page or in pasted code. Finds broken JSON, missing required properties for rich results and wrong dates, prices and URLs.

Canonical: https://cromagnon.app/tools/schema-validator
Last updated: 2026-10-27

- Category: SEO
- Formats: URL · HTML · JSON-LD
- Use it: https://cromagnon.app/tools/schema-validator (free, runs in the browser)

## What it does

Structured data only works when it is valid: one missing comma makes search engines ignore a whole script, and a missing required property stops a rich result from appearing. This validator reads the JSON-LD on a live page, or in HTML or JSON you paste, and checks every item in it. It reports broken JSON with the line and column, the properties Google requires and recommends for that type of rich result, and values written in a form search engines don't accept, such as a date like 27/10/2026, a price with a currency sign or an image path without https://.

## How to use it

1. Type a page address and click Check page, or switch to Pasted code and paste a page's source, a <script type="application/ld+json"> block, or plain JSON.
2. Read the summary: how many items were found, and how many errors and warnings.
3. Open each item: red marks are errors that stop rich results, amber marks are recommended improvements, and notes explain types Google limits.
4. Click Show the data to see the item's properties as search engines read them.
5. Fix the markup in your site or plugin (or rebuild it with the schema generator), publish, and check again.

Tip: Errors come first. A rich result needs every required property; recommended ones make it richer and more likely to show, but missing them never blocks it.

## What is checked

- **JSON syntax**: Trailing commas, missing commas, single quotes and unclosed brackets. The message says where the JSON breaks and what is most likely wrong.
- **@context and @type**: Each item needs "@context": "https://schema.org" and a type. Items inside an @graph inherit the context.
- **Required properties**: For 18 common types, including Product, Article, LocalBusiness and its subtypes, Event, Recipe, Video, FAQ, Breadcrumbs, Review, Job posting and Course, the properties Google's documentation requires for a rich result.
- **Recommended properties**: Extra properties Google uses when they are present, such as a product's brand and GTIN or an event's end date and organizer.
- **Values**: Dates and times in ISO 8601, durations such as PT30M, prices as plain numbers, three-letter currency codes, and full https:// addresses for URLs, images and logos.
- **Notes on limited types**: FAQ rich results now appear only for government and health sites, and how-to results are no longer shown; the validator says so instead of letting you chase them.

## Checking a live page

With a web address, Cromagnon's server fetches the page once, like a search engine crawler, and reads the HTML it receives. Redirects are followed and the final address is shown. Nothing is stored. Some sites block automated visitors and answer 403; for those, open the page in your browser, view the source, and paste it instead.

Markup that is added by JavaScript after the page loads, for example by some tag manager setups or app widgets, isn't in the first HTML, so it won't be found here. Google can render JavaScript and usually sees it eventually, but adding JSON-LD to the HTML itself is faster and more reliable. To check rendered markup, copy the page's HTML from your browser's developer tools (Elements panel, right-click <html>, Copy outer HTML) and paste it.

## Common errors and how to fix them

- **Missing field "offers", "review" or "aggregateRating"**: A Product needs at least one of them. Add the price in offers, or the real ratings shown on the page.
- **Price is not a number**: Write "price": "34.00" and "priceCurrency": "USD" separately. Remove currency signs and thousand separators.
- **Date isn't ISO 8601**: Change 27/10/2026 or October 27, 2026 to 2026-10-27, and add a time zone to times: 2026-10-27T19:30:00+01:00.
- **Not a full address**: Images, logos and item URLs need https://. Many themes output relative paths; most SEO plugins have a setting for the site URL.
- **Invalid JSON**: Usually a comma after the last item in a list or object, or a missing comma between two properties. Text with double quotes inside must escape them as \".
- **Duplicate items**: Two plugins can both add Product or Organization markup. Keep one source of truth, or search engines may read conflicting values.

## This tool and Google's tests

Google's Rich Results Test shows which rich results a page is eligible for, and the Schema Markup Validator at schema.org checks the vocabulary in general. This validator focuses on the mistakes that most often stop rich results, explains them in plain words, and works on pasted code before anything is published. Use it while you build, and use Google's test and Search Console's Enhancements reports to confirm after publishing.

## Tips

- **Check templates, not just pages**: Fix the template that outputs the markup and every product or post is fixed at once.
- **Match the visible page**: Valid markup that disagrees with the page (a different price or rating) can still lose rich results.
- **Watch Search Console**: The Enhancements reports show errors across the whole site and when Google sees your fixes.
- **One script per type**: Several JSON-LD scripts on one page are fine; make sure they don't describe the same thing twice.
- **Escape quotes**: A double quote inside a text value must be written \", or the JSON breaks.
- **Microdata**: If the page uses itemscope attributes instead of JSON-LD, test it in Google's Rich Results Test.

## Questions

### Why does my valid markup not show stars or prices in Google?

Valid markup makes a page eligible, but Google decides whether to show a rich result based on the site's quality, the query and whether the markup matches the page. Some types (FAQ, How-to, self-serving reviews) are limited.

### Does it check Microdata and RDFa?

No, only JSON-LD, which is the format Google recommends. The tool tells you when a page uses Microdata or RDFa so you can test those in Google's Rich Results Test.

### Can it check pages behind a login?

No. The server can only fetch public pages. Paste the HTML of a private page or a staging site instead.

### Why are warnings not errors?

Warnings are recommended properties. A rich result can appear without them, but they often make it more detailed or more likely to show.

### Is the page or code I check saved?

No. A live page is fetched once and checked in your browser; pasted code never leaves your device. Nothing is stored or logged.

## Related

- [Schema Generator](https://cromagnon.app/tools/schema-generator)
- [SERP Preview](https://cromagnon.app/tools/serp-preview)
- [Open Graph Generator](https://cromagnon.app/tools/open-graph-generator)
- [JSON Formatter](https://cromagnon.app/tools/json-formatter)
- [All tools](https://cromagnon.app/tools)
