Schema markup generator
This schema markup generator writes JSON-LD for four schema.org types: Article, Person, FAQPage and HowTo. Fill the fields, copy the code, paste it into your page. No signup, and nothing leaves your browser. Google only shows rich results for some of these, and the notes below say which.
Pick a type, fill the fields, and hit Generate.
What schema does, and what it hasn't been shown to do
Structured data doesn't change your words. It labels them so a machine knows what they mean. Its documented payoff is in Google Search: rich results for the types Google supports. For AI citation the evidence is thin. An Ahrefs observational test of 1,885 pages found citations barely moved after schema was added, live-fetch tests found AI systems reading visible text rather than JSON-LD, and Google says no special schema is needed for AI Overviews or AI Mode. The evidence scoreboard grades it Open, and whether schema causes citation is a question this site has pre-registered rather than assumed.
What each type is good for on Google today: Article helps Google understand headline, author and dates. Person, with a sameAs list of your profiles, describes the author; whether that author signal moves AI citations is being tested, not claimed. FAQPage is valid markup, but since August 2023 Google shows FAQ rich results only for well-known, authoritative government and health sites. HowTo rich results were removed from Google in 2023. Both still describe your content to any parser that reads schema.org.
How to generate schema markup in five steps
- Pick the type that matches the page. A blog post is an Article. An about or author page is a Person. Use FAQPage only if the page shows a list of questions with their answers, and HowTo only if it walks through numbered steps.
- Fill the fields. The output updates as you type. Leave a field blank and it is dropped from the code, so you never ship an empty
"image": "". - Copy the JSON-LD. Press Copy. The code is a plain object starting with
"@context": "https://schema.org". - Wrap it in a script tag. Paste it between
<script type="application/ld+json">and</script>, in the head or body of that one page. Most CMSs have a field or plugin for custom head code. - Test before you publish. Run the live URL or the code through Google's Rich Results Test for Google features, and the Schema Markup Validator for general schema.org correctness.
Example: FAQPage JSON-LD from two lines
The FAQPage tab takes one question and answer per line, split by a pipe. Type this:
What is llms.txt? | A Markdown file at /llms.txt that maps your key pages for AI models. Does it work yet? | It's an early proposal.
and the generator returns:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is llms.txt?",
"acceptedAnswer": {
"@type": "Answer",
"text": "A Markdown file at /llms.txt that maps your key pages for AI models."
}
},
{
"@type": "Question",
"name": "Does it work yet?",
"acceptedAnswer": {
"@type": "Answer",
"text": "It's an early proposal."
}
}
]
} Only the first pipe splits the line, so an answer can contain its own |. Lines without a pipe are skipped. The HowTo tab works the same way, with Step name | instruction, and numbers the steps for you. For a test of whether markup like this changes AI citations, see the schema study; if you are setting up an llms.txt file at the same time, the llms.txt generator builds one.
What this generator does and doesn't do
It does four types with the fields most pages need. It removes empty fields, and it escapes < as \u003c so a stray closing script tag in your text can't break the page. That escape is valid JSON, and parsers read it as the normal character.
It doesn't:
- Validate your dates or URLs. Type
2nd Julyand it goes into the code as-is. Use ISO 8601 dates such as2026-07-02, and full absolute URLs starting withhttps://. - Cover every type. There's no Product, Organization, LocalBusiness, BreadcrumbList or Event tab. Breadcrumbs and Organization are usually better generated sitewide by your theme or CMS.
- Link entities with
@id. The Article author is a plain Person with a name. If you want the author to point to your full Person block, add matching@idvalues by hand. - Check the page itself. Google's guidelines require markup to describe content a visitor can see. The tool can't tell whether your FAQ answers are actually on the page.
Common schema errors and fixes
| What you see | Likely cause | Fix |
|---|---|---|
| Rich Results Test: no items detected | The type isn't a Google feature (Person, HowTo), or the script tag is missing | Check in the Schema Markup Validator; confirm the code sits inside type="application/ld+json" |
| Invalid date or datetime value | Date typed in words or a local format | Use YYYY-MM-DD, or a full ISO timestamp |
| Invalid URL in field | Relative path such as /about | Use the full address, https://example.com/about |
| Parsing error: missing ',' or '}' | Code edited by hand after copying | Regenerate here and paste again rather than patching |
| Valid code, but no rich result in Google | Eligibility isn't a guarantee, and FAQ and HowTo results are now restricted or gone | Nothing to fix in the code; check the structured data guidelines |
Schema is one part of a technical check. The citation readiness checker looks at a page more broadly, and the robots.txt tester confirms crawlers can reach it at all.
Frequently asked questions
Which schema type should I use?
Organization and BreadcrumbList sitewide too.Does schema get me cited by ChatGPT?
JSON-LD or microdata?
Where do I paste the code?
<script type="application/ld+json"> tag in the <head> (or anywhere in the body) of the relevant page. Check it with Google's Rich Results Test (for Google features) and the Schema Markup Validator at validator.schema.org (for schema.org correctness) before you deploy. The markup must describe content that is visible on the page.Is schema markup a ranking factor?
Why does the Rich Results Test say no items were detected for my Person schema?
ProfilePage markup and as the author of an Article.Can I have more than one JSON-LD block on a page?
application/ld+json script tags, for example one Article and one BreadcrumbList. Generate each type here, then paste each into its own script tag. Just don't describe the same thing twice with conflicting values.Does this generator store what I type?
Related tools
AI Overview Exposure Checker
See which of your keywords trigger AI Overviews - and how much traffic is at risk.
Open →
llms.txt Generator
Generate and validate a spec-correct llms.txt for your site in one click.
Open →
AI Traffic-Loss Calculator
Model how much organic revenue AI Overviews could cost you - and what to recover.
Open →One experiment. Every week.
The field notes in your inbox - one thing I tested, the raw numbers behind it, and what it means for getting cited by AI.