What does this schema markup tool check?
This tool is a JSON-LD checker, not a form-based generator. You paste a block of schema.org structured data and it tells you whether the JSON parses, whether @context and @type are set, and which of Google's required and recommended properties are present for ten common types. It's a fast first pass before Google's own testing tools.
Google recommends JSON-LD as the format for structured data where your setup allows it (introduction to structured data), and that's the only format this tool reads. Microdata and RDFa inside HTML aren't parsed.
The checks, in the order they run
- Parse. The text must be valid JSON. If not, you see
Enter valid JSON-LD.with no further detail, so a trailing comma or a single-quoted string is enough to fail. The JSON validator will point to the exact position. - Split into items. A single object is one item. A top-level array is checked element by element, and an object with an
@grapharray is checked node by node. - Context.
@contextmust mentionschema.org. Plain strings (https://schema.orgorhttp://schema.org), object contexts such as{"@vocab": "https://schema.org/"}and array contexts all pass. Nodes inside@graphinherit the outer context. - Type. Each item needs an
@type, otherwise you getMissing "@type".A type array like["Product", "Thing"]is matched against the first type that has a checklist. - Checklist. For the ten types below, the tool lists missing required properties, then missing recommended ones. A property counts as missing when it's absent, null, an empty string or an empty array. Other types stop after step 4 with a note that only
@contextand@typewere checked.
With one item the output is just that item's report. With several, each report starts with a label such as Item 2 of 3, and an item that fails the context or type check gets a one-line message instead of stopping the whole run.
The checklist and where it comes from
Every list follows the feature pages in Google Search Central's structured data gallery. The recommended column is a short selection of the top-level properties Google recommends; each linked page has the full list.
@type |
Required by Google | Recommended (checked) |
|---|---|---|
| Article, NewsArticle, BlogPosting | None (Article) | headline, image, author, datePublished, dateModified |
| Product | name, plus one of offers, review or aggregateRating (product snippets) | None checked |
| Organization | None (Organization) | name, url, logo |
| LocalBusiness | name, address (local business) | url, telephone, geo, openingHoursSpecification |
| Person | name, or alternateName in its place (profile page) | None checked |
| Event | name, startDate, location (Event) | description, endDate, eventStatus, image, offers, organizer, performer |
| Recipe | name, image (Recipe) | author, datePublished, description, recipeIngredient, recipeInstructions, totalTime, recipeYield |
| FAQPage | mainEntity (rich result discontinued in 2026, see Search Central updates) | None checked |
Google's Person requirements come from the profile page feature, where a Person is the page's main entity; there's no standalone Person rich result. For types with no required properties, the tool says so (Required properties: none) and reports only the recommended list.
Example: an event with no venue
Pasting this:
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Lisbon JS Meetup",
"startDate": "2026-11-19T18:30:00+00:00"
}
returns:
Type: Event
Missing required properties: location.
Missing recommended properties: description, endDate, eventStatus, image, offers, organizer, performer.
Add a location object with "@type": "Place", a venue name and a PostalAddress, and the second line changes to Required properties: all present (name, startDate, location). The recommended line stays until you add those properties too; they improve the result but don't decide eligibility.
Example: an @graph with two nodes
Many CMS plugins emit one script with an @graph. For a graph holding an Organization with name, url and logo, and a Product with only a name and description, the output is:
Item 1 of 2
Type: Organization
Required properties: none (Google lists no required properties for Organization).
Recommended properties: all present (name, url, logo).
Item 2 of 2
Type: Product
Missing required properties: one of offers/review/aggregateRating.
What it can't tell you
Presence is all it tests. A datePublished of "not a date" passes, and an empty author object passes. Nested objects aren't inspected, so it won't notice that your Event's location has no address, and it doesn't follow @id references between graph nodes. Subtypes such as Restaurant or Store aren't mapped to the LocalBusiness checklist, so give them a type array like ["Restaurant", "LocalBusiness"] if you want them checked here.
It also can't see your page. Google's structured data guidelines say not to mark up content that isn't visible to readers, and that Google does not guarantee structured data will appear in results. Only a human comparing markup to the page catches a review score or price the page doesn't show.
Where to go after a pass
Use Google's Rich Results Test to see which Google features the markup qualifies for, and the Schema Markup Validator to check it against the full schema.org vocabulary. To tidy a long block before pasting, run it through the JSON formatter or edit it in the online JSON editor. Structured data works alongside, not instead of, the basic title and description tags from the meta tag generator.
Everything runs in your browser; the JSON you paste isn't uploaded.
Last updated