Schema markup — formally called structured data — is the invisible layer of meaning beneath a web page. Search engines like Google read your HTML content but cannot always infer context: is this number a price, a rating or a phone number? Is this list of steps a recipe or a how-to guide? Schema markup answers those questions precisely using a shared vocabulary defined at schema.org, and it does so without changing anything your visitors see.
This generator lets you produce valid JSON-LD structured data for 15 popular schema.org types entirely in your browser. Fill in the labelled fields, get clean JSON-LD output, and paste the script tag directly into your page’s <head>. No accounts, no uploads, no tracking.
How it works
The tool exposes a form tailored to whichever schema.org type you select. Every field maps to one or more official schema.org properties. When you complete all required fields the JSON-LD is assembled in real time and displayed in the output panel. Toggling “Wrap in script tag” adds the surrounding HTML so you can paste it straight into your source.
The generated markup follows three rules that Google enforces for rich results:
- The
@contextkey is always"https://schema.org"— the namespace that tells parsers which vocabulary you are using. - The
@typekey matches the exact schema.org class name —Article,Product,FAQPage, and so on. - Required properties for rich-result eligibility are surfaced as mandatory fields — the generator will not produce output until they are filled, so you cannot accidentally submit a schema missing a property Google considers essential.
Supported schema types
| Type | Common use case |
|---|---|
| Article / Blog Post | News, editorial and blog content |
| Breadcrumb List | Navigation path shown in the URL in SERPs |
| Event | Concerts, conferences, sports fixtures |
| FAQ Page | Expandable Q&A panels below your search result |
| How-To | Numbered instructions with optional cost and time |
| Job Posting | Listings that appear in Google Jobs |
| Local Business | Map pack integration, opening hours, contact details |
| Organisation | Brand knowledge panel, sameAs social links |
| Person | Author bio, expert attribution |
| Product | Price, availability, ratings below shopping results |
| Recipe | Cooking time, calories, ingredient cards |
| Review | Star ratings for hotels, books, products, places |
| Video | Thumbnail and duration in video search results |
| Website | Sitelinks search box for your domain |
Worked example: FAQ schema
Suppose you have a support page with three common questions. Select FAQ Page from the dropdown, then enter your questions and answers in the multi-line field using the Q: / A: convention:
Q: How long does delivery take?
A: Standard UK delivery takes 3-5 working days.
Q: Can I return an item?
A: Yes, within 30 days for a full refund.
Q: Do you ship internationally?
A: We ship to 40 countries; select your country at checkout.
The generator produces:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How long does delivery take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Standard UK delivery takes 3-5 working days."
}
}
]
}
When Google indexes this page, the three questions may appear as expandable panels directly beneath your result in the SERP — extra visible real estate at zero extra cost.
Formula note: how the JSON-LD is built
Each schema type has a mapping function that converts your field inputs into the nested object structure schema.org specifies. Key patterns used across types:
- Nested entities: an
authorstring becomes{ "@type": "Person", "name": "..." }— schema.org requires entities rather than bare strings for names of people, organisations and brands. - Schema.org URL prefixes: availability, condition, event status and attendance mode values are prefixed with
https://schema.org/as the spec requires (e.g."https://schema.org/InStock"). - ISO 8601 durations: recipe and how-to times use the format
PT2H30M(2 hours 30 minutes) —Pstarts the period,Tseparates date from time components,H/M/Sare hours/minutes/seconds. - Monetary values: salary and cost fields wrap in a
MonetaryAmountwith separatecurrencyandvaluekeys so parsers can display localised formatting. - Optional fields are omitted when empty rather than set to empty strings, keeping the output concise and avoiding schema validation warnings.