Schema Markup Generator
Build JSON-LD with nine schema forms, import existing markup, and edit linked graph nodes.
Imported properties and unsupported types are preserved in the output. Fields outside this form remain unchanged.
News article, blog post, or editorial content.
This field is required.
This field is required.
This field is required.
Has errors
Review fields: Headline, Description, Author Name, Date Published
Generated JSON-LD
{
"@context": "https://schema.org",
"@type": "Article"
}Add this code inside a <script type="application/ld+json"> tag in your page's <head> section.
Runs locally in your browser. Nothing is uploaded or sent to a server.
Choose a type under Schema Type, enter the matching content fields, and review Generated JSON-LD as it updates. For a product, enter Product Name and Description, then add Price, Currency, and Availability when applicable. Click Copy or Download JSON-LD to export the markup for your page. The nine forms also cover articles, FAQs, instructions, businesses, organizations, people, events, and breadcrumbs.
Updated
Related Tools
UTM Builder
Build bulk campaign links with nine UTM fields, reusable JSON templates, and a GA4 channel pre-check.
seo-toolsReadability Checker
Compare six readability formulas and find long sentences in pasted text or a local .txt file.
seo-toolsKeyword Density Checker
Count target keywords, inspect repeated phrases up to 20 words, and compare two pasted texts.
seo-toolsMeta Tag Generator
Import existing HTML, preview search and social cards, and export tags or a metadata object.
How do you generate JSON-LD Product schema with an offer?
Select Product under Schema Type, enter Product Name and Description, and review the JSON-LD preview. For a worked example, use “Stoneware mug” and “A 350 ml glazed stoneware mug”, then enter 29.95 for Price, USD for Currency, and InStock for Availability. These values describe a product and its offer; the generator does not calculate a price or retrieve stock information.
| UI field | Example value | Output property and value |
|---|---|---|
| Product Name | Stoneware mug | name: "Stoneware mug" |
| Price | 29.95 | offers.price: "29.95" |
| Currency | USD | offers.priceCurrency: "USD" |
| Availability | InStock | offers.availability: "https://schema.org/InStock" |
The offer has @type: "Offer". Price is serialized as the text you enter, so 29.95 becomes a JSON string rather than a number. Enter a decimal amount without a currency symbol. The Availability selector has four options: InStock, OutOfStock, PreOrder, and Discontinued. A new Product creates an offer when at least one of Price, Currency, or Availability is filled; leaving all three empty does not add an offer.
Brand Name becomes a nested Brand object, while SKU remains a product property. Rating (0–5) and Review Count populate AggregateRating when provided. Use actual published review data and leave those fields empty when you have none. Despite the rating label, the current numeric check only enforces nonnegative numbers: it does not enforce a maximum of 5 or require Review Count to be an integer.
Which structured data types can you build?
The nine forms are Article, FAQ Page, How To, Local Business, Product, Organization, Person, Event, and Breadcrumb. Their underlying Schema.org types include FAQPage, HowTo, LocalBusiness, and BreadcrumbList. Choose the entity that matches the page content rather than selecting a type merely because it contains more fields.
Article includes Headline, Description, Author Name, and Date Published as required fields. Its author becomes a Person object, and an optional Publisher Name becomes an Organization object. Local Business covers contact details and address fields. Organization and Person accept comma-separated social profile URLs, which become a sameAs array. Event includes a start date, venue details, and optional status and attendance mode values. These form requirements describe this editor; they are not a complete list of requirements for a search feature.
What do the field checks actually validate?
Required fields carry an asterisk. URL fields require an absolute HTTP or HTTPS URL, so /images/mug.jpg fails while https://example.com/images/mug.jpg passes the URL check. Date fields require a real calendar date in YYYY-MM-DD form. Number fields accept nonnegative decimal notation, and Currency accepts three letters. That currency check verifies the shape of the code, not membership in a currency registry.
The preview shows Has errors and identifies fields to review, or Field checks passed when those checks find no issue. Copy and download remain available with errors. The checks do not examine the published page, verify that prices match visible content, or certify complete Schema.org compliance. They also do not determine eligibility for a particular search appearance. Check both the generated document and the content it describes before publishing.
How do you import existing JSON-LD without losing extra properties?
Paste a JSON object or a complete script block into Import JSON-LD or a script block, then click Import. A script wrapper must declare type="application/ld+json". The importer accepts a single object or an object containing a nonempty @graph array of objects. A top-level JSON array is rejected, so use an object wrapper for a graph.
Supported properties populate the forms. Edits replace changed form values while retaining imported properties outside those fields. Unsupported node types remain in the output without a dedicated field form. For example, an imported Product can retain a custom property while you update its price. Reset clears the selected node back to its chosen type; review your output before using it on an imported document.
How do multiple schema nodes and references work?
Use Add node to append an Organization node, then choose its Schema Type. Each node has a selectable entry, Up and Down controls, and a Remove button; the last remaining node cannot be removed. Multiple nodes export together inside @graph. This supports editing several entities in one document rather than copying a separate output for every entity.
Assign an identifier in Node @id. Reference property offers author, publisher, worksFor, organizer, mainEntity, isPartOf, and about; Link to node selects an existing identifier. The editor flags duplicate identifiers and references whose target is absent from the document. An external identifier may therefore be reported as dangling by this local check. Inspect the relationship instead of assuming every warning proves the complete document is invalid.
How do FAQ, HowTo, and breadcrumb rows become JSON-LD?
Use Add row for more entries and the numbered Remove buttons to delete rows. FAQ entries require a question and an answer to produce a Question with an acceptedAnswer. HowTo entries require a step name and instructions to produce a HowToStep. Breadcrumb entries require both a name and a URL to produce a ListItem. Incomplete new entries are omitted, and breadcrumb positions run consecutively from 1.
Keep the entries aligned with the page: questions should have their real answers, instructions should follow the task order, and breadcrumbs should describe navigation. Adding more rows supplies more structured content; it does not prove that the page qualifies for an enhanced search listing.
How do you copy or download the markup for a page?
Copy exports JSON-LD text without a script wrapper. Download JSON-LD saves the same generated text as schema.jsonld with the application/ld+json media type. For an HTML page, place the JSON inside <script type="application/ld+json">...</script> in the head. Downloading a file alone does not add it to your website.
Generation, import parsing, and field checks run in the browser. The tool does not fetch your website or submit the document to an external validator. Output serialization escapes less-than, greater-than, ampersand, and Unicode line and paragraph separators. This tool exports JSON-LD only; it does not generate Microdata attributes or RDFa. For other page metadata, use the Meta Tag Generator, or browse the SEO tools for related tasks.
How to Use Schema Markup Generator
-
Schema Type
Choose Article, FAQ Page, How To, Local Business, Product, Organization, Person, Event, or Breadcrumb to match the content you want to describe.
-
Product Name
For Product, fill in Product Name and Description, both marked required. Add Price, Currency, and Availability only when they reflect the actual product. Other schema types display their own fields.
-
Generated JSON-LD
Review the live output and resolve fields listed under Has errors. Field checks passed reports local checks only; it does not certify search result eligibility.
-
Copy
Click Copy to export the JSON-LD text, or use Download JSON-LD to save schema.jsonld. For HTML embedding, place the JSON inside a <script type="application/ld+json"> tag in the page head.