Schema Markup Generator
Generate JSON-LD structured data for rich snippets without any API required.
#about
Seven schema types: FAQ (FAQPage with Q&A pairs), HowTo (steps), Article (NewsArticle/BlogPosting), Product (pricing/reviews), LocalBusiness (address/hours), Breadcrumb, Video.
Dedicated generation functions per type.
Output wrapped in <script type="application/ld+json"> tags.
Streamlit app
- Platform
- Browser-based (no installation required)
- Input
- Schema type selectionRequired fields (vary by type)Optional properties per schema spec
- Output
- JSON-LD wrapped in script tags. Copy to clipboard or download as .html file.
- Category
- Technical SEO
Use cases
- FAQ rich snippets
- Recipe/HowTo carousels
- Product review stars
- Local business knowledge panel
- Video thumbnails in search
#features
- Seven schema types (no API required)
- FAQPage with multiple Q&A pairs
- HowTo with configurable steps
- Product with pricing and reviews
- Download as .html file
#how-to-use
- Select schema type (FAQ/HowTo/Article/Product/etc.)
- Fill required fields for chosen type
- Add optional properties if needed
- Preview formatted JSON-LD
- Copy code or download .html file
#faq
- How do I format time and duration fields like Total Time?
- HowTo Total Time and Video Duration must be in ISO 8601 duration format, not plain text. Write PT30M for 30 minutes or PT5M30S for 5 minutes 30 seconds. The tool passes your value straight into the JSON-LD without converting it, so '30 minutes' would produce invalid markup.
- Why is priceValidUntil appearing in my Product schema when I did not set it?
- The Price Valid Until field is a date picker that defaults to today's date, and the code includes it whenever it has a value, which is always. If you do not actually have a price expiry date, delete the priceValidUntil line from the generated JSON before publishing, otherwise your offer will claim the price expires today.
- Why is dateModified missing from my Article schema?
- The tool only includes dateModified when it differs from datePublished. Both date pickers default to today, so if you leave Date Modified untouched it matches Date Published and gets dropped. Set it to a different date if you want it in the output.
- What happens to fields I leave blank?
- Optional fields are simply omitted from the JSON-LD rather than output as empty strings, with one exception: the Offer url in Product schema is always included and will be an empty string if you leave Product URL blank. Empty FAQ pairs, empty HowTo steps and unnamed breadcrumbs are silently skipped, so the position numbering in the output only counts completed entries.
- What do I need for review stars to appear in Product schema?
- The aggregateRating block is only generated when you fill in both Average Rating and Number of Reviews; providing just one produces no rating markup at all. Best and worst rating default to 5 and 1. Also note Google requires reviews to genuinely exist on the page, so only add these if you actually display them.
- Does the tool validate the markup against Google's requirements?
- No. It builds structurally valid JSON-LD from your inputs but performs no validation of content, URLs or Google rich result eligibility. Run the output through the Google Rich Results Test or the Schema.org validator before deploying, especially for Product and LocalBusiness where Google has extra requirements.
/contact
Want me to run this for you? I run this tool as a managed service, or build something custom around your data. You get the insights without touching the code.