TapCub is live — analytics, insights and live chat, free on one platform

Free tool Schema validator for JSON-LD and HTML

Paste a JSON-LD snippet or the full source of a page. The validator pulls out every application/ld+json block, tells you the line and column of any JSON error, lists each item with its @type and @id, and checks the properties Google requires. It is not Google’s validator: use it to find problems fast, then confirm with the Rich Results Test.

  • Finds every JSON-LD block
  • Same rules as the generator
  • Runs locally
Validator

Check JSON-LD or a whole page

The sample is a product page with two blocks and a few typical mistakes. Paste your own code: view the page source (Ctrl+U / ⌥⌘U) and copy all of it, or paste a single JSON-LD object.

Starting with { or [ means one JSON-LD document; anything else is read as HTML and searched for <script type="application/ld+json">.

2 error(s), 2 warning(s). Errors are listed first.

JSON-LD blocks

2

Script tags found

Items

2

Top-level objects, including each @graph entry

Errors

2

Break eligibility

Warnings

2

Recommended or risky

Items found

Block@type@id or nameStatus
1ProductLinen Shirt – Navy2 error(s)
2BreadcrumbList—OK

Checks

Sorted by severity. Line numbers refer to the text you pasted.

  • ErrorLine 14Product › offers › price: "$59.00" includes a currency symbol or code. Put only the number in price (59.00) and the currency in priceCurrency (USD).
  • ErrorLine 17Product › offers › priceValidUntil: "12/31/2026" is not an ISO 8601 date. Use 2026-11-09 or 2026-11-09T09:00:00-05:00.
  • WarningLine 6Product: recommended property "description" is missing. Add it if the information exists on the page.
  • WarningLine 10Product › image: "/images/linen-navy.jpg" is a relative URL. Use the full address with https:// so it means the same thing wherever the markup is read.
  • OKLine 23BreadcrumbList: valid breadcrumb. Since January 2025 Google shows breadcrumbs on desktop results only; mobile results show just the domain.
Runs entirely in your browser. Nothing you type here is uploaded or stored by TapCub.

Version v1.0Updated Update history

Read the result

What each part of the report means

Four counts, a table of items and a list of checks.

Blocks and items

A block is one script tag. An item is one top-level object inside it; a block with an @graph of five nodes counts as five items. Nested objects such as an Offer inside a Product are checked as part of their parent, not counted separately.

Syntax errors

If a block is not valid JSON, nothing in it is read, by Google or by this tool. The line and column point to where parsing stopped. Line numbers count from the top of what you pasted, so a page source works as is.

Errors versus warnings

An error means a required property is missing or a value is in the wrong format, so the item cannot get a rich result. A warning is a recommended property you left out, or something valid but risky, such as a relative URL.

Notes

Facts worth knowing that are not mistakes: that Google no longer shows FAQ or HowTo rich results, that breadcrumbs appear on desktop only, or that a type is outside the rules this tool knows.

This is not Google’s validator and not the Schema.org validator. It checks the JSON you paste against a rule set for common types; it cannot see JavaScript-rendered markup, page content or manual actions. For the final word, test the live URL in Google’s Rich Results Test.

How to use it

Three steps

Works with a fragment, a template or a full page.

  1. 1

    Paste the code

    Open the page, view source, select all and paste. For a page that adds JSON-LD with JavaScript, copy the rendered HTML from the browser’s developer tools (Elements panel → Copy outerHTML) instead.

  2. 2

    Fix errors first

    Start with syntax errors: one stray comma hides everything else in that block. Then fix required properties and formats.

  3. 3

    Confirm with Google

    When the list is clean, publish and run the URL through the Rich Results Test. Search Console’s Enhancements reports then track the whole site over time.

What is checked

The rules behind the report

Checks fall into three groups: JSON syntax, schema.org structure and Google’s requirements for supported types. The rules are the same ones the schema markup generator uses.

  • Types checked in depth: Article family, Product, Offer, AggregateRating, Review, Organization, LocalBusiness and common subtypes, BreadcrumbList, FAQPage, SoftwareApplication, HowTo
  • References by @id inside the same block are followed
  • Unknown types are listed as notes, not errors; schema.org has hundreds
Checks the schema validator runs
CheckExample of a problemLevel
JSON syntaxTrailing comma, single quotes, commentsError with line and column
@contextMissing, or "schema.org" without https://Error
@type spelling"product" instead of "Product"Error
Required propertiesProduct without offers, review or aggregateRatingError
Dates12/31/2026 instead of 2026-12-31Error
Prices and currency"$59.00", "1.299,00", "usd"Error
URLs/images/a.jpg (relative)Warning
Recommended propertiesArticle without dateModifiedWarning
Worked example

The sample page, line by line

The default input is a product page with two JSON-LD blocks. The validator finds two items, two errors and two warnings.

Problems found in the example product page and how to fix them
WhereProblemFix
Product › offers › price"$59.00" includes a currency symbol"price": "59.00" and keep priceCurrency USD
Product › offers › priceValidUntil"12/31/2026" is not ISO 8601"2026-12-31"
Product › imageRelative URL"https://example.com/images/linen-navy.jpg"
ProductNo descriptionAdd the product description shown on the page
BreadcrumbListValid; last item has no URLFine as is: the last item is the current page

After the two fixes the Product has no errors and qualifies for product snippets. ratingValue written as a string "4.6" is accepted; numbers are also fine.

Common mistakes

What breaks structured data most often

These come up again and again in real page sources.

Escaped quotes from a CMS

A field that HTML-escapes its content turns " into &quot;. In a script tag that is no longer JSON.

Duplicate items with different values

A theme and a plugin each output Product or Organization. Google has to guess which one is right.

Relative and http URLs

Images and logos written as /logo.png or on an old http host. Use the canonical https address.

Dates in local format

03/04/2026 is March or April depending on the reader. ISO 8601 has one meaning.

FAQ

Schema validator questions

Still have a question?

Chat with the team behind TapCub — we usually reply within a few hours on business days.

How is this different from Google’s Rich Results Test?

Google’s test fetches and renders your live page and tells you which rich results it can produce. This tool checks code you paste, works on drafts and templates before they go live, lists every item, and points at JSON errors by line. Use this one while editing and Google’s for the final check.

What replaced Google’s Structured Data Testing Tool?

Google retired it in 2021. General schema.org checks moved to the Schema Markup Validator at validator.schema.org, and checks for Google’s rich results to the Rich Results Test. This tool covers the step before both for pasted code: JSON errors by line, plus Google’s required properties for the types it knows.

And from the Schema Markup Validator?

validator.schema.org checks markup against the whole schema.org vocabulary but says nothing about Google’s requirements. This tool knows fewer types, but adds Google’s required and recommended properties and format rules for them.

Why does it say “no JSON-LD found”?

Either the code you pasted has no script tag with type="application/ld+json", or the page uses Microdata or RDFa instead, or the JSON-LD is added by JavaScript after the page loads. In the last case copy the rendered HTML from developer tools.

Can it check a URL directly?

Not yet: fetching other sites needs a server, and this tool runs entirely in your browser. Paste the page source instead; it takes a few seconds.

Why is a relative URL only a warning?

JSON-LD processors resolve relative URLs against the page address, so they often work. They break when the same markup is reused on another page or read out of context, which is why absolute URLs are the safe choice.

Does valid markup guarantee a rich result?

No. Valid markup makes a page eligible. Google decides per query whether to show a rich result, and some types such as FAQ and HowTo are no longer shown at all.

Is the pasted code uploaded?

No. Parsing and checking happen in your browser. Nothing is sent to TapCub and the tool has no share link, so pasted source code never ends up in a URL.

Changelog

Update history

New features, fixes and data refreshes for this tool, newest first.

  1. · v1.0

    LaunchedFirst release.

Missing something or found an error? Tell us — requests that come up often go into the next update. All tool updates

See your data clearly. Find your growth.

Every click, backed by data. Install one line of code and see your first numbers in a minute.

No credit card · Free plans for analytics and chat · Cookieless analytics