Pick a schema type, fill in the form, and copy the JSON-LD block into your page. The output updates live, is checked as valid JSON on every keystroke, and nothing you type is uploaded.
Behaviour note: an offers block is only emitted when the price is a valid number — an empty or non-numeric price raises a warning below and the offers block is left out, rather than publishing invalid markup.
Generate valid JSON-LD schema markup for FAQ, Article, LocalBusiness, Product, HowTo, Breadcrumbs, Organization and WebSite pages.
100% free · No sign-up · No daily limits · No watermarks · Processed in your browser — files never leave your device
Pick from eight schema types — FAQPage, Article, LocalBusiness, Product, HowTo, BreadcrumbList, Organization and WebSite — fill in a plain form, and copy ready-to-paste JSON-LD with live validation and required-field warnings.
A neighbourhood bakery adds FAQPage markup to its ordering page: “Do you deliver?” — “Yes, within 5 miles on orders over $25”, “Can I order a cake for the same day?” — “Order by 10 am…”. The generator emits a four-entity FAQPage block; pasted into the page and checked in the Rich Results Test, the questions become eligible to expand directly under the bakery’s search result, answering customers before they even click.
The generator assembles JSON-LD exactly as schema.org defines each type — @context and @type first, nested objects (acceptedAnswer, PostalAddress, GeoCoordinates, Offer, AggregateRating) built only from fields you actually filled in, never emitted empty. Positions in BreadcrumbList and HowTo steps are numbered by the tool, repeatable groups keep their on-screen order, and every keystroke re-serialises and re-parses the result, so the block you copy is guaranteed to be valid JSON. Documented choice: a Product offers block is only emitted when the price is a valid number — an empty or non-numeric price raises a warning and leaves offers out rather than publishing markup Google would reject.
Match the type to what the page visibly is: a page with questions and answers takes FAQPage, a product page takes Product, a how-to article takes HowTo, a local business’s contact or home page takes LocalBusiness, and almost every site benefits from Organization and BreadcrumbList. Using a type the page does not match — Product on a blog post, say — is worse than no markup.
Anywhere in the page’s HTML — in the <head> or just before </body> are the conventional spots. In WordPress, use your SEO plugin’s custom schema field or a reusable block; in a hand-built site, paste it straight into the template. One block per type per page is fine, and several types can coexist on one page.
By design: an Offer without a valid numeric price is invalid markup that Google would flag or ignore, so the tool warns you and omits the offers block until a real price is entered. The rest of the Product (name, brand, SKU, rating) still generates normally.
Not directly — it is not a ranking factor. What it does is make your existing content eligible for richer presentation (stars, prices, FAQ expansions, breadcrumb trails instead of bare URLs), which can raise click-through from the position you already hold, and it removes ambiguity for search engines and AI assistants reading the page.
Use the “Test in Google Rich Results Test” link under the output: paste your live URL (or the code snippet) and Google reports which enhancements it detected and any errors in the values — things a JSON validator cannot judge, like an implausible date or a rating out of range.
Yes — generate each type here separately and paste both blocks, or combine them in one script using an @graph array. Common pairings: Article + BreadcrumbList on a blog post, LocalBusiness + WebSite on a small business homepage.
What is missing, broken, or could be better on this tool? Tell us — we read every suggestion.
✅ Thanks — your suggestion has been received. Suggestions like yours shape what we build next.