JSON-LD Schema Generator
Add product schema to a page and check it
Build valid JSON-LD schema markup for 22 schema.org types (FAQPage, Product, LocalBusiness, HowTo, and more). Live pretty-printed JSON, a client-side linter, copy JSON or a full script tag, download .json, and a Google Rich Results Test link. Nothing is uploaded.
This document also embeds its own FAQPage JSON-LD (≥6 Q&As) in the head; the tool below generates a second, user-controlled JSON-LD blob.
Generator
Pretty-printed JSON for <script type="application/ld+json">. This is the generated markup — separate from this page’s own FAQ schema in the document head. Empty optional fields are omitted.
The ?url= link only works on a publicly crawlable HTTPS page. If the page is not publicly crawlable — paste the generated JSON-LD into Google’s Code tab instead of URL mode. Local or unpublished pages should paste code. This tool does not call Google’s API.
Live validator
Client-side lint only: JSON parse, @context, @type, and recommended schema.org / rich-result fields. Not Google’s Rich Results Test and not a live crawl of your HTML.
How to use JSON-LD (and where to paste it)
Choose a schema.org type, replace the example fields with your content, and watch the live JSON update. The validator flags missing @context/@type and recommended properties. When the preview looks right, copy the JSON or the full script tag.
- Pick a type (start with FAQPage, Product, LocalBusiness, or HowTo if you want a common Google rich result).
- Fill required-ish properties. Empty optional fields are omitted from the JSON. Repeatable rows (FAQ questions, HowTo steps, breadcrumbs) can be added or removed.
- Copy JSON, copy the full <script type="application/ld+json"> tag, or download a .json file.
- Paste the script tag in your HTML <head> or just before </body>. Search engines read both.
- CMS shortcuts: WordPress — Yoast/Rank Math custom schema or a Custom HTML block. Shopify — theme.liquid head or a section. Webflow — Page Settings → Custom Code → Head. Next.js — a raw script in the document head (not a React-escaped string).
- On a public URL, open Google Rich Results Test. For local files, use that tool’s Code view and paste — Google cannot fetch unpublished pages.
Do not wrap JSON-LD in <pre>, Markdown fences, or HTML comments. One graph per script tag is easiest; multiple script tags on one page are allowed. Keep visible content consistent with the markup — Google may ignore or penalize mismatch. This generator does not scrape your live HTML; you are responsible for matching on-page copy.
22 schema.org types in this generator
Each type emits valid example JSON-LD with @context: https://schema.org. Nested objects use the matching schema.org subtypes (Question/Answer, Offer, PostalAddress, HowToStep, ListItem, Person, Organization, SearchAction, and so on). Recommended-field warnings follow Google’s common rich-result properties, not a full SHACL shape.
| Type | Typical use | Recommended fields this linter watches |
|---|---|---|
FAQPage | Author-written Q&A on the page | mainEntity (≥1 Question with acceptedAnswer) |
Product | Product snippets / merchant listings | name, image, offers.price, offers.priceCurrency, offers.availability |
LocalBusiness | NAP + map pack style entities | name, address, telephone, image |
HowTo | Step-by-step guides | name, step |
Article | News / explainer pages | headline, image, datePublished, author |
BlogPosting | Blog posts (Article subtype) | same as Article |
Organization | Publisher / company entity | name, url, logo |
Person | Author / profile | name |
WebSite | Sitename + sitelinks search box | name, url |
BreadcrumbList | Breadcrumb rich result | itemListElement (≥2 ListItem) |
Event | Event listings | name, startDate, location |
Recipe | Recipe cards | name, image, recipeIngredient, recipeInstructions |
JobPosting | Job listings | title, description, datePosted, hiringOrganization, jobLocation |
Review | A single review of an item | itemReviewed, reviewRating, author |
SoftwareApplication | App / software listing | name, offers |
Course | Course listing | name, description, provider |
VideoObject | Video result | name, description, thumbnailUrl, uploadDate |
ItemList | Ranked / carousel lists | itemListElement |
Service | Service offering | name, provider |
Offer | Standalone offer / price | price, priceCurrency, availability, url |
QAPage | Community Q&A (not author FAQ) | mainEntity Question with acceptedAnswer |
SpeakableSpecification | Speakable / audio content (wrapped in WebPage) | speakable.cssSelector or xpath |
Use FAQPage for questions you wrote yourself. Use QAPage only when the page is a public Q&A thread where other people can answer. Mixing them is a common reason Google ignores the markup.
Questions people ask
Grounded in community-typical questions (forums / practitioner threads). Not invented search volumes.
Will JSON-LD improve my Google rankings?
Structured data helps machines understand entities; it does not guarantee rankings or rich results. Community SEO consensus matches that honesty line.
Where do I paste the script tag?
In the page head or before