How to use the schema markup generator
- Choose the schema type that matches the page: an Article for a post, a Product for a product page, and so on.
- Fill in the fields using the same information that is visible on the page. Markup must match what visitors can see.
- Copy the generated script tag and paste it into the page's HTML, or into your CMS's custom code field.
- Test the page with Google's Rich Results Test and the Schema Markup Validator, then fix any warnings.
What schema markup is
Schema markup is structured data, written in the schema.org vocabulary, that describes what a page is about in a form machines can read: this is an article, by this author, published on this date. Search engines use it to understand content and, for some types, to show rich results such as product details or review stars.
Why JSON-LD
Structured data can be written in several formats. Google recommends JSON-LD, a block of JSON in a script tag that sits apart from your visible HTML, so it is easy to add, edit and keep valid. This tool outputs JSON-LD only.
Rules that keep markup safe
- Describe only what is visible. Markup that does not match the page content can lead to a manual action.
- Include the required properties for the type. Missing required fields make the page ineligible for the related rich result.
- Never mark up fake reviews or ratings. This tool deliberately does not generate review ratings.
- Keep it current. Prices, dates and opening hours in markup must match the page.
Honest expectations about FAQ schema
Valid markup makes a page eligible for rich results; it never guarantees them. Since August 2023, Google shows FAQ rich results only for well-known government and health websites, so most sites will not see an expandable FAQ in results. FAQ markup is still valid and can help machines understand the page, but do not expect a visual boost.
Test before you publish
Run the page through Google's Rich Results Test to see which rich results it is eligible for, and through the Schema Markup Validator for general syntax checks. Read Google's structured data introduction for the supported types. To check schema across a whole site, use the free SEO audit.
Choosing the right schema type
Pick the most specific type that honestly describes the main content of the page. A blog post or news story is an Article. A page that sells one item is a Product. A page for a physical shop, clinic or restaurant is a LocalBusiness, or a more specific subtype. A page about your company as a whole is an Organization, usually placed on the home page or the about page.
Do not stack unrelated types just to cover more ground. Markup should reflect what a visitor can actually see on that page. If a page is a long guide that happens to contain a few questions, it is still an Article, not an FAQ page.
Required and recommended properties
Each type has properties that Google requires to consider the page for a rich result, and others that are recommended. For Product, Google looks for a name and an offer with a price and currency, and rewards images, a description, a brand and availability. For Article, a headline, an image, an author and publication dates help search engines understand and display the content correctly. For LocalBusiness, name, address and phone number are the core.
The generator marks the essential fields with an asterisk and warns you when they are missing. Fill in as many recommended fields as you honestly can, because richer, accurate data gives search engines more to work with.
How to add the code to your site
Paste the generated script tag into the HTML of the page it describes. The head is the usual place, but Google reads JSON-LD anywhere in the page. In WordPress you can use a header and footer plugin or your theme's custom code field. In a hand-written site, add it to the template for that page type. Some page builders and SEO plugins already output schema, so check what exists before adding a second copy, as duplicates can conflict.
After publishing, test the live URL, not just the code. Google's Rich Results Test shows which features the page qualifies for, and the Search Console enhancement reports show errors across the whole site over time.
Common structured data mistakes
- Marking up content that is not on the page. Hidden or invented details can lead to a manual action.
- Fake or self-written reviews. Review markup must reflect real, visible, independent reviews.
- Out of date values. A product marked in stock when it is sold out, or a price that no longer matches the page, erodes trust.
- Syntax errors. One missing comma makes the whole block invalid. The generator avoids this, but be careful when editing by hand.
- Expecting guaranteed rich results. Valid markup makes a page eligible. Google decides whether to show enhanced features.
A short checklist before you publish markup
- The type matches the main content of the page.
- Every required field is filled with accurate information that is visible on the page.
- Dates use a standard format and prices use plain numbers with a currency code.
- Image addresses are public and use https.
- There is only one block per type on the page, unless the page really needs more.
- You tested the live URL in the Rich Results Test and fixed every error.
Re-test after any redesign or template change, since a small edit can silently remove or break the markup.
Frequently asked questions
Does schema markup improve rankings?
Not directly. It helps search engines understand your content and can make pages eligible for rich results, which can improve click-through.
Where do I put the JSON-LD code?
Anywhere in the page's HTML; the head is the common choice. In WordPress and most CMSs you can paste it into a custom code or header field.
Can I add more than one schema block per page?
Yes. A product page can have Product, BreadcrumbList and Organization markup in separate blocks, as long as each matches visible content.
Why is there no review or rating option?
Review markup must reflect genuine, visible reviews and is easy to misuse. Add it by hand only when you have real reviews on the page.
Is my data sent anywhere?
No. The code is generated in your browser.