Free tool
Schema Markup Generator
Use this free schema markup generator to build the JSON-LD a search engine reads about your page. Pick what you are describing, fill in the details, and copy a block that is ready to paste. Six types are covered: local business, organization, service, FAQ, article and breadcrumbs.
The difference here is what it checks. Markup can be perfectly valid JSON and still do absolutely nothing, because Google ignores a type that is missing a property it treats as required, and nothing warns you. Every field is marked required or recommended, and the tool will not call the output ready until the required ones are filled. Nothing is uploaded and your business details never leave the tab. Writing the title and description too? Use the meta tag preview.
How to add schema markup to a page
Five steps, no account and nothing to install.
- Pick the type. Local Business if customers come to an address, Organization if they do not. Service for what you sell, Article for a post, Breadcrumbs for the trail, FAQ for a list of questions. Each one explains what it will and will not do before you start filling it in.
- Fill in the details. Required fields are marked, and so are the ones Google merely recommends. The difference matters: a missing required property means the markup is ignored completely rather than partially.
- Watch the checklist. It names exactly which required properties are still empty, and turns over only when none are. Valid JSON is not the same thing as useful markup, and this is the gap that catches people.
- Copy the block. It comes wrapped in its script tag, ready to paste. Put it in the head of the page it describes, or anywhere in the body: both work, and one page can carry several types.
- Check it in Google’s Rich Results Test. That tool is the authority on whether Google can read it. This one gets you to the point where it has something worth reading.
More free tools
Built for our own work, free for yours. No sign-up on any of them.
Font Clamp
QR Code Generator
Email Signature Generator
Color Contrast Checker
Meta Tag Preview
Image Converter
Case Converter
Favicon Generator
UTM Builder
Image Resizer
PDF Compressor
Merge PDF
Split PDF
What people use schema markup for
Mostly to stop a search engine having to guess what a page is about.
Telling search engines what a local business is
Name, address, phone and opening hours in a form a machine reads without guessing. It is the groundwork behind a business being understood as a business rather than as a page of words.
Getting a readable path into the search result
Breadcrumb markup replaces the bare URL under your title with a readable trail. It is one of the few types that still makes a visible difference on an ordinary site.
Marking up an article properly
Headline, author, publisher and both dates, nested the way Google expects rather than flattened. The publisher logo as an ImageObject is the part almost everyone gets wrong by hand.
Being understood by an AI assistant
Assistants read structured data because it is unambiguous. A service page that states what it is, who provides it and where, gets summarized more accurately than one that leaves it to be inferred.
Handing markup to a developer
A finished block removes the round trip. No describing which properties you want, no reviewing what came back, no discovering at the end that the address was flattened.
Doing it once instead of trusting a plugin
SEO plugins generate schema from whatever they can guess about a page. For a handful of important pages, markup you wrote deliberately says what you actually mean.
Frequently asked questions
What it does and does not do for rankings, where the code goes, and why FAQ markup stopped showing.
Will schema markup improve my rankings?
Not directly, and anybody promising otherwise is overselling it. Structured data is not a ranking factor. What it changes is how your result can LOOK: a breadcrumb trail instead of a bare URL, review stars, a recipe time, an event date. A result that is more informative gets clicked more often, and that is the honest mechanism. It also makes a page easier for an AI assistant to summarize correctly, which is becoming the more interesting reason to bother.
Where exactly do I put the code?
In the head of the page it describes, which is the convention, though anywhere in the body works too and Google reads both. One page can carry several types: a service page might reasonably have LocalBusiness, Service and BreadcrumbList, each in its own script tag. In WordPress you can paste it into a header snippet, a custom HTML block, or whatever your theme calls its head hook. It must go on the page it is about, not on every page of the site.
Why does my FAQ markup not show anything?
Because since August 2023 Google shows FAQ rich results only for government and health sites. This surprises people because most of the advice online predates the change and still promises an expanded listing. The markup is not wasted: it is still valid, still read by assistants and other engines, and still describes your page accurately. It just will not add anything visible to your Google listing on an ordinary business site.
What is the difference between required and recommended?
A required property is one Google will not proceed without. Leave the address off a LocalBusiness and the whole block is ignored, not partially used, and nothing tells you. A recommended one makes the result better or more likely to be shown but will not stop it working. This is the distinction most generators skip, which is how people end up with markup that validates cleanly and does nothing at all.
Should I use LocalBusiness or Organization?
If customers come to a physical address you can visit, use LocalBusiness. If the business is real but not somewhere people turn up, use Organization. The practical difference is that LocalBusiness expects a full postal address and is the one tied to local search, so claiming it without a genuine address is worse than using Organization honestly.
Why does the output escape the less-than character?
Because the markup lives inside a script tag, and a value containing a closing script tag would end that tag early. Everything after it stops being data and becomes live page markup. It is easy to hit by accident: an FAQ answer about HTML, a description that quotes some code. JSON.stringify on its own does not escape it, which is why most hand-rolled generators have this problem and nobody notices until something on the page breaks. Escaping the character keeps the JSON identical when parsed and makes it impossible for a value to close the tag.
Does this validate my markup?
It checks the thing generators usually skip, which is whether every property Google treats as required has been filled, and it builds the nested shapes correctly so the output is well formed. It is not a substitute for Google’s own Rich Results Test, which is the authority on whether Google can actually read your page. Use this to write it, use that to confirm it.
Is anything I type sent anywhere?
No. Everything happens in your own tab. That matters here more than on most tools, because this one asks for a real address, a real phone number and a real business name, and those are not things to hand to somebody else’s server for no reason. The page does send three counters, which are how many blocks were built, how many were copied or downloaded, and one per visit. Those are numbers only and carry nothing about your business.
Want something like this on your own site?
Free tools are a small part of what we do. The rest is websites and digital products for businesses serious about growth, whether you are launching, scaling or transforming.