Chat on WhatsApp
Free tool · 2026 edition

Free Magento Schema.org JSON-LD validator

Paste a JSON-LD snippet from any Magento page and get a server-side validation report in seconds. Real Schema.org type-checking across 15 schema types — not regex tricks. Errors with exact dotted paths, copy-pastable fix examples, and a 0–100 rich-result-readiness score.

  • Server-side validation against the official Schema.org vocabulary
  • 15 schema types — the ones Magento actually emits
  • Zero data stored — payload discarded after validation
Adobe-Certified Magento + Hyvä developer Schema audits across 200+ Magento stores
The validator

Paste your JSON-LD, get a server-side validation report

Up to ~200KB of JSON-LD. Validated against the official Schema.org vocabulary. Nothing is stored — the payload is parsed, validated, and discarded.

Try an example:

Your validation report appears here

Paste a JSON-LD snippet on the left, pick the expected type (or leave on Auto-detect), and hit “Validate JSON-LD.” The Python sidecar validates server-side and returns a per-property report.

Service unavailable, try again

/100

Detected @type

Errors

Warnings

Missing recommended

Fix suggestions

Get a full-site schema audit

Send a few page URLs through and I’ll audit every JSON-LD on every page type — PDP, category, CMS, blog — and ship a fix-list within 48 hours.

Why trust this validator

Four reasons this beats the client-side validators

Real Python sidecar walking the official Schema.org vocabulary. 15 schema types covered. Zero data stored. Free forever.

  • Server-side Real validation, not regex tricks

    A Python sidecar parses your JSON-LD, walks every required and recommended property against the official Schema.org vocabulary, and checks datatypes (Date, URL, Boolean, Number). Client-side “validators” just regex-match property names — this one actually runs the type system.

  • 15 types The types Magento actually emits

    Product, Article, FAQPage, BreadcrumbList, Organization, LocalBusiness, Person, Service, SoftwareApplication, Course, HowTo, Recipe, Event, Review, DefinedTerm — the schemas you actually ship from Magento PDPs, CMS pages, and category pages. Auto-detect picks the type from your @type field.

  • Zero stored Nothing is logged or saved

    Your JSON-LD is validated in-memory in the sidecar and discarded. No DB write, no log line with the payload, no analytics ping. The endpoint is rate-limited by IP but the body never leaves RAM. Validate production data without an NDA.

  • Free No signup, no daily quota

    Unmetered. Validate one snippet or two hundred. There’s no “upgrade for unlimited” tier — if you find me useful, hire me for a full-site schema audit. Otherwise the tool stays free forever.

What this validator checks

Six validation layers, not a glorified regex match

Required properties, datatype validation, @context + @type correctness, Schema.org URL consistency, enumerated values, and @graph nesting. The six layers that catch real Magento bugs.

  • Required properties

    Schema.org marks certain properties as required for rich-result eligibility — Product needs name + image + offers; Article needs headline + image + datePublished; FAQPage needs at least one mainEntity with a Question + acceptedAnswer. The validator flags every missing required property as an error with the exact dotted path (e.g. offers.priceCurrency) so you can find it in your template instantly.

  • Datatype validation

    A common Magento bug: priceCurrency emitted as "USD " (with a trailing space) or price emitted as a string instead of a Number. The validator checks every property against the Schema.org expected type — Date, DateTime, URL, Boolean, Number, Integer, Text — and flags datatype mismatches as errors. image must be a URL or array of URLs; datePublished must be ISO 8601.

  • @context + @type correctness

    The validator checks that @context is https://schema.org (not http:// or www.schema.org — both still parse but trigger Search Console warnings). It checks that @type is a real Schema.org class, not a typo (e.g. "Producnt", "FaqPage" with the wrong casing). And it catches the common Magento bug of nested @graph referencing IDs that don’t exist on the page.

  • Schema.org URL consistency

    Every @type reference needs to resolve to a real Schema.org class. The validator catches misspellings (BreadCrumbList vs BreadcrumbList), deprecated types (Product/IndividualProduct removed in 2024), and pending-extension types that Google won’t honour for rich results. Same for properties: aggregateRating.ratingValue exists; aggregateRating.rating doesn’t.

  • Enumerated values

    Some Schema.org properties have a fixed enum of acceptable values. offers.availability must be one of InStock, OutOfStock, PreOrder, BackOrder, SoldOut, Discontinued, LimitedAvailability, etc. offers.itemCondition must be NewCondition, UsedCondition, RefurbishedCondition, or DamagedCondition. Magento often emits free-text values that fail validation silently.

  • Nesting depth + @graph

    A typical Magento PDP emits @graph with 4–6 nested objects (Product → Brand → AggregateRating → Review → Person). The validator walks the full nesting tree, validates each child object against its own type, and confirms @id references inside @graph resolve. Deep nesting bugs are the #1 cause of “Valid in Schema Markup Validator, errors in Search Console.”

How to use the validator

Five steps from broken schema to rich-result eligible

Why schema matters → paste → validate → fix → re-test. Five minutes per page once you know the rhythm. Cross-check with Google’s Rich Results Test for the final eligibility signal.

  1. 01

    Why schema

    Schema.org JSON-LD is how Google understands your Magento pages well enough to show rich results — star ratings on PDPs, FAQ accordions in SERPs, breadcrumb trails, sitelinks. No schema = no rich result; broken schema = silently dropped from rich-result eligibility. Validate before you debug your CTR.

    Why it matters
  2. 02

    Paste

    Right-click your Magento page → View Source → Ctrl+F “application/ld+json” → copy the contents of the script tag. Or use the Rich Results Test “view source” output. Paste it into the validator textarea. The pre-filled example buttons load Product / Article / FAQPage samples if you want to test the tool first.

    Snippet pasted
  3. 03

    Validate

    Pick the expected type (or leave on Auto-detect) and hit Validate JSON-LD. The Python sidecar parses your snippet, resolves @type against Schema.org, walks every property, checks datatypes, validates enums, and returns a score 0–100 along with errors, warnings, and missing-recommended properties.

    Server response
  4. 04

    Fix

    Each error and warning includes the exact dotted path (e.g. offers.priceCurrency) and a fix suggestion with a copy-pastable example value. Patch your Magento template (usually view/frontend/templates/structured-data/… or your Panth_StructuredData override) and re-deploy.

    Template patched
  5. 05

    Re-test

    Paste the updated snippet back into the validator. Score should climb. Once you’re green (≥85) cross-check with Google’s Rich Results Test for the final eligibility check — mine catches stricter issues than Google’s but Google’s tester is the ground truth for whether you actually get the rich result in SERPs.

    Eligible for rich results
Real scenarios

Three pages every Magento store should validate

PDP Product schema, service / pillar Article markup, and FAQPage rich-result eligibility. The three schema types that drive most rich-result CTR for Magento stores.

  • PDP audit

    Audit a Product JSON-LD on a Magento PDP…

    • Paste the PDP’s Product schema, pick Product
    • Catches missing offers.priceCurrency, malformed availability
    • Validates aggregateRating.ratingValue is Number not String
    • Flags image URLs that are relative not absolute
    • Score ≥85 = Google Merchant Listings eligible
    • Common Magento bug: brand as String instead of Brand object
  • FAQPage

    FAQPage rich-result eligibility check…

    • Each mainEntity needs Question + acceptedAnswer
    • Answer text must be plain or simple HTML, no <script>
    • Validates question text isn’t truncated <10 chars
    • Flags duplicate name values across Questions
    • Catches the “FAQPage on PDP” anti-pattern Google demoted in 2023
    • Score ≥85 = FAQ accordion in SERP (where still supported)
Full-site schema audit

Want me to audit every JSON-LD across your whole site?

Send a few page URLs, what schema you’ve already implemented, and the rich results you’re chasing. I’ll crawl every page type, validate every JSON-LD, and ship a per-template fix-list within 48 hours.

We will get back to you shortly.

Past schema-audit clients say

Reviews from Magento teams I’ve audited

Public reviews on Upwork — clickable on each card. Same audit playbook for every store.

Kishan was great to work with.

Kishan was great to work with. I needed a small change to my site, with an attribute adding to appear on the frontend. Kishan completed this very quickly, and had the work completed the same day. I am very happy with the work completed by Kishan and would be happy to employ his...

CK

Chanette Kennedy

After trying and failing with multiple development companies Kishan came to the rescue in our hour of need.

After trying and failing with multiple development companies Kishan came to the rescue in our hour of need. Without hesitation Kishan jumped right in. He operated fast and with purpose. I was impressed with his diligent and methodical approach to tackle the issue. While...

ML

Michael Lin

Natonic

Brilliant freelancer.

Brilliant freelancer. He is the best Magento 2 freelancer I have ever worked with. So good and

PS

Peter Stewart

CEO, No79 Design

Kishan did an outstanding job building my Ayurvedic consultation website, complete with product integration.

Kishan did an outstanding job building my Ayurvedic consultation website, complete with product integration. The entire process was seamless, and he was incredibly attentive to my specific business needs. His professionalism and expertise were evident, providing excellent...

SM

Simran Mahendraker

HH Formulations

great professional with enthusiasm, knowledge, skill and exceptional patience in solving problems.

great professional with enthusiasm, knowledge, skill and exceptional patience in solving

D

Dennis

Bay Tech

Kishan provided a quick and straightforward solution to a problem I thought was complicated.

Kishan provided a quick and straightforward solution to a problem I thought was complicated. I am very impressed and I

NN

Neudell Nicholson

Vertex Select Ltd

Auditing schema across

  • United States
  • United Kingdom
  • Canada
  • Australia
  • Germany
  • France
  • Netherlands
  • India
FAQ

Twelve questions schema-validator users actually ask

Which Schema.org types actually matter for a Magento store?

For a typical Magento store, six types drive most rich-result eligibility:

  • Product — every PDP. Drives star ratings, price snippets, and Google Merchant Listings (free).
  • BreadcrumbList — site-wide. Drives the breadcrumb trail in the SERP instead of the raw URL.
  • Organization — once per site. Drives the knowledge panel + logo in branded SERPs.
  • Article — blog and pillar pages. Drives Article rich result + Top Stories eligibility.
  • FAQPage — FAQ-heavy CMS pages. The FAQ accordion in SERP is still supported for some queries (Google quietly demoted it for product/commercial intent in 2023).
  • LocalBusiness — for stores with a physical address. Drives the local pack + Google Business Profile cross-checks.

The validator supports all six plus another nine (Person, Service, SoftwareApplication, Course, HowTo, Recipe, Event, Review, DefinedTerm) which Magento stores emit less often but still ship for certain use cases (Service-type pages on Magento + Hyvä service-business stores; Recipe-type for food brands; Course-type for academy/training sites; etc.).

JSON-LD vs Microdata vs RDFa — which should Magento use?

JSON-LD. Google explicitly recommends it. Microdata still works but is deprecated for new implementations. RDFa is dead for ecommerce.

Why JSON-LD wins for Magento specifically:

  • Decoupled from markup. Microdata interleaves itemprop attributes inside <div> trees — touch the layout, break the schema. JSON-LD lives in a single <script type="application/ld+json"> tag, isolated from the storefront DOM.
  • Hyvä-safe. When you migrate Luma → Hyvä, your microdata-bound itemprop attributes are scattered across hundreds of phtml files. With JSON-LD you ship one block per page-type and the Hyvä migration leaves it alone.
  • Faster for Google. JSON-LD parses faster than walking the DOM for microdata; Googlebot has an explicit fast-path for application/ld+json.
  • Magento 2.4.7+ ships JSON-LD by default for Product. The core Magento_Catalog module emits it. Microdata is legacy.

This validator only validates JSON-LD. If you’re on microdata, your migration path is: extract microdata to a server-side template, emit it as JSON-LD via a Product block, then validate.

Why does Google’s Rich Results Test say my schema is valid but Search Console flags errors?

Three reasons, in descending frequency:

  1. Sampled data drift. Search Console’s “Enhancement” reports are based on Googlebot’s last successful crawl — which can be 2–6 weeks behind your latest deploy. The Rich Results Test fetches your page live. So if you fixed schema two weeks ago, RRT is green but Search Console is still reporting the old errors.
  2. Stricter Search Console policy. Search Console validates against rich-result eligibility rules (more strict than basic Schema.org). For example: Product is valid Schema.org if you have a name alone, but Google’s product rich-result rules require name + image + offers.price + offers.priceCurrency + offers.availability. RRT catches this; basic Schema.org validators don’t. This validator does — it scores both layers.
  3. Page-state mismatch. Search Console sees pages with empty offers.price when stock = 0 or the product is configurable. Your test JSON-LD has a simple Product with a fixed price. Both can be “valid” for their respective inputs.

Fix path: re-validate the exact same JSON-LD Googlebot saw (use Search Console’s URL Inspection → View Tested Page → HTML to grab Googlebot’s render) against this validator. If we both flag it, fix it. If only Search Console flags it, you’re in case #1 — wait a crawl cycle.

How often should I revalidate my Magento schema?

Three trigger events — everything else is theatre:

  • After every Magento upgrade. Core Magento_Catalog can change what it emits per minor version (2.4.8 changed offers.availability URL casing in core Product schema). Revalidate one PDP + one Article + one FAQPage after every setup:upgrade.
  • After every theme migration. Luma → Hyvä; Hyvä major version bumps; replacing your custom theme. Each can swap or drop the structured-data block silently.
  • After every schema-related extension install / update. Mageplaza Better Product Reviews, Amasty Advanced Reviews, Magefan Blog — each can inject its own aggregateRating or Article JSON-LD that conflicts with what core emits. Revalidate one page where the extension is active.

Outside those: schedule a quarterly spot-check against your top 10 organic landing pages. That’s enough — Schema.org vocabulary changes ~1–2 properties per quarter and Google updates rich-result eligibility maybe twice a year.

What you do not need to do: revalidate every PDP after every product edit. JSON-LD is template-driven — if one PDP validates clean, all PDPs of that product type are fine. Validate by template, not by product.

Can I validate my whole site with this tool?

Not in a single click — the validator takes one JSON-LD snippet at a time. But you don’t need to validate every page; you need to validate every template.

For most Magento stores, that means 6–10 snippets:

  1. One Product JSON-LD from a Simple PDP
  2. One from a Configurable PDP
  3. One from a Bundle PDP (if you use them)
  4. One Category JSON-LD (often empty, which is its own problem — the validator catches that too)
  5. One Article JSON-LD from your blog
  6. One Article from a CMS service page
  7. One FAQPage from a CMS / pillar page
  8. One Organization (homepage)
  9. One BreadcrumbList from any non-home page
  10. One LocalBusiness (if applicable)

That covers ~95% of your URL surface. If any of those fail validation, every page of that template fails. Fix the template once; fix the whole site at once.

For a full automated crawl (which is what big agencies sell as a $5k schema audit), I do it manually as part of the full-site audit service — crawl up to 500 URLs, validate each JSON-LD, deduplicate by template, ship a per-template fix list. 48 hours, fixed price.

What’s a “missing recommended” warning — do I need to fix it?

Schema.org marks each property as either required (must have for the type to be valid), recommended (improves rich-result eligibility), or optional (nice-to-have). The validator reports them in three buckets:

  • Errors — missing required, wrong datatype, invalid enum value. These block rich-result eligibility. Fix immediately.
  • Warnings — deprecated property, suspicious value, non-canonical @context URL. Worth fixing but won’t block rich results.
  • Missing recommended — the property is allowed-but-absent. Google’s eligibility rules treat each missing recommended as a soft penalty against your rich-result score.

You don’t need to fix every “missing recommended” to be eligible — but the more you have, the better your chances. For Product specifically: sku, mpn, gtin13, brand, aggregateRating, and review are the high-value ones — adding them moves you from “eligible” to “competitively eligible” for Merchant Listings.

For Article: author, publisher, image at multiple aspect ratios (1:1, 4:3, 16:9), dateModified, and articleSection. Add these and your Top Stories eligibility climbs.

The validator’s 0–100 score weights required-property completeness 60%, recommended-property completeness 30%, and warning count 10%. Fix every error to get to ~60. Add the high-value recommended properties to climb past 85 (rich-result eligible).

Do all “errors” actually block rich results from appearing?

Most do, some don’t. Google’s rich-result rules are pickier than the Schema.org vocabulary itself:

  • Hard blockers (rich result will not appear): missing required property for the rich-result type, malformed JSON syntax, @type not matching a valid rich-result type, image not resolvable, price not a Number, priceCurrency not a valid ISO 4217 code.
  • Soft blockers (rich result may appear but with degraded features): missing aggregateRating (no stars in SERP but other parts of the rich result still show), missing brand on Product (price snippet shows but Merchant Listing eligibility may drop), missing author on Article (Top Stories ineligible but standard Article result still works).
  • Non-blockers (rich result appears anyway, but the validator flags for hygiene): deprecated properties (Schema.org marks them but Google still honours them for backwards compatibility), non-canonical @context URLs (http://schema.org still works), excessive nesting depth (warns at ≥6 levels but works at ≥10).

The validator’s “Valid / Invalid” pill reflects Schema.org validity. The 0–100 score reflects rich-result eligibility. They’re different signals — a snippet can be Valid (Schema.org passes) with a score of 55 (rich result unlikely to appear). Watch both.

How is this different from Google’s Rich Results Test (search.google.com/test/rich-results)?

Both are useful; they answer different questions.

Google’s Rich Results Test is the source of truth for “will this rich result appear in Google SERP?” It runs Google’s actual rich-result eligibility rules and returns: pass/fail per rich-result type, the rendered preview, and Googlebot-fetched HTML. Use it as the final eligibility check before pushing schema to production.

This validator is the per-property debugger. It tells you where your JSON-LD is broken, what datatype each property should be, and gives copy-pastable fix examples. Google’s tester gives a binary pass/fail with cryptic error messages (“Either ‘offers’, ‘review’, or ‘aggregateRating’ should be specified”); this validator gives offers.priceCurrency: expected ISO 4217 code, got "USD " (trailing whitespace).

My recommended flow:

  1. Paste snippet into this validator — iterate until score ≥85, zero errors, zero warnings.
  2. Deploy to staging.
  3. Run Google’s Rich Results Test against the staging URL. If it passes, ship to production. If it fails, paste the staging-rendered JSON-LD back into this validator — one of the post-render values is probably empty (out-of-stock product, configurable with no default selection, etc.).
  4. Re-test on production 24h after deploy. Search Console reflects the change in 2–6 weeks.
Can I validate my Product JSON-LD if my offers block is dynamic (price changes per customer group)?

Yes — but you need to validate the rendered JSON-LD as Googlebot sees it, not your template source.

The challenge with Magento + dynamic pricing:

  • Customer-group pricing → different prices per group → Googlebot sees the “not-logged-in” price (NOT_LOGGED_IN customer group).
  • B2B segment pricing → segment-aware prices → Googlebot sees the default segment’s price (or no price if segmented away from default).
  • Tier prices / minimum order quantity → Googlebot sees the unit price for qty=1.
  • Configurable products → if you don’t pre-select a default child, Googlebot sees the parent’s placeholder price (often empty — this is the #1 source of “missing price” Search Console errors on Magento configurable PDPs).

How to test:

  1. Open the PDP in an incognito browser (no auth, no segment cookies).
  2. View source, find application/ld+json, copy the rendered JSON-LD (not your template source).
  3. Paste into this validator. If offers.price is empty or "0.00" when stock exists, the price isn’t rendering for anonymous visitors — this is the bug.

Fix path: emit a price + priceSpecification structure that uses the default-segment price, or use priceRange on the parent Configurable with min/max from child SKUs. The validator’s fix-suggestions section gives you a copy-pastable Magento PHP block to do this.

What’s the 0–100 score formula?

Three weighted components:

  • Required-property completeness (60% of score). Every required property present and correctly typed = full 60 points. Each missing required property subtracts ~15 points (depending on which property; image is heavier than alternateName). A datatype mismatch on a required property scores the same as missing.
  • Recommended-property completeness (30% of score). Each recommended property present = +N points where N is proportional to its rich-result value. Adding aggregateRating on Product is worth ~6 points; adding color is worth ~1 point. The top 5 recommended properties together typically account for ~80% of the 30-point pool.
  • Warning-count penalty (10% of score). Up to -10 points based on warning count (deprecated properties, non-canonical @context, suspicious values). Each warning subtracts ~1 point capped at -10.

Score bands:

  • ≥85 — green ring. Rich-result eligible. Cross-check with Google’s tester before shipping.
  • 60–84 — amber ring. Schema is valid but rich-result eligibility uncertain. Likely missing high-value recommended properties.
  • <60 — red ring. Errors present; rich result will not appear until errors are fixed.

The score is type-specific — a Product score of 92 means “ready for Merchant Listings + star snippets”; an Article score of 92 means “ready for Article + Top Stories”.

What about VideoObject / Course / HowTo / Recipe / Event?

Course, HowTo, Recipe, and Event are supported. VideoObject is on the roadmap.

Currently supported (15 types):

  • Course — for Magento + Hyvä academy / training sites. Validates name, description, provider, and hasCourseInstance if present.
  • HowTo — for tutorial CMS pages. Validates step array with HowToStep children. Note: Google demoted HowTo rich results for non-Google-Search-Console-verified sites in 2023; the schema still validates but the rich result rarely shows for ecommerce stores.
  • Recipe — for food / DTC food brands selling cookware or ingredients. Full validation including recipeIngredient, recipeInstructions, nutrition.
  • Event — for stores running launches, pop-ups, webinars. Validates startDate, endDate, location, organizer.

VideoObject is the most-requested addition. I’m holding back on it because Google’s VideoObject rules require live URL probes for contentUrl + thumbnailUrl + duration check, and that conflicts with the “zero data stored” promise of this tool. I’m exploring a HEAD-only validation pattern; expect it in Q3 2026.

If you need to validate something exotic (Dataset, MedicalEntity, Drug, etc.) — paste it anyway with Auto-detect, the validator will fall back to generic Schema.org type-checking and at least flag obvious errors (datatype mismatches, missing @type, non-canonical @context).

When should I hire someone to audit the whole site instead of using this tool?

Hire a full-site auditor when:

  • You have ≥10 page templates. Validating manually per template starts costing real time at 10+. A crawl-based audit hits every template in one pass.
  • You’re seeing errors in Search Console that you can’t reproduce in this validator. That means the issue is page-state-dependent (stock = 0, customer-group price, segment-aware content) and needs Googlebot-fetched HTML inspection, not template inspection.
  • You’re launching a new theme / Hyvä migration. Pre-launch audit prevents schema regression at cutover. Post-launch audit confirms parity.
  • You’re going from “some pages have schema” to “every page-type has schema.” Roadmap-and-implementation work; this validator is for fixing existing schema, not designing new schema.
  • Search Console is showing >100 affected URLs for a single issue. One template-level bug usually explains it — but isolating which template needs the audit.

How my full-site audit works:

  1. Crawl up to 500 representative URLs (sampled by template).
  2. Extract every JSON-LD block; deduplicate by template signature.
  3. Validate each template’s schema against Schema.org + Google’s rich-result rules.
  4. Cross-reference with Search Console “Enhancement” reports if you give me access (read-only).
  5. Ship a per-template fix list: which Magento file to edit, what to change, copy-pastable code.
  6. 48-hour turnaround. Fixed price. Optional implementation phase.

Use the form above to send your store URL + page list, or email kishansavaliyakb@gmail.com directly.

Want me to fix your schema, not just validate it?

I’ll audit every JSON-LD on every page type, ship a per-template fix-list, and (if you want) implement the fixes directly in your Magento codebase. Same Adobe-Certified developer who built this tool. Fixed-price quote within 48 hours.