Free · runs in your browser
Free schema markup generator
Build Organization, LocalBusiness or FAQPage JSON-LD, see what is still missing, and open it straight in Google's Rich Results Test.
Structured data is how a page states machine-readable facts about itself. Search engines and AI assistants read a JSON-LD block to decide which entity a page describes without guessing from your layout. This generator emits only the properties you actually fill in — an empty field is left out rather than filled with a placeholder, because markup that disagrees with the page is worse than no markup.
Build your JSON-LD
Who the brand is. The base entity every other type hangs off.
Exactly as it appears on the page and on your other profiles.
The URL this markup will live on.
An absolute URL to a square image on your own domain.
One or two sentences. The same claim the page makes, not a new one.
International format, e.g. +971 4 000 0000.
LinkedIn, Wikidata, Crunchbase, an official social account. Two or more is the point at which engines start trusting the entity.
- Name is required — it is the entity's identity.
- URL is required, and must be the page this markup lives on.
- Add a logo URL: it is what a knowledge panel shows.
- Add two or more sameAs profiles. Corroboration from independent sources is what makes an engine trust the entity.
How to generate and publish JSON-LD
- 1Pick the type that matches the pageOrganization for the homepage or about page, LocalBusiness for a branch or store page with a real address, FAQPage for a page whose questions and answers a visitor can already read.
- 2Fill in only what is trueLeave a field blank if you do not have it. Blank fields are omitted from the output; markup that contradicts the page is worse than no markup at all.
- 3Add two or more sameAs profilesLinkedIn, Wikidata, Crunchbase, an official social profile. Corroboration from independent sources is what lets an engine decide your page and its entity are the same thing.
- 4Paste the block into the page's headCopy the generated script tag into the <head> of that one URL. One JSON-LD block per entity, on the page it describes — not site-wide in a template.
- 5Validate it before you shipRun the URL through Google's Rich Results Test and the schema.org validator. Both are free, and both read the rendered page, so they catch markup a template swallowed.
Frequently asked questions
What is JSON-LD and why does it matter for AI search?
JSON-LD is a block of structured data in a script tag that states machine-readable facts about the page. Search engines and AI assistants use it to decide what entity the page is about without parsing your layout. When the facts in the markup and the facts on the page agree, an engine is far more willing to state them in an answer.
Should I use Organization or LocalBusiness?
Use Organization for the company as a whole, on the homepage or about page. Use LocalBusiness on a page for a specific branch, store or clinic that has a street address and opening hours. A multi-branch brand uses Organization once and LocalBusiness on each location page.
What is sameAs and why does the tool keep asking for it?
sameAs lists other URLs that describe the same entity: a LinkedIn company page, a Wikidata item, a Crunchbase profile, an official social account. It is the single strongest signal that the entity in your markup is the entity in the engine's knowledge graph, and it is the field most often left empty.
Will FAQ markup give me a rich result in Google?
Not for most sites. Google restricted FAQ rich results to well-known government and health sources in 2023. FAQ markup is still worth adding, because it makes a question-and-answer pair trivially extractable for AI answers — but expect extraction, not a visual rich result.
Can I mark up FAQs that are not visible on the page?
No. Google's structured-data policy requires the question and answer to be visible to the user on that page, and hidden FAQ markup is a common reason for a manual action. Only mark up what a reader can read, word for word.
Where should the script tag go?
Anywhere in the page's HTML — head or body both work — as long as it is in the HTML the crawler receives. If your framework injects it after hydration, confirm with a view-source or a fetch without JavaScript that it is really there.
Do I need one block per page or one for the whole site?
One per page, describing that page. Putting the same Organization block on every URL is harmless but adds nothing, while putting a LocalBusiness block for one branch across every branch page actively misinforms the engine.
Is anything I type here sent to Search Genie?
No. The JSON-LD is assembled in JavaScript in your browser. Nothing is uploaded or logged. The Rich Results Test link opens Google's own tool, which then fetches the published URL — not anything from this page.
Does your live site actually carry this markup?
The free brand audit samples your pages, reports which structured-data types it found and which ones your kind of business is missing, and links each finding to the page it read.
What the free audit checks