Free tool · Structured data

Free schema markup generator

To add schema markup, pick the one type that describes your page, fill in only the properties that are true, and paste the JSON-LD into a script tag in your head. Build it below across ten types, with every field explained and anything you leave blank omitted rather than published as an empty value.

Free. Building and validating markup needs no account; the conflict report against your live page needs a free sign-in.

A blog post, news story or guide. The type most often worth adding, and the one most often filled in wrongly.

Your JSON-LD

Paste this inside a script tag with type "application/ld+json" in your page head.

{
  "@context": "https://schema.org",
  "@type": "Article"
}

Missing something essential

  • Headline is essential for Article: The article's own title, not your site name. Keep it the same as the visible h1 or you are telling a consumer two different things.
  • Author name is missing. A person's name. This is the single strongest attribution signal an answer engine can read, and most pages omit it.
  • Date published is missing. ISO format, so 2026-09-07. Freshness is a real ranking and citation input for anything time-sensitive.
  • Date modified is missing. Only set this when the content genuinely changed. Bumping it on every deploy is a signal people learn to ignore.
  • Image URL is missing. An absolute URL to a real image on your domain. A relative path is dropped here rather than emitted.
  • Description is missing. One or two sentences. Worth writing separately from your meta description if the two audiences differ.

These are our own essential and recommended groupings, not Google's rich-result requirements. Those differ per feature and change without notice, so check the finished markup in Google's Rich Results Test before relying on it.

AEO depth layer

See the existing markup conflict report

The existing markup conflict report is computed from your own page and costs nothing to run. We ask for a free account because the expensive tools on this shelf stay free, and because it lets us tell you when your result changes. No card, no trial clock.

  • Every JSON-LD block already published on your page, with the types it declares, so you can see what you are about to duplicate.
  • A headline or name in your existing markup that disagrees with the one you just built, which tells a consumer two different things about the same page.
  • Blocks that fail to parse at all, which no consumer is reading and which nothing on your page will tell you about.
Sign in free to unlock

Signing in saves the details you entered above so we can follow up about your results. See our privacy policy for what we keep and why. The Schema Markup Generator result you already have stays free either way. Privacy policy.

The ten types, and what each one is actually for

Essential means the markup is meaningless without it, so an Article with no headline describes nothing. Recommended means consumers read it when present and nothing breaks when it is absent. Both groupings are ours, not Google's. Rich-result requirements differ per feature and change without notice, so encoding them here and calling a field "required by Google" would be a claim we could not keep true.

TypeEssentialRecommendedUse it for
Articleheadlineauthor, datePublished, dateModified, image, descriptionA blog post, news story or guide. The type most often worth adding, and the one most often filled in wrongly.
FAQ pagefaqsnoneA page of questions and answers. Each answer should stand alone, because that is the unit an answer engine lifts.
How-toname, stepstotalTimeAn ordered procedure. Steps are numbered for you, in the order you enter them.
Productnamedescription, price, priceCurrency, brand, imageA thing you sell. Price and currency travel together in an Offer; one without the other says nothing.
Local businessnamestreetAddress, addressLocality, addressRegion, postalCode, telephone, urlA business with a physical address. The address is the point of the type, so a partial one is worse than none.
Organizationnameurl, logo, sameAsThe company itself. Belongs once, on your home or about page, not repeated on every URL.
PersonnamejobTitle, url, sameAsAn author or team member. Pair it with sameAs links or it asserts an identity nothing can verify.
Eventname, startDateendDate, locationName, urlSomething happening at a time. A start date is the whole point of the type.
Breadcrumb listcrumbsnoneThe path to this page. Positions are numbered for you, in the order you enter them.
Software applicationname, applicationCategoryoperatingSystem, price, priceCurrency, urlAn app or SaaS product. The type most likely to be read when someone asks an assistant for a tool recommendation.

How this compares to a typical free generator

Where the usual generators are equal, the table says so.

CapabilityThis toolTypical free generator
Common types with a form per typeYesYes
Copy and download the JSON-LDYesYes
A plain-English hint on every fieldYesBare labels
Blank fields omitted, not emitted as empty stringsYesOften emitted
Price emitted as a number, and never without a currencyYesString, currency optional
Relative URLs dropped rather than publishedYesPublished anyway
Bare author or brand upgraded to a nodeYesLeft as a string
Script-tag close sequences escapedYesNo
Says whose requirements the groupings representYes, oursImplies Google's
Conflict report against your live markupYes, with a free accountNo

What is in the existing markup conflict report

Generating correct markup is the easy half. The half that goes wrong is what the page already publishes, because structured data is usually added once by someone who has since left, and nothing on the page tells you it is there.

  • Every JSON-LD block currently on your URL and the types each one declares, including types nested inside an @graph, which is how most sites ship several at once.
  • A type you are about to declare for the second time, which leaves a consumer choosing between two nodes claiming to be the subject of the same page.
  • A headline or name in your existing markup that disagrees with the one you just wrote. One of the two is wrong, and finding out which is cheaper than publishing both.
  • Blocks that fail to parse as JSON at all. Nothing is reading those, and no page will ever tell you.

Once the markup is right, the AI crawlability checker confirms the engines are allowed to read it, the robots.txt generator fixes it if they are not, and the AI visibility checker answers the question all of this only makes possible: do they recommend you.

How to add schema markup to a page

Step 1

Pick the type that describes the page

One page, one primary type. Article for a guide, Product for a thing you sell, FAQPage for questions and answers. Adding several types to one page rarely helps and often contradicts itself.

Step 2

Read the hint before filling the box

Every field explains what it is for and what a consumer does with it. The sameAs field on Organization and Person is the most under-used property on this list and the one that turns a name into a verifiable identity.

Step 3

Fill only what is true

A blank field is omitted from the output, which is the correct outcome. Inventing a dateModified or a rating to fill a box is worse than leaving it out.

Step 4

Check it against the page, then against Google

The conflict report reads the markup already published on your URL so you do not duplicate or contradict it. Then paste the result into Google's Rich Results Test, which is the only authority on current per-feature requirements.

When you outgrow this tool

Correct markup makes a page readable. Answer Radar measures whether the engines then cite it, and re-checks after you ship a fix.

The generator is free and complete on its own. Linkeddit is what you use when correct markup stops being the question and you need to know whether the engines actually cite the page, and whether a fix you shipped changed anything.

FAQ

Schema Markup Generator questions

What structured data does, what it does not do, and where our judgement ends and Google's rules begin.

What is schema markup and does it affect rankings?

Schema markup is structured data in JSON-LD that states, in a machine-readable way, what a page is about: that this is an article, that this is its author, that this is the price. It is not a ranking factor in itself. What it does is make a page eligible for rich results and easier for an answer engine to read accurately, which is a different and often more valuable thing than a position change.

What schema type should I use for my page?

The one that describes the page's main content, and usually only that one. A blog post is an Article. A product page is a Product. A page of questions and answers is a FAQPage. Where people go wrong is adding four types to one URL in the hope that more markup is better; that leaves a consumer deciding which of your claims is the real subject of the page, and it can contradict itself.

Does schema markup help with AI citations?

It helps an engine read your page correctly, which is a precondition for citing it accurately, but it is not a lever that makes you cited. The properties that matter most here are the attribution ones: author with a real name, dateModified when the content genuinely changed, and sameAs links that connect your entity to profiles elsewhere. Markup cannot make a weak page authoritative, and schema that describes content not visible on the page is a guideline violation rather than a shortcut.

Where do I put the JSON-LD on my page?

Inside a script tag with type application/ld+json, in the head or the body; both work. JSON-LD is preferred over microdata precisely because it sits in one block rather than being woven through your markup, so it can be added and changed without touching the page's HTML structure.

Should I fill in every field the generator offers?

No. Fill in what is true and leave the rest blank. This tool omits an empty field from the output rather than publishing an empty string, because a property present with no value asserts that the value is empty, which is a different claim from saying nothing at all. A short, accurate block beats a long one padded with guesses.

What is in the layer that needs an account?

The conflict report: it reads the JSON-LD already published on your URL and tells you what would clash with the block you just built. A type you are about to declare twice, a headline in your existing markup that disagrees with the one you just wrote, and any block on the page that fails to parse so nothing is reading it. It costs nothing to run and no model is involved. One caveat worth knowing: we read the HTML your server returns and do not execute JavaScript, so markup injected by a tag manager will not appear.

How is this different from other free schema generators?

Three things. It explains every field instead of showing a bare label, so you can tell whether a property is worth filling. It refuses to emit what a consumer would ignore, including empty strings, relative URLs and a price with no currency, rather than including them to look complete. And it says plainly that its essential and recommended groupings are ours rather than Google's, because rich-result requirements differ per feature and change without notice, so it points you at the Rich Results Test instead of pretending to be it.