Schema markup validator
Check the JSON-LD on a page, or paste code before it ships. You get syntax errors with line numbers, and each type checked against the properties Google documents for its rich result.
No account. No credits.
Beyond one URL
Audit every page on your site
This tool checks one URL. A site audit in IndexZero starts from your sitemap, follows robots.txt, and checks every page it reaches for 27 technical and on-page issue types. The free plan audits up to 50 pages per run, paid from its 2,000 monthly credits. No card needed.
What this validator checks
It reads every <script type="application/ld+json"> block in the HTML the server sends, parses each one, and reports JSON syntax errors with a line, a column and the offending text. Markup that JavaScript adds after the page loads is not in that HTML, so it won't appear here.
Every typed object in a valid block then gets two kinds of check. The generic ones catch a missing or non-schema.org @context, objects with no @type, empty strings, dates and durations that aren't ISO 8601, malformed URLs, and @id references to nodes the page never defines.
The Google checks compare each type against the required and recommended properties on its page in Google's search gallery: Article, Breadcrumb, Product snippet, Merchant listing, Review snippet, Organization, Local business, Event, Job posting, Recipe, Software app, Video, Course list, Profile page, Q&A and Discussion forum. Every finding links to the page it came from, and the rules were last read against those pages on 15 September 2026.
This is a fast first pass. Google's Rich Results Test is the authority on what Google can read, and the Schema.org validator checks markup against the whole schema.org vocabulary. Run both before you rely on a result.
What structured data does, and what it doesn't
Structured data makes a page eligible for a rich result. It doesn't earn one. Google's structured data guidelines say it directly: "Google does not guarantee that your structured data will show up in search results, even if your page is marked up correctly."
The same page draws the line between the two property lists this tool reports. "Items that are missing required properties are not eligible for rich results," so a missing required property is marked critical. Recommended properties improve the result ("the more recommended properties that you provide, the higher quality the result is to users"), so a missing one is a warning.
Google's introduction to structured data adds two cautions. Supplying fewer recommended properties that are complete and accurate is better than filling every field with badly formed data. And markup has to describe content the visitor can see: don't add structured data about information that isn't visible on the page.
JSON-LD, microdata and RDFa
Google Search reads all three formats. Its introduction to structured data recommends JSON-LD, calling it the easiest solution for website owners to implement and maintain at scale.
Microdata (itemscope, itemtype, itemprop) and RDFa (vocab, typeof, property) are attributes on the visible elements. This tool finds them and tells you how many items and which types it saw, but it validates JSON-LD only. If your page relies on microdata or RDFa, test it in the Rich Results Test.
Fixing the most common errors
The JSON doesn't parse
One syntax error makes the whole block unreadable as JSON. The usual causes are a comma after the last property, single quotes instead of double quotes, a raw line break or an unescaped double quote inside a text value, and two objects placed one after the other in a single script. Put several objects in an array, or list them under @graph. The error shows the line and column; fix that spot and check again, since the next error only shows once the first is gone.
A required property is missing
Add it, with a value that matches what's on the page. Some requirements are a choice. A product snippet needs a name plus at least one of review, aggregateRating or offers. A job posting needs jobLocation, or applicantLocationRequirements for a fully remote role, and any jobLocation must include addressCountry. A standalone Review or AggregateRating needs itemReviewed, but not when it's nested inside the item it rates.
Merchant listing requirements (a product image, and an offer with price and priceCurrency) only matter on pages where someone can buy the product. That's why they show as warnings here. A review page about a product can skip them.
Dates, durations and URLs
Google's docs ask for dates in ISO 8601: 2026-09-15, or 2026-09-15T19:30:00-05:00 when the time matters. An event's startDate should carry both date and time. Recipe and video durations use the ISO 8601 duration form, such as PT1H30M. URL properties should be absolute URLs starting with https://.
Types with no rich result
WebSite, WebPage, Person and many other types are valid schema.org with no rich result of their own in Google Search. The tool marks them as info. That isn't an error; there are simply no Google rich result properties to check.
FAQ and How-to markup
Neither is in Google's search gallery anymore. According to Google's documentation changelog, the How-to rich result and its documentation were removed on September 14, 2023, and the FAQ rich result stopped appearing in Google Search on May 7, 2026. The tool still parses FAQPage and HowTo blocks and runs the generic checks, then notes that the rich result is retired instead of reporting missing properties.
Checking pasted code over the API
Agents and scripts can call the same check. GET /api/tools/schema?url=https://example.com/page reads a live page. To check code that isn't published yet, POST to /api/tools/schema with a JSON body that has exactly one string field:
- { "html": "<!doctype html>..." } for a whole page or a fragment. Every JSON-LD script in it is checked. If the text starts with { or [, it is treated as JSON-LD.
- { "jsonld": "{\"@context\": \"https://schema.org\", ...}" } for a single block of raw JSON-LD, passed as a string so syntax errors can be reported.
Bodies over 1 MB are rejected with a 413. Anything else malformed returns a 400 with the error code invalid_request.
Both methods return the same JSON: source (the URL, final URL and status code, or the kind of pasted input), summary (block, node and finding counts, the types found and the Google features checked), blocks (for each block, either the parse error with line, column and excerpt, or the pretty-printed JSON and its nodes with requiredMissing, recommendedMissing and issues, each carrying the Google doc URL), otherFormats (microdata and RDFa counts and types) and authoritativeChecks (links to the Rich Results Test and the Schema.org validator).
More free tools
- robots.txt tester and AI crawler checkerFetch a site's robots.txt, check it for errors, and see whether Googlebot, GPTBot, ClaudeBot, PerplexityBot and other crawlers may fetch a given path.
- SEO checkerRun the on-page checks from IndexZero's site audit against one URL: titles, meta descriptions, headings, canonicals, indexability, redirects and response time.
- Meta tag checker and SERP previewRead a page's title, meta description, canonical, Open Graph and Twitter tags, and preview how the page may appear in Google results and link shares.
- SEO tool cost calculatorCompare the monthly cost of Ahrefs, Semrush and IndexZero for your number of sites and teammates, and whether you need AI visibility or agent access.