Schema (JSON-LD) Generator

Most free generators hand you a separate, disconnected block per type. This one emits a single @graph and wires the nodes together with stable @id values — article to publisher, page to site, offer to seller. Those links are what establish entity identity; isolated blocks do not.

Site
Your homepage. Every @id is derived from it.
For example: en-US, en-GB.
Entity (who publishes this)
The registered company name. If it differs from the brand name, provide both.
One URL per line. Wikidata, LinkedIn, Crunchbase, X, industry directories. This is the field that verifies your entity.
A Schema.org LocalBusiness subtype. The more specific the type, the cleaner the match.
Two-letter code: US, GB, DE.
One range per line. Example: Mo-Fr 09:00-18:00
Page
The page this markup goes on. Leave empty to treat it as the homepage.
Article fields
Format: YYYY-MM-DD.
A real person. "Editorial team" or a brand name carries nothing on the E-E-A-T side.
LinkedIn, X, ORCID, personal site. One URL per line.
URLs of the external sources this article relies on. One per line.
Product fields
Leave empty to reuse the entity name.
Frequently asked questions

Do not add questions that are not visible on the page — structured data must mirror what the page actually shows.

Breadcrumb One step per line: Name | https://url. The last step may omit the URL.

Schema, JSON-LD and generative search: what actually matters

What structured data does and does not do

Structured data is not a ranking factor. Its job is to translate what the page says into a form a machine can read without interpreting: this is a product, this is its price, this is who sells it. Google uses that for rich results. In generative search it does something slightly different — the system assembling the answer does not have to guess which figure on the page is the price and which is the SKU. Markup never substitutes for content; it lowers the odds that good content is misread.

Why one @graph instead of separate blocks

Putting Organization, WebSite, Article and BreadcrumbList on a page as four separate <script> blocks is technically valid. But those four blocks do not know about each other: the article never says who published it, the page never says which site it belongs to. Inside a single @graph with stable @id values those relationships become explicit — Article.publisher points straight at the #organization node. The difference is between stating facts and connecting them.

sameAs: the only externally verifiable field

You write every field in your markup yourself, so all of it is a claim. sameAs is the exception: it links your entity to records you do not control. Wikidata, a LinkedIn company page, Crunchbase, industry directories, press coverage. A search system answering "does this brand exist and is it what it says it is" leans on those links. With sameAs empty, an Organization block can look complete while establishing no identity at all.

Why AggregateRating is not generated

Star ratings are the most requested field in tools like this and the one deliberately left out. Google's structured data policies require that reviews be genuine and visible to users on the page. A score you assign to your own product on your own site violates that, and when it is caught the result is loss of rich results plus a manual action. Add the field when you have real reviews — not before.

Markup must say the same thing as the page

The most common failure is putting information in the markup that is not on the page: invisible FAQ entries, a price that appears nowhere, a different author name. Google treats this as a mismatch between structured data and page content, and the penalty is losing rich result eligibility for the whole page. The rule is simple: every statement in the markup should be something a human reading the page could also see.

Where to put it

Paste the generated block into the page's <head>. It also works inside <body>, but head is safer — some template systems relocate script blocks that sit in the body. Multiple JSON-LD blocks on one page are not an error, though the point of this tool is to collapse them into one. After you install it, check the page with both Google's Rich Results Test and the Schema.org validator; they look at different things.

Which type belongs on which page

Organization and WebSite belong on every page, not just the homepage — they are the site's identity. Article belongs on blog posts and news pieces only; putting Article on a service page is common and wrong. Product belongs on pages that sell exactly one product. BreadcrumbList belongs on every page except the homepage, and it must match the navigation the visitor actually sees. FAQPage is for question-and-answer pairs that genuinely appear on the page.

Do generative engines read schema?

Short answer: there is no documented "add markup, get cited" guarantee, and sources claiming otherwise deserve scepticism. What is known: the Bing index behind ChatGPT search and Google's AI Overviews already process pages together with their structured data, and when fields like price, date and author are read from that data the chance of misinterpretation disappears. So markup does not create visibility on its own; it makes your information travel accurately once you have visibility. That is a small but measurable difference.

Frequently Asked Questions

Will structured data improve my rankings?

No, it is not a direct ranking factor. What it does is translate the page into a form machines read without interpreting. The indirect effect is real: rich results lift click-through, and in generative search fields like price, date and author are far less likely to be reported incorrectly.

Why is there no star rating (AggregateRating) field?

Google's policies require reviews to be genuine and visible on the page. A score you give your own product violates that, and when caught it costs rich results and triggers a manual action. Add the field once you have real reviews — adding it earlier does damage, not good.

Where on the page should the markup go?

Preferably in <head>. <body> is valid too, but head is safer because some template systems relocate script blocks inside the body. Afterwards, validate with both Google's Rich Results Test and the Schema.org validator — they check different things.