---
title: "Schema Markup Validator: Test JSON-LD Structured Data"
description: "Validate schema.org JSON-LD from a URL or pasted code. Finds JSON syntax errors and checks the properties Google needs for rich results on common types."
image: "https://www.blackseoanalyzer.com/static/images/black-seo-analyzer-og-image.png"
canonical: "https://www.blackseoanalyzer.com/en/tools/schema-markup-validator"
language: "en"
---

# Schema Markup Validator

Enter a URL or paste JSON-LD to find JSON syntax errors and check each item against the properties Google requires for rich results. It reads the raw HTML, so schema added by JavaScript isn't included.

## What this schema markup validator checks

Paste JSON-LD or enter a URL, and the validator does three things. It parses every `<script type="application/ld+json">` block and reports JSON syntax errors with the line, the column and the likely cause. It checks that each item has a schema.org `@context` and a sensible `@type`. And for the types Google shows rich results for, it checks the properties Google lists as required and recommended, plus value formats like dates, prices, currency codes and rating ranges.

A missing required property is an error: Google won't consider the item for that rich result. A missing recommended property is a warning: the item can still qualify, but you're giving Google less to work with.

## What schema markup is

Schema markup, or structured data, is a machine-readable description of what a page is about: this page is a product that costs $39.99 and is in stock, this is a recipe that takes 45 minutes, this is a job posting in Denver. The vocabulary comes from [schema.org](https://schema.org/). Search engines use it to understand a page and, for some types, to show rich results such as review stars, prices, breadcrumbs or event dates. For a longer look at why it's worth doing, see [what makes schema markup so valuable](https://www.blackseoanalyzer.com/en/blog/what-makes-schema-markup-so-valuable).

## JSON-LD vs Microdata vs RDFa

There are three ways to put schema.org data in a page. Google supports all three and [recommends JSON-LD](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data) because it's the easiest to add and maintain.

| Format | Where it lives | Trade-off |
| --- | --- | --- |
| JSON-LD | A separate `<script type="application/ld+json">` block | Independent of the page layout. The data can drift from what the page shows if nobody keeps them in sync. |
| Microdata | `itemscope`, `itemtype` and `itemprop` attributes on HTML elements | Tied to the visible content, but a template change can silently break it. |
| RDFa | `vocab`, `typeof` and `property` attributes | Same trade-off as Microdata. Less common on commercial sites. |

This tool validates JSON-LD only. It detects Microdata and RDFa and lists their types, so you'll know they're there.

## How to validate structured data

Google retired its Structured Data Testing Tool. The generic part moved to schema.org as the [Schema Markup Validator](https://validator.schema.org/), and Google's own checks moved to the [Rich Results Test](https://search.google.com/test/rich-results). Each tool answers a different question:

- **This tool** reads the raw HTML, explains JSON syntax errors in plain terms, and checks Google's documented properties for common rich result types. It doesn't run JavaScript.
- **Schema Markup Validator** (validator.schema.org) checks any schema.org markup in all three formats against the vocabulary. It doesn't tell you anything about Google rich results.
- **Rich Results Test** renders the page like Googlebot, JavaScript included, and shows which rich results the page is eligible for. Use it to confirm before you ship.
- **Search Console** rich result reports show errors and valid items across your site after Google has crawled it.

## Required vs recommended properties

Each rich result type in Google's documentation has a table of required and recommended properties. Some types have no required properties at all. Article and Organization, for example, only have recommended ones. Others are strict: an event needs `name`, `startDate` and a `location` with a name and address, and a video needs `name`, `thumbnailUrl` and `uploadDate`. Google's advice is to add fewer recommended properties that are complete and accurate rather than every property with poor data.

## Why valid markup may still not get rich results

- **Rich results aren't guaranteed.** Valid markup makes a page eligible. Google decides whether to show a rich result.
- **The markup has to match the page.** Google's [structured data guidelines](https://developers.google.com/search/docs/appearance/structured-data/sd-policies) require the data to describe content visible to users. Hidden or misleading markup can lead to a manual action.
- **The feature may be gone.** Google stopped showing how-to rich results in 2023, removed the sitelinks search box in November 2024, and deprecated FAQ rich results in May 2026 after limiting them to government and health sites in 2023.
- **Self-serving reviews don't qualify.** A business that marks up reviews about itself on its own site isn't eligible for star snippets.

## Common JSON-LD errors and how to fix them

### Trailing commas and comments

JavaScript tolerates both. JSON doesn't, and one stray comma makes the whole block unreadable.

```
// Broken
{
  "@type": "Product",
  "name": "Trail Shoe", // model 2
}

// Fixed
{
  "@type": "Product",
  "name": "Trail Shoe"
}
```

### Unescaped quotes and HTML entities

A double quote inside a string ends the string early. The opposite mistake happens when a template HTML-escapes the JSON: browsers don't decode entities inside `<script>`, so `"` stays literal.

```
// Broken
"name": "The "Best" Trail Shoe"
{"@type": "Product"}

// Fixed
"name": "The \"Best\" Trail Shoe"
{"@type": "Product"}
```

### Several objects in one block

Two objects placed one after another aren't valid JSON. Wrap them in an array, or use `@graph` and link them with `@id`.

```
{
  "@context": "https://schema.org",
  "@graph": [
    {"@type": "Organization", "@id": "https://example.com/#org", "name": "Example Co"},
    {"@type": "WebSite", "name": "Example", "url": "https://example.com/",
     "publisher": {"@id": "https://example.com/#org"}}
  ]
}
```

### Values in the wrong format

Prices are numbers with no currency symbol, currencies are ISO 4217 codes, and dates are ISO 8601. A rating outside the scale is an error; if you rate out of 10, say so with `bestRating`.

```
// Broken
"price": "$1,299", "priceCurrency": "$", "startDate": "Oct 3, 2026 7pm",
"ratingValue": 8.5

// Fixed
"price": "1299.00", "priceCurrency": "USD", "startDate": "2026-10-03T19:00-05:00",
"ratingValue": 8.5, "bestRating": 10
```

Type names are case-sensitive too: `"@type": "product"` doesn't match `Product`. For more examples, read [structured data errors that kill rich results](https://www.blackseoanalyzer.com/en/blog/structured-data-errors-that-kill-rich-results).

## Schema added with JavaScript

Google [can read JSON-LD that JavaScript injects](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data), such as markup from a tag manager or a CMS widget, because it renders pages before indexing. Tools that read raw HTML, including this one, won't see it. If this tool finds nothing but you know your site adds schema, run the Rich Results Test, which renders the page. Server-rendered JSON-LD is still the safer choice: every crawler sees it, and it doesn't depend on a script loading.

## Checking structured data across a whole site

A validator checks one page. Schema usually comes from templates, so one broken template breaks thousands of pages at once. bseoa crawls your whole site from your own computer and flags every page whose [JSON-LD doesn't parse](https://www.blackseoanalyzer.com/en/technical-seo/structured-data-analyzer/invalid-json-ld), so you can find the template behind the error. Add `--spa` to render JavaScript before auditing:

```
black-seo-analyzer --url-to-begin-crawl https://example.com --spa --output-type csv --output-file crawl.csv
```

## Check every page, not just one

These tools look at one URL at a time. bseoa crawls your whole site on your own machine and checks every page for 300+ technical SEO issues across 16 analysis modules.

[Start the 14-day free trial](https://www.blackseoanalyzer.com/en/free-trial)

## More free SEO tools

- [Title & Meta Description Length Checker](https://www.blackseoanalyzer.com/en/tools/meta-description-length-checker)
Type or paste a title and meta description and see, as you type, whether Google or Bing will cut them off, measured in pixels rather than characters.

- [Robots.txt Tester](https://www.blackseoanalyzer.com/en/tools/robots-txt-tester)
Test whether a URL is allowed or blocked for Googlebot, Bingbot, GPTBot or any user agent, and see the exact rule that decided it.

- [XML Sitemap Checker](https://www.blackseoanalyzer.com/en/tools/xml-sitemap-checker)
Find a site's sitemap from its domain, then validate the XML, the URLs in it, lastmod dates and sitemap index files.

- [Hreflang Checker](https://www.blackseoanalyzer.com/en/tools/hreflang-checker)
Validate a page's hreflang annotations, then fetch each alternate to confirm it links back, returns 200 and isn't canonicalized elsewhere.

- [Canonical Tag Checker](https://www.blackseoanalyzer.com/en/tools/canonical-tag-checker)
See which URL a page declares as canonical, in HTML or HTTP headers, and whether that target actually resolves to an indexable page.

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.blackseoanalyzer.com/#organization","name":"Fiscus Technology, LLC","url":"https://www.blackseoanalyzer.com/","logo":"https://www.blackseoanalyzer.com/static/images/black-seo-analyzer.png"},{"@type":"WebSite","@id":"https://www.blackseoanalyzer.com/#website","name":"bseoa","url":"https://www.blackseoanalyzer.com/","publisher":{"@id":"https://www.blackseoanalyzer.com/#organization"}},{"@type":"WebApplication","@id":"https://www.blackseoanalyzer.com/en/tools/schema-markup-validator#app","name":"Schema Markup Validator","url":"https://www.blackseoanalyzer.com/en/tools/schema-markup-validator","description":"Paste JSON-LD or enter a URL. Get JSON syntax errors with line numbers and a check of the properties Google requires for rich results.","applicationCategory":"DeveloperApplication","operatingSystem":"Any (web browser)","isAccessibleForFree":true,"offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"publisher":{"@id":"https://www.blackseoanalyzer.com/#organization"}},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.blackseoanalyzer.com/"},{"@type":"ListItem","position":2,"name":"Free SEO Tools","item":"https://www.blackseoanalyzer.com/en/tools"},{"@type":"ListItem","position":3,"name":"Schema Markup Validator","item":"https://www.blackseoanalyzer.com/en/tools/schema-markup-validator"}]}]}
```
