Zway.ai

Free tool

Generate valid JSON-LD

Pick a schema type, fill the fields it needs, and get valid JSON-LD in a script tag. Required properties are checked before anything is output, so you do not paste markup that fails validation. Serialisation is done properly, which means quotes and angle brackets in your text stay safe.

Last reviewed 27 August 2026

Organization, Product and WebSite name, or the Article headline.

Logo for Organization, main image for Article and Product.

FAQPage: question | answer. BreadcrumbList: name | url. Ignored by other types.

Article author name, or Product brand. Required for Article.

ISO format, YYYY-MM-DD. Required for Article.

Product only. Format: amount then a three-letter currency code.

Result

Schema type

Organization

4 properties beyond the context and type

JSON-LD

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Acme Analytics",
  "url": "https://acme.com",
  "logo": "https://acme.com/logo.png",
  "description": "Product analytics for B2B SaaS teams, without a data warehouse."
}
</script>

Before you ship it

  • Paste the whole script tag into the head or body of the page it describes. JSON-LD does not need to sit next to the content it marks up.
  • Run it through Google's Rich Results Test and the schema.org validator. They check different things and disagree often enough to be worth both.
  • Only mark up what is visible on the page. Structured data that describes content a visitor cannot see is a manual-action risk, not a shortcut.
  • Keep the markup in sync with the page. Stale prices and dead breadcrumb URLs are the most common cause of a rich result quietly disappearing.

Structured data makes a page easier to parse and eligible for certain result types. It is not a ranking factor in itself, and no amount of markup rescues a page nobody wants to read. The honest reason to do it is that it is cheap, unambiguous, and machine-readable, which matters more as answers get assembled rather than listed.

How this works

What the numbers mean.

  • 01The markup is built as a data structure and serialised with a real JSON serialiser, not assembled from strings. That guarantees quotes, backslashes, and control characters inside your text are escaped correctly, which is where hand-written JSON-LD usually breaks.
  • 02Angle brackets in the output are escaped as unicode sequences, so a stray closing script tag inside your copy cannot terminate the script block and dump raw text into the page.
  • 03Required properties are checked first and nothing is emitted until they are present, because the alternative is markup that looks finished and fails validation.

Assumptions and limits

  • This covers the common properties for six types, not the full vocabulary. schema.org defines far more, and Google's documentation defines which subset earns a rich result.
  • Marking up content that is not on the page violates Google's structured data guidelines. The markup should describe what a visitor actually sees.
  • FAQ rich results have been restricted by Google to a narrow set of site types. The markup is still useful for parsing, but do not expect the result treatment.

Questions about this tool

Does schema markup improve rankings?
Not directly. Google has been consistent that structured data is not a ranking factor. What it does is make a page eligible for specific result treatments and make the facts on the page unambiguous to a parser. The second point is quietly becoming more valuable as answers get assembled from sources rather than listed as links.
Where do I put the script tag?
Anywhere in the head or the body of the page it describes. JSON-LD is location independent by design, which is its main advantage over microdata: you do not have to thread attributes through your templates. Most teams put it in the head so it is easy to find and audit.
Which type should I use?
Match the type to what the page actually is. Organization belongs on your home or about page and usually appears once per site. Article goes on posts, Product on product pages, BreadcrumbList on anything nested, and FAQPage only where visible questions and answers exist. Stacking unrelated types on one page is a common and pointless mistake.
Why does the tool refuse to output when a field is missing?
Because invalid structured data is worse than none. It gets ignored by parsers, it fails Google's tests, and it leaves you believing the page is marked up when it is not. Blocking the output makes the missing property impossible to overlook, which takes ten seconds to fix now instead of a month of nothing happening.

This tool is free and there is nothing to sign up for. If you would rather have the work done than calculate it, that is what Zway does.