Skip to content
Motifuse
Free browser tool
SEO & Marketing

JSON-LD Schema Generator

Fill a short form and get a valid JSON-LD script tag for Article, WebSite, FAQ, Product, or Organization structured data.

  • Free public tool
  • No sign-up for this tool
  • Processing clearly labeled
  • Instant results

Content last reviewed

Overview

Valid JSON is the easy part

Nothing here can produce broken JSON: the object is handed to the browser's own serialiser, so quoting and escaping are correct by construction. What it cannot do is check that the properties are the ones your chosen type needs, or that they describe anything a visitor can actually see.

Five types, four mappings

The menu offers Article, WebSite, FAQPage, Product and Organization, but Product and Organization run the same fallback and emit the same three properties. Only the `@type` line separates them.

Correct as JSON, unchecked as markup

Escaping and indentation are the serialiser's work, so a quote or backslash in your text cannot break the block. Everything after that is unexamined: nothing checks that the URL is a URL, the date is a date, or the required properties are present.

One object per generation

A single type, a single block, and for FAQPage exactly one question. A page needing both Organization and Article markup takes two passes and two separate blocks.

Fields vanish without a word

Each type reads only the properties it uses, and the form never hides or dims the rest. Choose FAQPage and the URL, author and date you filled in are all dropped from the output, with no notice anywhere on screen.

How it works

Using JSON-LD Schema Generator, start to finish

Six steps, in the order the tool above actually takes them.

  1. 1

    Choose the schema type

    Article is selected on load. The choice decides which of four mappings runs.

  2. 2

    Replace the seeded values

    All five boxes arrive holding real example text, not greyed-out placeholders.

  3. 3

    Watch which fields survive

    The output rebuilds on every keystroke, dropping whatever the chosen branch does not read.

  4. 4

    Copy the block

    One control, one string, always wrapped in its own script tag.

  5. 5

    Paste it into the page

    Head or body, so long as it reaches the HTML the crawler is served.

  6. 6

    Validate the published URL

    Google's Rich Results Test is the only check anywhere in this process.

Use cases

What people bring here

The jobs this page is usually opened for, and the setting that makes each one quick.

A blog post byline

Article is the only branch that emits an author, nested as a Person object, alongside the publication date. The name box becomes headline rather than name.

Schema Type → Article; Name becomes headline

The home page identity

WebSite emits name, url and description, and reads nothing else. The two remaining boxes stay on screen and are discarded.

Schema Type → WebSite; Author and DatePublished ignored

One question and its answer

FAQPage puts the name box inside a Question and the description box inside its acceptedAnswer. A second question has to be added to the array by hand.

Schema Type → FAQPage. The Url, Author and DatePublished boxes are all dropped.

A company entity block

Organization emits name, description and url — the outer shape you then extend with logo, sameAs and address, none of which this form collects.

Schema Type → Organization; three properties only

A product skeleton to extend

Product produces the same three properties as Organization and no offers, so as generated it will not qualify for shopping-style treatment.

Schema Type → Product; add offers after pasting

Reading the format rather than the specification

Fill the fields once, then switch the type and watch which properties survive. The mapping is quicker to learn from the output box than from the vocabulary.

The read-only output box regenerates on every keystroke

Before you paste

Valid markup that describes the wrong thing

The output is always syntactically valid, which is the least demanding thing that has to be true about it. Each row below is a way a block that parses cleanly still describes something other than your page.

Clearing a box removes the property

An empty field is assumed to drop out of the JSON the way an unused field does.

There is no emptiness check anywhere in the mapping. An empty Description emits "description": "" — a property that is present and says nothing, which reads worse than an absent one. Delete the line after pasting.

The box labelled Name

Read as the Schema.org name property, because that is what the label says.

It becomes headline for Article, the Question text for FAQPage, and name only for WebSite, Product and Organization. The label never changes to say which.

Visible fields are used fields

The form is assumed to follow the type, so a box on screen must be going somewhere.

All five boxes render for every type. WebSite discards Author and DatePublished, and FAQPage discards the Url you are looking at while filling it in. They vanish from the output with no explanation.

The starting values are placeholders

"My Article", "John Doe" and "https://example.com" look like grey placeholder text.

They are real values held in state, so the block is complete and copyable before you have edited anything. Every field has to be replaced, the date included.

DatePublished is a date field

Assumed to enforce the ISO format the page recommends.

It is a plain text box with no format check and no calendar. Whatever you type is emitted verbatim, so a prose date reaches your page looking exactly as valid as a correct one.

Escaping makes the block safe to paste

Because the serialiser handles quotes and backslashes, any text is assumed to survive the trip into HTML.

It is safe as JSON, not as HTML. A literal </script> typed into a description closes the tag early once the block is in a page. Nothing here guards against that, and it is the one sequence worth checking for.

Privacy

Where your work is processed

The schema is built and serialised in this tab and the only route out of it is the clipboard, when you press Copy; the page itself sends one anonymous request per view carrying the tool slug and nothing else, and that request is skipped entirely when your browser sets Do Not Track or Global Privacy Control.

The work happens as you type

Every result on these pages is computed by JavaScript in this tab while you type. There is no submit step, no job, and no request that carries what you entered.

Nothing is kept

No draft, history or recent list is written to storage. Closing the tab discards the lot, and a reload brings back the built-in example rather than your work.

The view counter is the only request

Each tool page records that it was opened, sending the tool's slug and nothing else. It carries no text you typed, and it is skipped when your browser signals Do Not Track or Global Privacy Control.

One caveat on that

The endpoint behind the counter is rate-limited like any other, which records a requesting address briefly to enforce the limit. It is never joined to what you typed, because none of it is sent.

More detail in how processing works and our privacy policy.

Limits

What the five types actually emit

The values this tool actually enforces, not a rounded-up version.

Schema types
5
Article, WebSite, FAQPage, Product and Organization, hardcoded in the menu. There is no entry for a sixth.
Distinct mappings
4
Product and Organization share one code path, so five menu entries produce four different shapes.
Form fields
5
Name, Description, Url, Author and DatePublished. The set is fixed and never changes with the type.
Questions per FAQ block
1
mainEntity is an array holding exactly one Question. Further ones are pasted into it by hand.

Worth knowing before you ship the block

Each type emits its core properties only: no images, publisher logos, prices, ratings, or breadcrumbs, which some rich-result formats require — treat the output as a correct skeleton to extend rather than exhaustive markup. FAQPage produces a single question-and-answer pair per generation; for a multi-question page, generate the block and duplicate entries inside the mainEntity array by hand. The form fields are shared across types, so fields a type does not use are ignored rather than hidden. The tool does not validate against Google's per-type requirements — the Rich Results Test remains the authority.

FAQ

Structured data questions

The ones that actually come up.

Guides

Reading that goes deeper

Find this useful? Share it.