Schema Markup Generator and Validator

Build JSON-LD for ten named types, or paste a block and check its context, type, identifiers, addresses and dates.

Inputs stay on your device No sign-up Free to use
How this works

The tool runs in this browser. Your file or text is not uploaded to UseFreeTools. Check this tool's limits for anything it may save on your device.

Privacy details

Build or validate schema controls

What to do

Build writes markup from the fields below. Check reads JSON-LD you paste.

Used by Build. Properties that do not fit the chosen type are left out of the result.

A number such as 19 or 19.99. A currency symbol is refused, because the currency has its own field.

Used by Check. Paste a whole @graph block, an array, or one object.

More options

Processed in your browser. Your inputs stay on this device.

Showing a generated example. Generate again for a new result.

How to use Schema Markup Generator and Validator

  1. Choose Build markup, pick a type and fill in the name and the address, which every type needs.
  2. Add the properties that fit the type, such as an author and publisher for an article, an address for a business, a price for a product, or a start date and place for an event.
  3. Select Build or validate schema, then copy the script block or download the JSON file.
  4. To check a block you already have, choose Check pasted JSON-LD, paste the whole thing and read the problems and the notes.

Example: Schema Markup Generator and Validator

Build an Article block for a guide page and then check the same block for structural problems.

You add
Type Article, name How to read a JSON-LD file, address https://example.com/guides/json-ld, description A short guide to reading a JSON-LD block, image https://example.com/images/json-ld.png, author Ada Lovelace, publisher Example Publishing, published 2026-09-29.
You get
A script block wrapping an Article node with seven properties: headline, url, description, image, datePublished and the nested author and publisher objects. Checking the same JSON reports 3 nodes and 0 problems, because the author and publisher count as nodes of their own.

Options

Type to build
Ten types are offered: Article, BlogPosting, WebSite, WebPage, Organization, LocalBusiness, Person, Product, Event and SoftwareApplication. Only the properties that fit the chosen type are written, so a field you filled in for another type is quietly left out rather than copied into the wrong place.
JSON-LD to check
The check accepts one object, an array of objects, or an object with a @graph list. It reads names, identifiers, address-looking values, dates and prices anywhere in the document, up to eight levels deep.

Supported inputs and limits

A build reads up to 5,000 characters per property and needs a name and an address; an address may be a full http or https address or a path such as /about. The check reads up to 500,000 characters, 500 nodes and eight levels of nesting, and it reports a type it does not recognise as a note rather than a problem. This is a shape check: it does not confirm that a page carries the block, that the properties match what is on the page, or that a search engine will show a rich result. Search engines decide that from the page, their own policies and data this file does not hold. Nothing here opens the addresses in the markup.

Where your input is processed

This tool processes your input in this browser. Your text and files are not uploaded to UseFreeTools. Check this tool's limits for anything it may save on your device.

Reading a JSON-LD block before you trust it

JSON-LD is a plain JSON document, which makes it easy to read and easy to get subtly wrong. The parts worth checking first are the context, which says the terms come from schema.org; the type, which says what the node describes; and the properties, which must describe the page the block sits on rather than a page you wish it were. A block that names a price the page does not show, a rating with nothing behind it or a business address that is out of date is worse than no markup, because it states something untrue in a form a machine reads. Build the block from the page, keep the values in the page's own currency and wording, and test the published page again after it is indexed.

schema.org: the vocabulary these types come from

Google Search Central: structured data general guidelines

W3C: JSON-LD 1.1 syntax

Questions about Schema Markup Generator and Validator

Which type should I pick?

Pick the type that matches what the page is about. An article or blog post takes Article or BlogPosting, a company or shop takes Organization or LocalBusiness, a product page takes Product, a dated gathering takes Event, and a site or a single page takes WebSite or WebPage. When two types seem to fit, build the one that describes the page's main subject, because a reader is looking for one clear statement of what the page is.

Does valid JSON-LD mean I get a rich result?

No. This check reads the shape of the file, and a rich result also depends on what the page shows, on the rules the search engine applies to that type, and on data the markup does not carry. Use it to remove structural mistakes before you test the live page with the search engine's own tool.

Why does the check call my type unknown?

The checker recognises a fixed list of common types and reports anything outside it as a note, then still runs the generic checks for missing context, missing type, duplicate identifiers, addresses, dates and prices. Your type may be perfectly valid and simply outside the list this page carries.

Can I build a BreadcrumbList or an FAQPage here?

Not with the generator, because those types are built from a list of entries and this form writes one node at a time. The checker does read them, so paste a BreadcrumbList, FAQPage or HowTo block you already have to see whether its parts hold together.

Is my markup sent anywhere?

No. The block is built and checked in this browser, and the download is created from the text on this page. Nothing is uploaded, and none of the addresses in the markup are opened or tested.

Project manager: Tony Hines · Content updated 29 September 2026 · Report a problem