Free tool Schema markup generator for JSON-LD
Pick a type, fill in what is actually on your page, and copy a ready <script type="application/ld+json"> block. Every field is checked against schema.org and Google’s structured data documentation, and the tool tells you plainly when a type no longer earns a rich result.
- Required and recommended checks
- Rich-result status as of 2026
- Runs locally
Build JSON-LD from a form
The form starts with a filled-in example. Replace the values with what your page really shows; the code and the checks update as you type. Leave a field empty to leave it out.
One question per block: first line is the question, the lines below are the answer. Separate blocks with an empty line.
BlogPosting for blog posts, NewsArticle for news, Article for anything else.
The title as shown on the page.
One per line. Google suggests 16:9, 4:3 and 1:1 versions.
ISO 8601, e.g. 2026-11-02T09:00:00-05:00.
Only change it when the content really changed.
Just the name, no "by" or job title.
A profile page that identifies the author.
One per line.
Your own stock code.
8, 12, 13 or 14 digits from the barcode. Leave empty if the product has none.
Number only, dot for decimals: 59.00. Symbols are removed automatically.
ISO 4217: USD, EUR, GBP…
YYYY-MM-DD. Leave empty if the price has no end date.
Only if real customer reviews are shown on the page.
A short name or acronym people search for.
At least 112×112 px, readable on a white background.
One URL per line: LinkedIn, X, YouTube, Wikipedia…
With country code: +1-415-555-0100.
Two letters: US, GB, DE…
One level per line: Name | URL. The last line is the current page and can omit the URL.
Pick the most specific one.
A photo of the place.
With country and area code.
e.g. $$ or $10–20 (under 100 characters).
e.g. Ramen, Japanese
Two letters.
At least 5 decimals.
At least 5 decimals.
One rule per line: Mo-Fr 09:00-18:00, Sa,Su 10:00-16:00. Closed days: just leave them out.
Google’s list of applicationCategory values.
e.g. Windows, macOS or Android 10+.
0 for free apps.
Required when the price is above 0.
Google requires a rating or a review for this rich result.
Minutes (45), 1:30, or ISO 8601 (PT1H30M).
One per line (things used up).
One per line (things you need but keep).
One step per line. Optional short title: Title | what to do.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How long does shipping take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Orders ship within 1 business day. Standard delivery takes 3–5 business days in the continental US."
}
},
{
"@type": "Question",
"name": "Can I return an item?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Unworn items can be returned within 30 days for a full refund. Return labels are free."
}
},
{
"@type": "Question",
"name": "Do you ship internationally?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We ship to 40 countries. Duties and taxes are calculated at checkout, so there are no surprise fees on delivery."
}
}
]
}
</script>Paste it into the page’s <head> or <body>. The values must match what visitors can see on that page.
Checks
Errors break eligibility; warnings are recommended properties or likely mistakes.
- NoteFAQPage: valid markup, but Google stopped showing FAQ rich results on 7 May 2026 for all sites. Keep it only if it helps other consumers.
Version v1.0Updated Update history
What the generator gives you
A code block, a list of checks and three links. Each answers a different question.
The JSON-LD block
A <script type="application/ld+json"> tag with one object. It can go anywhere in the HTML; the head is the usual place. If your CMS already outputs schema for the same thing (many SEO plugins do), replace theirs rather than adding a second, conflicting copy.
Errors
A required property is missing or a value has the wrong format: a date like 11/09/2026, a price written as $59, a currency written as usd. Google ignores an item with errors for rich results, though the page itself still ranks normally.
Warnings
Recommended properties you left out, or things that are valid but risky, such as a relative image URL or a time without a time zone. Add a recommended property only when the information really appears on the page.
Eligible is not the same as shown
“All required properties present” means the item can qualify. Google still decides per query whether to show a rich result, and some types (FAQ, HowTo) are no longer shown at all. The tool says so on those types instead of pretending.
The checks follow schema.org and Google Search Central’s structured data pages as of November 2026. Google’s own Rich Results Test is the final word on eligibility; test the live URL after publishing.
Four steps from form to rich result
Most of the work is copying facts that are already on the page.
-
1
Choose the type
Match the main content of the page: a product page gets Product, a blog post Article, the home or about page Organization. One page can carry several types, each in its own block.
-
2
Fill in the visible facts
Copy names, prices, dates and ratings exactly as visitors see them. Markup that describes content not on the page breaks Google’s guidelines.
-
3
Clear the errors
Work down the checks list until there are no errors. Warnings are optional but usually worth fixing.
-
4
Publish and test
Paste the block into the page template, deploy, then run the live URL through the Rich Results Test and watch the Enhancements reports in Search Console.
What Google requires for each type
Google lists required and recommended properties per rich result. Missing a required one makes the item ineligible; missing a recommended one only weakens it. The status column is where many older generators are out of date.
- Dates: ISO 8601, with a time zone if you include a time
- Prices: a number with a dot for decimals; currency separately as an ISO 4217 code
- URLs: absolute, with https://
- Enumerations such as availability: schema.org names like
https://schema.org/InStock
| Type | Google rich result | Required | Key recommended |
|---|---|---|---|
| FAQPage | Not shown since 7 May 2026 | mainEntity → Question (name, acceptedAnswer.text) | — |
| Article | Shown (article features) | None | headline, image, datePublished, dateModified, author |
| Product | Shown (snippets, merchant listings) | name + offers, review or aggregateRating | image, brand, offers.priceCurrency, availability |
| Organization | Used for logo and knowledge panel details | None | name, url, logo, sameAs, address, telephone |
| BreadcrumbList | Shown on desktop only | ≥ 2 ListItem with position, name, item | — |
| LocalBusiness | Shown (local details) | name, address | geo, openingHoursSpecification, telephone, url, priceRange |
| SoftwareApplication | Shown | name, offers.price, aggregateRating or review | applicationCategory, operatingSystem |
| HowTo | Not shown since September 2023 | name, step | — |
One product page, field by field
A shirt page with a price, stock and 128 reviews. This is what goes into the generator and why each value is written the way it is.
| Property | Value | Why it looks like this |
|---|---|---|
| name | Linen Shirt – Navy | Same text as the product title on the page |
| image | 2 URLs (1:1 and 4:3) | Absolute URLs; several aspect ratios give Google more to work with |
| offers.price | 59 | Number only; “$59.00” would be an error |
| offers.priceCurrency | USD | ISO 4217 code, not the $ sign |
| offers.availability | https://schema.org/InStock | A schema.org value, not “Yes” or “available” |
| aggregateRating | 4.6 from 128 reviews | Only because those reviews are visible on the page |
With name and offers present, the item is eligible for product snippets. For merchant listings, Google additionally wants shipping and return details, usually declared once on the Organization.
Why valid-looking markup gets ignored
Most structured data that never produces a rich result fails for one of these reasons.
Marking up what visitors cannot see
Ratings with no reviews on the page, FAQs that only exist in the code, or prices that differ from the page. Google treats this as spam and can apply a manual action.
Local date and price formats
09/11/2026, 1.299,00 € and ¥199 are normal on a page and wrong in JSON-LD. Use ISO dates and plain numbers.
Two plugins, two copies
A theme and an SEO plugin both output Product or Organization with different values. Keep one source of truth.
Chasing retired rich results
FAQ and HowTo markup no longer produce rich results in Google. Adding them to every page is wasted effort.
See whether search traffic follows
Structured data is a means; clicks are the result. TapCub puts search performance, crawler activity and page behaviour next to each other, so you can see what happened after you shipped the markup.
Search Console and Bing in one view
Clicks, impressions, CTR and position by query and page, with content-decay alerts for pages losing traffic.
Learn moreSearch engines and AI crawlers counted apart
Googlebot, Bingbot and AI crawlers are kept out of human reports and shown on their own lines.
Learn morePage reports
Entry and exit pages, 404s with the referrer that sent people there, and pages that used to rank and now slip.
Learn moreSchema markup generator questions
Still have a question?
Chat with the team behind TapCub — we usually reply within a few hours on business days.
What is schema markup?
Schema markup is structured data that describes a page’s content using the shared schema.org vocabulary: this is a product with this price, this is an article by this author. Search engines use it to understand the page and, for some types, to show rich results such as product prices or review stars.
JSON-LD, Microdata or RDFa: which should I use?
Google recommends JSON-LD. It sits in one script block, separate from the visible HTML, so it is easier to generate, review and keep in sync. Microdata and RDFa still work but mix the markup into the page’s tags.
Does schema markup improve rankings?
Google says structured data is not a ranking factor by itself. It can make a result more prominent through a rich result, which may raise click-through rate, and it helps search engines understand what the page is about.
Which schema types still get rich results in 2026?
Product, Article, LocalBusiness, SoftwareApplication, Organization (logo and details) and Breadcrumb (desktop only) are still supported. FAQ rich results stopped on 7 May 2026 for all sites, and HowTo rich results were removed in September 2023. Google’s Search Central “updates” page lists every change.
Where do I put the JSON-LD code?
Anywhere in the page’s HTML, usually in the head. It must be in the HTML Google renders: server-side output, or injected by JavaScript before rendering finishes. Google Tag Manager works, but code in the page template is easier to keep correct.
Can I have several schema types on one page?
Yes. A product page often has Product, BreadcrumbList and Organization. Put each in its own script block, or combine them in one block with an @graph array. Do not describe the same thing twice with different values.
Why does the Rich Results Test show no result after I added schema?
Either the type has no rich result any more (FAQ, HowTo), a required property is missing, or the markup is not in the rendered HTML. Even valid markup is only eligible; Google decides when to show it.
Is this generator private?
Yes. The form, the JSON-LD and the checks are all computed in your browser. Nothing is uploaded, and the tool has no share link, so your product data never ends up in a URL.
Update history
New features, fixes and data refreshes for this tool, newest first.
-
· v1.0
LaunchedFirst release.
Missing something or found an error? Tell us — requests that come up often go into the next update. All tool updates
Check the result, then the rest of the page
Validate the published page, then make sure the title and description earn the click.