Bold PilotBold Pilot
Free tool · No sign-up

Schema Markup Generator

Valid JSON-LD for eight types, with the fields Google actually requires marked as required — not the much longer list schema.org will merely accept.

Article

News, blog posts and any dated editorial page.

What you get: Headline, date and author in search, and eligibility for Top Stories.

Google truncates around 110 characters.

Required for the rich result. 1200px wide or more.

Paste this into <head>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article"
}
</script>

Marks what Google needs

Required here means required for the rich result — not merely accepted by schema.org, which is a different and much lower bar.

Never emits a blank field

Anything you leave empty is dropped. An empty property is worse than an absent one: it claims the field exists and has no value.

Runs entirely in your browser

Nothing you type is sent anywhere. No account, no limit, no upload.

Markup is the easy half.

Bold Pilot checks every keyword against its live results page, writes the article, and publishes it — week after week.

Try Bold Pilot

Structured data guide

Schema markup, JSON-LD and rich results — what Google requires, and what it merely accepts

Most schema generators ask you to fill in every property schema.org defines and call the result valid. It usually is — and it still produces nothing in search, because schema.org validity and Google rich-result eligibility are different bars. schema.org will happily accept an Article with only a name. Google will not show anything for it.

This generator marks a field required when Google requires it for the rich result. That is a much shorter list than schema.org's, and it is the list that decides whether anything appears.

Why JSON-LD, and not microdata

There are three ways to express structured data: microdata and RDFa, which interleave attributes into your HTML, and JSON-LD, which sits in one <script> tag. Google recommends JSON-LD, and the practical reason is maintenance: microdata breaks the moment someone restyles the markup it is attached to, because the data lives inside the presentation. A JSON-LD block can be moved, regenerated or deleted without touching a single visible element.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "How to test your robots.txt"
}
</script>

It goes in <head> or <body> — Google reads both. One page can carry several blocks, or one block containing several types.

The rule that gets sites penalised

Structured data must describe what is actually on the page. This is not a style preference; it is the line between markup and a manual action.

  • FAQ markup for questions a visitor cannot see on the page. The most common self-inflicted penalty in this area.
  • Ratings you invented, or aggregate ratings on a page that shows no reviews. This generator omits aggregateRating entirely unless both a rating and a review count are supplied, because half a rating is not a rating.
  • Product markup on a category page. Product describes one purchasable item, not a list of them.

Note also that Google reduced FAQ rich results to well-known government and health sites. The markup is still worth adding — it helps Google understand the page, and it feeds answer engines — but expect understanding rather than a visible result.

The types, and what each one earns you

Article

Headline, date and author beside your result, and eligibility for Top Stories. Google requires an image: without one there is no rich result, whatever else you supply. Use something 1200px or wider. dateModified is what Google reads for freshness; this generator falls back to the publish date rather than omitting it, which is the honest value for a page nobody has edited.

FAQ and How-to

Both take a list. How-to steps must be genuinely sequential — a list of tips is not a how-to, and marking it up as one is the same overclaim as fake FAQ questions.

Product

Price, currency, availability and stars. availability takes a schema.org URL rather than a bare word, which is the single most common mistake here; the generator expands InStock to https://schema.org/InStock for you.

Local business

Address, hours and phone in the knowledge panel and in Maps. The address must match your Google Business Profile exactly — a mismatch is worse than no markup, because it gives Google two conflicting answers about where you are.

Breadcrumbs

Replaces the raw URL under your title with a readable trail. Cheap to add, applies to almost every site, and one of the few types with no downside.

Organization

Belongs on your home page, once. sameAs is how you tell Google which social profiles are yours, which is what connects the accounts to the knowledge panel.

Video

Thumbnail, duration and upload date beside your result, plus the video tab. Supply either contentUrl (the media file) or embedUrl — a player page URL is neither, and it is why so much video markup produces nothing.

After you paste it

  1. Test the live URL in Google's Rich Results Test. Testing the code alone tells you it parses; testing the URL tells you Google can fetch and read it, which is the question.
  2. Watch the Enhancements reports in Search Console. Rich results take days to weeks to appear, and Search Console shows errors long before it shows results.
  3. Confirm the page is crawlable. Markup on a page blocked by robots.txt is never read — our robots.txt & sitemap checker finds exactly that case.

Frequently asked

Does schema markup improve rankings?

Not directly. Google has been consistent that structured data is not a ranking factor. It affects how your result is displayed, and a richer result earns more clicks at the same position — which is a real gain, just not a ranking one.

Can I put several types on one page?

Yes, and you often should — an article page reasonably carries Article, BreadcrumbList and Organization. Use separate script tags, or one @graph array.

Is any of this sent to a server?

No. This generator runs entirely in your browser: the JSON-LD is built as you type and nothing you enter leaves the page.