Skip to content
tools.best

Browse all tools

Schema Markup Generator

Pick a type, fill in the form and copy schema.org markup as a JSON-LD script block for a local business, product, article, event or FAQ page.

Runs in your browser. Nothing you enter is sent to a server. Sources: Schema.org, Google Search Central Updated

Schema.org is a shared vocabulary for describing things on a web page: a business, a product, an article, an event. JSON-LD is one way to write it, as a block of JSON inside a <script type="application/ld+json"> tag, separate from the visible text.

Google recommends JSON-LD among the formats it supports. This tool writes that block for five common types.

Required properties for each schema type

TypeThis tool asks for at leastWhat Google's documentation says
LocalBusinessName, street address, cityRequires name and address, and asks for as many address parts as possible. Recommends telephone, url and opening hours among others.
ProductName, price, currencyRequires name and one of review, aggregateRating or offers. Inside an offer, price is required; currency and availability are recommended.
ArticleHeadlineNo required properties. Recommends author, datePublished, dateModified, headline and image.
EventName, start date, street address, cityRequires name, startDate, location and location.address. Events with no physical location are not supported.
FAQPageOne question with its answerThe FAQ rich result is no longer shown: it stopped appearing on 7 May 2026 and its documentation was removed in June 2026.

The middle column is this tool's own rule for when it will write the block. The right column summarizes Google's pages listed under Sources, as read on 12 October 2026.

Google changes these requirements from time to time, so check the linked page for the type you use.

Product schema markup example

Choose "Product". Enter the name Wireless Mouse, the price 29.99, the currency USD, set availability to "In stock" and press "Generate markup". The result is:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Wireless Mouse",
  "offers": {
    "@type": "Offer",
    "price": "29.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}
</script>

You typed three flat values, but price, currency and availability do not belong to the product itself. In schema.org they describe an offer to sell it, so the tool puts them inside an offers object of type Offer.

JSON-LD from the schema markup generator for the product example: a Product named Wireless Mouse with an offers object of type Offer that holds the price 29.99, priceCurrency USD and availability InStock.
Price, currency and availability describe the offer, so they sit one level down from the product.

How the schema markup generator nests your answers

  • Address fields of a business go into address, an object of type PostalAddress. For an event the same object sits inside location, an object of type Place that also holds the venue name.
  • Brand becomes an object of type Brand with a name.
  • Author becomes a Person or an Organization, whichever you select, with a name and, if you give one, a url. Publisher becomes an Organization.
  • Questions and answers become a mainEntity list of Question objects, each with an acceptedAnswer of type Answer.
  • Opening hours use the schema.org openingHours text format: two-letter days (Mo, Tu, We, Th, Fr, Sa, Su) and 24-hour times, for example Mo-Fr 09:00-17:00. Two or more entries separated by semicolons are written as a list. Google's local business page describes a different property, openingHoursSpecification, which this tool does not write.
  • Empty optional fields are left out of the output. An event end time without an end date is taken to be on the start date.
  • A < in your text is written as <. That is the same character in JSON, and it stops text such as </script> inside an answer from ending the block early.

Event dates and time zones

A start date alone is written as 2026-11-20. With a start time it becomes 2026-11-20T19:30:00, and with a UTC offset 2026-11-20T19:30:00+01:00. The tool writes the time you type and does not convert it to another time zone.

Enter the local time at the venue. Google's event documentation says that when no offset is given it uses the time zone of the event's location, and that you should leave the time out if it is not known yet.

How to test schema markup before you publish

The tool checks that the fields it needs are filled in, that URLs are complete, that the price is a number and the currency code has three letters. It cannot check that what you typed is true. Google's guidelines ask that the markup matches what visitors see on the page.

After pasting the block, test the page with Google's Rich Results Test, which reports the Google features a page is eligible for, or with the Schema Markup Validator, which checks any schema.org markup.

A few tools help with the values themselves. Capitalize My Title sets the capitals of an article headline, the letter counter checks the length of a description, and the URL encoder escapes spaces and accented letters in a link before it goes into a url field.

Schema Markup Generator: FAQ

Where do I put the generated code?
Paste the whole block, including the opening and closing script tags, into the HTML of the page it describes. Google's documentation says a JSON-LD script can sit in the head or in the body of the page. Put it only on the page that shows the same information to visitors.
Will this markup give my page a rich result in Google?
It makes the page eligible for the features Google still supports; it does not force them. Google's structured data guidelines state that marking up a page is no guarantee that a feature will be shown, and that markup must describe content visible to readers of the page.
Is FAQ markup still worth adding?
Not for Google's FAQ rich result. Google's documentation changelog says the feature stopped appearing in Google Search on 7 May 2026, and the FAQ documentation was removed in June 2026. FAQPage is still a valid schema.org type, so the markup is not wrong and other software may read it. This page has not checked which other services use it.
Why is the price written in quotes?
The tool keeps the price exactly as you typed it, so 29.90 does not turn into 29.9. Google's product documentation accepts the price as text or as a number. Use a dot for decimals and no currency sign; the currency goes in its own field as a three-letter code.
Can I use a more specific business type than LocalBusiness?
Yes, and Google recommends it: use the most specific subtype that fits, such as Restaurant, DaySpa or HealthClub. The tool always writes LocalBusiness. Change the value of @type in the output by hand, and check the name against the list on schema.org.

Sources