Skip to content
Free SEO tool

Free Schema Markup Generator

Answer four questions about a page and get ready-to-paste JSON-LD for every schema type that applies to it.

Four steps: page type, signals, details, output. "Copy all as @graph" gives one block for the whole page.

What this tool does

This free schema markup generator builds JSON-LD structured data for any page type: articles, service pages, products, homepages, local businesses, people, events, courses, recipes and support pages. Instead of starting from a blank form, it asks what the page is and what is on it, then recommends the schema types that fit and writes the code for each, with a one-line note on why it applies.

Fill in your details for a finished block, or leave them blank for labelled placeholders you edit after pasting. Copy each type on its own or export everything as a single @graph. Schema markup, also called structured data, is a machine-readable description of a page in the Schema.org vocabulary; JSON-LD is the script-tag format Google recommends for it. I built the generator for marketers who know a page needs markup but not which types, and for developers who want a clean starting point. No login, no usage limit, and nothing you type leaves your browser.

Four steps to finished markup

  1. Pick the page type

    Ten options: Blog or Article, Service Page, Product Page, Homepage, Local Business, Person or Bio, Event, Course or Training, Recipe, and FAQ or Support. This sets the primary type.

  2. Tick what is on the page

    Up to nine signals, filtered to your page type: Q&A content, a named author, reviews, video, step-by-step instructions, breadcrumbs, an address, a price or booking offer, and whether the page represents a brand.

  3. Add your details

    Optional fields for the properties each type needs. Anything left blank becomes a labelled placeholder such as "Author Name" that you replace after pasting.

  4. Generate, read the reasons, copy

    Every recommended type appears with a sentence on why it applies, an expandable JSON-LD block and a copy button. "Copy all as @graph" merges every block into one array under a single @context.

What the generator outputs

Sixteen schema types: ten chosen by page type, one per page, and six added by the signals you tick. Every block carries the core properties Google documents for that type.

  • Chosen by page type
  • ArticleBlog posts and editorial: headline, dates, author, publisher, description, URL.
  • ServiceA page selling one service: name, description, provider, area served.
  • ProductA product page: name, brand and an Offer with price, currency and availability.
  • WebSiteThe homepage only: site name, URL and a SearchAction for the sitelinks search box.
  • LocalBusinessA business with a premises: address, telephone, URL, empty opening hours to complete.
  • PersonAuthor bios and about pages: name, job title, URL, sameAs, worksFor.
  • EventAnything with a date and venue: start and end datetimes, Place, organiser.
  • CourseTraining pages: name, description, provider, URL.
  • RecipeRecipe pages: author, ISO 8601 prep and cook times, yield, ingredients, steps.
  • FAQPageDedicated FAQ or support pages: Question and acceptedAnswer pairs.
  • Added by the signals you tick
  • FAQPageAny other page with a Q&A section.
  • Person (Author)Articles and courses with a named author: name, author URL, sameAs.
  • AggregateRatingPages showing reviews: rating value and count. Nest it inside the thing it rates.
  • VideoObjectAn embedded video: name, description, thumbnail, upload date, duration, URLs.
  • HowToStep-by-step guides. Valid vocabulary, though Google withdrew HowTo rich results in 2023.
  • BreadcrumbListPages with breadcrumb navigation: three ListItem levels.
  • OrganizationPages representing a brand: name, URL, logo, sameAs. Homepage and about page only.
  • OfferNon-product pages with a price or booking call to action. Nest it in the Service or Event.

How to add the markup to your site

On any site

Paste the code inside a script tag of type application/ld+json. The head is conventional, but Google reads JSON-LD from the body too, which is how this page carries its own. One script per type or one @graph, never the same type twice. Most validation errors come from relative URLs, non-ISO dates and values that describe nothing visible on the page.

<script type="application/ld+json"> { "@context": "https://schema.org", "@graph": [ ... ] } </script>

On Shopify

Site-wide types (Organization, WebSite) go in theme.liquid before the closing head tag. Page-level types go in the page, product or article itself: switch the editor to HTML view and paste into the body, or add a Custom Liquid section. Check the page source first: most themes and several review apps already output Product, Offer, AggregateRating and BreadcrumbList, and a second Product block is a duplicate. My Shopify schema markup guide covers the theme-specific detail.

On WordPress

The main SEO plugins carry a custom schema field per post; paste the block there. Without one, use a header-and-footer scripts plugin, or a Custom HTML block for a single post. Check what the plugin already outputs first.

Validate before and after publishing

  • Google's Rich Results Test. Paste the code or the live URL. It reports the rich result types it detects and any missing required or recommended properties, but only for types Google renders, so a correct Service or Person block returns "no items detected".
  • The Schema Markup Validator. Schema.org's own checker parses any type in the vocabulary and flags syntax errors, unknown properties and wrong value types.
  • Search Console after indexing. The Enhancements reports list errors by type across the site and catch regressions after a theme update.

What this generator does not do

  • It does not crawl your page or read existing markup, so it cannot see what is already there.
  • It does not guarantee rich results. Eligibility depends on Google's per-type guidelines and on markup matching visible content, and FAQ and HowTo rich results have been withdrawn for most sites since 2023.
  • It does not output every property. Product has no sku, gtin, image or review; LocalBusiness ships with empty opening hours. Add them from the type's documentation.
  • It does not nest. AggregateRating and Offer arrive as standalone blocks; move them inside the parent object by hand.
  • It does not cover every type: no JobPosting, SoftwareApplication, Review or ItemList.

Questions about the generator

What is the difference between schema markup, structured data and JSON-LD?

Structured data is the idea: describing a page in a format machines can read. Schema markup is structured data in the Schema.org vocabulary. JSON-LD is one of three ways to write it and the one Google recommends, because it sits in a single script tag.

Should I paste the blocks separately or as one @graph?

Either validates. I use @graph for three or more types: one @context, explicit relationships between nodes and one script tag to maintain.

Will adding schema markup get me rich results?

Only for the types Google renders, only with the required properties present, and only when Google decides the page merits it. Valid markup makes a page eligible; it does not force the feature. Service and Person have no visual result but still tell search engines and AI systems what the page is and who wrote it.

Can I put more than one type on a page?

Yes, and most pages need it: a service page with a Q&A section and breadcrumbs wants Service, FAQPage and BreadcrumbList. Avoid two blocks of the same type describing the same thing.

Does the generator store anything I type?

No. It runs entirely in your browser; nothing is sent, saved or attached to a form. The only output is what you copy to your clipboard.

Markup is one layer

The structured data guide is the long version of this page. The tools hub has the rest of my free checkers.

Already have markup and no rich results? A technical SEO audit checks every page for missing properties, duplicates and validation errors.