Webmaster Bench

Tools / JSON-LD Structured Data Checker

JSON-LD Structured Data Checker

Paste a JSON-LD block, or a whole page's HTML with <script type="application/ld+json"> blocks. Get syntax errors with line numbers and a property check for each schema.org type Google uses for rich results.

What it checks

  1. JSON syntax, with the line and column of the first error. Trailing commas, single quotes, comments and unescaped quotes inside strings are the usual culprits; any of them makes the whole block invisible to search engines.
  2. @context is schema.org.
  3. Every object with an @type, including nested ones and those inside @graph, against the required and recommended properties in Google's Search Central documentation for that rich-result type.
  4. Value formats: ISO 8601 dates, plain numeric prices, 3-letter currency codes, ratings within their scale, absolute URLs, breadcrumb positions in order.

This is a fast first pass that runs offline. It does not render your page, so it cannot see markup that JavaScript adds later, and it does not cover every type or every policy (for example, review markup must describe content visible on the page). Before relying on a rich result, also run Google's Rich Results Test on the live URL.

Types covered

TypeGoogle requiresNotes
Productname, and one of offers, review, aggregateRatingOffer needs price (a plain number) and should have priceCurrency.
Article, NewsArticle, BlogPostingnothingheadline, image, datePublished, dateModified, author recommended.
BreadcrumbListitemListElement of ListItems with positionEach crumb except the last needs item (its URL).
Eventname, startDate, location
JobPostingtitle, description, datePosted, hiringOrganization, jobLocationFully remote jobs use jobLocationType: TELECOMMUTE plus applicantLocationRequirements.
Recipename, image
SoftwareApplicationname, offers, and aggregateRating or reviewRatings must be real reviews of the app.
VideoObjectname, thumbnailUrl, uploadDate
LocalBusinessname, address
FAQPagemainEntity of Questions with acceptedAnswerSince August 2023 shown only for well-known government and health sites.
HowToRich results discontinued in September 2023.

Worked example

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Blue Widget",
  "image": "https://acme.example/img/blue.jpg",
  "offers": {
    "@type": "Offer",
    "price": "19.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}

Valid. Writing "price": "$19.99" or "price": "19,99" would fail: the currency goes in priceCurrency, and the price uses a dot as the decimal separator whatever your locale.

Common mistakes

  • Markup that does not match the page. Ratings, prices and FAQs in JSON-LD must be visible to visitors. Hidden or invented values break Google's structured data policies and can lead to a manual action.
  • Several disconnected blocks describing the same thing with different values (often from two plugins).
  • Dates without time zones for events and jobs; add an offset such as +01:00.
  • Relative URLs in image, url or item.

Sources

Last reviewed 2026-11-15. Your input is processed only in your browser and never sent to us.