schema.technology

What the validator checks, and what it doesn't

By Joel Maldonado, Neural Command, LLC · Last reviewed 21 October 2026

The validator parses each application/ld+json block, then checks JSON syntax, @context and @type, the required and recommended properties Google documents for about 20 common types, value formats (coordinates, times, dates, prices, URLs), @id consistency and references to @ids that are never defined. It doesn't fetch pages, run JavaScript, read Microdata or RDFa, or check every schema.org property.

Step by step

  1. Find the blocks. If you paste HTML, every <script> whose type contains ld+json is read. If you paste JSON that starts with { or [, it is treated as one block.
  2. Parse the JSON. Syntax errors are reported with a line and column where the browser gives one, plus hints for the usual causes: curly quotes, trailing commas, comments, single-quoted keys.
  3. Check @context. Every top-level object needs "@context": "https://schema.org" (http and a trailing slash are accepted).
  4. Collect nodes. Every object with an @type or @id, including items inside @graph and nested values, is checked. An object holding only an @id is treated as a reference to another node.
  5. Check @type. Missing types are errors. Type names are case-sensitive, so Localbusiness is flagged with the correct spelling.
  6. Apply Google's property rules for the most specific type that has one (a Dentist gets the LocalBusiness rules).
  7. Check @id. Relative identifiers, an @id identical to an organization's url, the same @id defined with conflicting types, names or URLs, organizations with the same url but different @ids, and references to @ids never defined.

Property rules and their sources

Type Required (error if missing) Extra checks Source
LocalBusiness and subtypes name, address address parts, phone country code, geo 5+ decimals, priceRange under 100 characters, self-serving review markup, menu/servesCuisine for food Local business
Organization and subtypes none (Google has no required properties) logo URL, address, self-serving review markup Organization
WebSite name, url retired SearchAction Site names
BreadcrumbList itemListElement; each item needs position, name, and item (except the last) positions run 1, 2, 3… Breadcrumb
Article, BlogPosting, NewsArticle none ISO 8601 dates with timezone, author as Person/Organization with url, one author per entry Article
Product name, plus one of offers, review or aggregateRating price is a number, availability value, priceValidUntil not in the past Product snippet
Review / AggregateRating author and reviewRating / ratingValue plus ratingCount or reviewCount rating within worst–best, itemReviewed when not nested Review snippet
Event name, startDate, location (with address) start time present, physical location Event
SoftwareApplication name, offers.price notes that Google's rich result also needs a real rating or review Software app
ProfilePage mainEntity Profile page
FAQPage, HowTo mainEntity / name and step notes that the Google rich results were retired Search Central updates

Person, Service, WebPage, PostalAddress, GeoCoordinates and OpeningHoursSpecification get basic schema.org checks. Missing recommended properties are warnings; for Organization they are notes, because Google says to add only the ones that apply.

Limits

Privacy

The validator and generator are static JavaScript files. They make no network requests with your input, set no cookies, and have no analytics.