Free tool, no signup required

Schema & JSON-LD Validator

Enter any URL to validate the structured data that actually rendered. The tool checks JSON syntax, required and recommended properties for each type, date formats and nested entities.

3 checks remaining today (free)

Short answer

Schema markup is a block of JSON-LD in your page, invisible to visitors, that states what the page is in a form machines read literally. Validating it catches four kinds of failure, all of which are silent: JSON that does not parse, a missing required property that leaves the block ineligible for a rich result, a date in a format schema.org does not accept, and a nested entity that is malformed. Structured data is not a ranking factor. What it does is make you eligible for enhanced results and give AI systems an unambiguous statement of what the page contains.

What structured data does, and why it fails quietly

Search engines use structured data to decide whether you are eligible for the results that carry a star rating, a price, a recipe time or an event date. Assistants use it to answer questions without having to infer meaning from your layout.

The reason it needs a validator is that every way it breaks is invisible from the page itself:

  • Unparseable JSON. One missing comma and the block is not invalid, it is absent. Nothing reads it at all.
  • Missing required property. The block parses and validates as JSON, and is ineligible for the enhancement it was written for.
  • Rewritten on the way out. A plugin or tag manager injects its own version over yours, so what ships is not what you wrote.
  • Contradicting itself. Two blocks on one page naming different publishers, or a price in the markup that differs from the price on the page.

Validate the live URL

This tool fetches the rendered page rather than checking a snippet you paste in, because the gap between the two is where most structured data problems live.

Required properties by type

Every type has a small set of properties without which Google will not generate a result. These are the ones worth knowing by heart, because a missing one is the most common reason correct-looking markup does nothing.

TypeRequiredWorth adding
Productname, offers (with price and priceCurrency)image, description, brand, sku, aggregateRating from real reviews
Article, BlogPostingheadlineauthor with a url, datePublished, dateModified, image, publisher
LocalBusinessname, addresstelephone, openingHoursSpecification, geo, priceRange, url
Eventname, startDate, locationendDate, offers, organizer, eventAttendanceMode, eventStatus
FAQPagemainEntity with name and acceptedAnswerNothing else. Keep answers to plain text or the few permitted tags
BreadcrumbListitemListElement with position and nameitem URL on every level except the last
Recipename, image, recipeIngredient, recipeInstructionscookTime, prepTime, nutrition, aggregateRating
VideoObjectname, description, thumbnailUrl, uploadDateduration, contentUrl, embedUrl

If you are writing markup rather than auditing it, the schema generators produce blocks with the required properties already in place.

How to validate structured data

Six steps, in dependency order. Nothing below step two matters until the JSON parses.

  1. 01

    Validate the live URL, not the snippet you wrote

    Plugins, themes and tag managers all rewrite structured data on the way out. What matters is the block that reached the browser, which is frequently not the one you pasted in.

  2. 02

    Fix syntax errors before anything else

    A single missing comma or unescaped quote makes the whole block unparseable, and an unparseable block is invisible rather than invalid. No other finding means anything until the JSON parses.

  3. 03

    Add the required properties for your type

    Each type has a small set Google will not generate a rich result without: a Product needs a name and an offer, an Article needs a headline, an Event needs a name and a startDate. Missing one leaves the markup valid and ineligible.

  4. 04

    Check dates are ISO 8601

    datePublished, dateModified, startDate and endDate all need YYYY-MM-DD, optionally with a time and timezone. A date written as 14/03/2026 is ambiguous and gets rejected.

  5. 05

    Confirm the markup matches what is on the page

    Structured data must describe content a visitor can actually see. A price in the markup that differs from the price on the page is a policy violation, not a technicality, and it is the most common cause of manual actions against structured data.

  6. 06

    Confirm eligibility in Google's own tools

    This validator tells you whether the markup is correct. Google's Rich Results Test tells you whether Google will use it, and the Search Console enhancement reports tell you what it is doing with it at scale. Use all three.

Valid is not the same as eligible

Correct markup earns you eligibility. It does not earn you the result. Three separate things have to go your way, and only the first is under your control.

The markup has to be correct

That is what this tool checks: syntax, required properties, formats, nesting. It is a prerequisite and nothing more.

Google has to support the enhancement

Google has narrowed what it renders over time. FAQ results were cut back sharply in 2023 and now appear mainly for government and health sites. HowTo results were retired from desktop and mobile. The markup remains valid schema.org; there is simply no longer a result attached to it.

Google has to choose to show it

Even for supported types, enhancements are decided per query. New sites and sites with little history often see nothing for weeks after adding perfect markup, which is a trust question rather than a technical one.

The rule that gets sites penalised

Structured data must describe what is visibly on the page. Marking up a price you do not show, reviews you did not receive, or FAQ answers that are not in the copy risks a manual action against every rich result on the domain, not just that page.

What this tool validates

JSON syntax

Malformed JSON that stops the block being parsed at all

Required properties

The fields each type needs before a rich result is possible

Recommended properties

Fields that improve what the result shows

Date formats

Whether datePublished, dateModified and startDate are ISO 8601

Nested entities

FAQ questions, breadcrumb items and offer objects

@context and @type

A schema.org context and a type that actually exists

Use this alongside Google's Rich Results Test, not instead of it

The two tools answer different questions. This one checks whether your markup is well-formed and complete, including for types Google does not render at all. The Rich Results Test checks the narrower question of whether Google will generate one of its own enhancements from it. Fix the markup here, then confirm eligibility there.

Frequently asked questions

What is JSON-LD structured data?

JSON-LD is the format Google recommends for structured data: a script block in your HTML that states what the page is about in a form machines read literally. Not "this page mentions a number that might be a price" but "this is a Product, it costs 39.95, it is in stock". It sits alongside your content rather than wrapping it, which is why it is easier to maintain than microdata.

Why does schema markup need validating?

Because broken markup fails silently. Nothing appears in your CMS, nothing on the page looks wrong, and no one tells you. A single missing comma makes the block unparseable and therefore invisible. A missing required property leaves it parseable but ineligible for the rich result it was written to earn. Most people find out months later by noticing something that never appeared.

Does schema markup improve rankings?

Not directly. Google has been consistent that structured data is not a ranking factor. What it does is make you eligible for rich results, which change how much space your listing takes and what it shows, and that affects click-through. It also gives AI systems an unambiguous statement of what the page contains rather than leaving them to infer it from your layout.

What is the difference between required and recommended properties?

Required properties are the ones Google needs before it will consider generating a rich result. Recommended properties improve what that result shows. A Product without a name cannot produce a result at all; a Product without an image can, but a plainer one. This tool reports both, separately, because the two need different levels of urgency.

Why is my markup valid but no rich result appears?

Valid markup makes you eligible, not entitled. Google decides per query whether to show an enhancement, and it withholds them from sites it does not trust yet, from queries where it judges them unhelpful, and from whole categories it has scaled back. FAQ results are the clearest example: since 2023 they are shown mainly for government and health sites, regardless of how correct your markup is.

Which schema types are worth adding?

Start with the type that matches what the page actually is: Product on a product page, Article or BlogPosting on a post, LocalBusiness on a location page, Event on an event, BreadcrumbList on anything deep in a hierarchy. Adding types that do not describe the page is worse than adding nothing, because it invites a manual action.

Can one page have several schema blocks?

Yes, and most well marked-up pages do. A blog post commonly carries Article, BreadcrumbList and Organization. They can be separate script blocks or one @graph array. What you must not do is contradict yourself across them, such as two different publishers or two different canonical URLs.

Does structured data have to match the visible page?

Yes, and this is a policy rather than a guideline. Google's structured data guidelines require the markup to describe content visible to users on that page. Marking up a price you do not display, reviews you do not show, or FAQ answers that are not on the page risks a manual action against the whole site's rich results.

Can I mark up reviews I wrote about my own business?

No. Google's guidelines specifically disallow self-serving review markup: a business cannot supply a rating for itself or for its own products in AggregateRating. Ratings must come from genuine third-party reviews. This is a frequent cause of enforcement and one of the easiest violations to commit by accident.

What date format does schema require?

ISO 8601. A plain date is YYYY-MM-DD, and a date with a time is YYYY-MM-DDThh:mm:ss with an offset such as +01:00 or Z. Local formats like 14/03/2026 are ambiguous between British and American reading and are rejected. Timezone offsets matter most on Event markup, where a missing one shifts your event by hours for some visitors.

Is JSON-LD better than microdata?

For most sites, yes. Google explicitly recommends JSON-LD, and it sits in a single block rather than being threaded through your HTML attributes, so a template change cannot accidentally break it. Microdata and RDFa are still supported and still valid; there is no reason to migrate working microdata purely for its own sake.

What is the difference between this and Google's Rich Results Test?

They answer different questions. This tool checks whether the markup is well-formed and complete against the schema.org definitions, including types Google does not support at all. The Rich Results Test checks the narrower question of whether Google will generate one of its own enhancements. Run this first to fix the markup, then that one to confirm eligibility.

Validate structured data across your entire site

Schema breaks by template, so one broken product page usually means every product page. CrawlRaven validates structured data on every page in a single crawl and groups the failures by the template that produced them.