Schema markup describes page content in a structured format. JSON-LD is the format of the generated data; types such as Article and Product identify what it describes. Screpy’s free Schema Markup Generator turns your supplied article, product or breadcrumb facts into JSON-LD. Choose the matching type, complete the form and review the output before adding it to your website. You can copy a complete script or download the JSON data.
Generation is the first step. The tool does not read your page, check whether a price or author is correct, install the code or submit it to Google. A useful implementation needs accurate facts, the right page placement and a check of the published result.
Choose a schema type that matches the page
Start with what the visitor can actually read or buy on the page, rather than the search appearance you would like to obtain. This generator has three modes, with three article subtypes:
| Page content | Choose | What the output describes |
|---|---|---|
| General editorial article | Article | The article, headline and author |
| Blog post | BlogPosting | An article presented as a blog post |
| News report | NewsArticle | A news article |
| One product with an offer | Product | The product and one current Offer |
| A page’s navigation trail | Breadcrumb | An ordered BreadcrumbList |
A category listing is not automatically one Product, and a sales page is not a NewsArticle simply because that option exists. Select the type that truthfully represents the content.
For an address, business contact details or opening hours, use the separate Local Business Schema Generator. The current generator does not create every Schema.org type. Keeping the type accurate is more useful than forcing an unrelated form to accept your information.
Prepare accurate article details
Choose Article, BlogPosting or NewsArticle, then enter the page URL, headline and author name. Those are this form’s required inputs. They should not be confused with universal Google requirements: Google’s current Article documentation describes applicable recommended properties rather than a mandatory field list.
The generated author is one Person. Use a real individual’s name and, when available, their identifying profile URL. Do not enter a publisher’s name as a person or combine several authors into one name to fit the form. Organization authors and multiple authors need an implementation that represents those facts correctly; this screen does not generate those author structures.
Additional details include up to three image URLs and actual publication and modification dates. Use relevant images that can be accessed, not invented addresses or a logo merely to remove a warning. The form accepts calendar dates and rejects a modification date earlier than publication. Do not reset publication to today just because you are adding markup.
Missing image or publication-date warnings are prompts to review real information. They do not make fabricated values acceptable, nor do they establish every requirement of a particular search feature.
Describe one real product offer
Product mode requires the product name, page URL, actual price, currency and availability. Choose the real stock state: InStock, OutOfStock, PreOrder, BackOrder or Discontinued. Optional fields include a description, image URL, SKU and brand. The result contains one Product with one Offer, not a product feed, variant system or automatic stock updater.
For a fictional Trail Bottle priced at 29.90 EUR and currently in stock, the basic structure is:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Trail Bottle",
"url": "https://example.com/products/trail-bottle/",
"offers": {
"@type": "Offer",
"url": "https://example.com/products/trail-bottle/",
"price": 29.9,
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock"
}
}
</script>
These are illustrative values, not a live offer or a validated merchant listing. This shortened example omits an image, which the generator flags for review. Replace every fictional value and supply an appropriate real image when available. The form accepts zero for a genuinely free offer; zero is not a substitute for an unknown price.
Reviews and aggregate ratings are not generated. Do not invent them to remove a warning from another validator. Google’s Product snippet guidance distinguishes the applicable properties and offer requirements; more extensive merchant experiences can require additional implementation beyond this form.
Build breadcrumbs in the right order
Breadcrumb mode creates a navigation trail with two to ten items. Enter the names in the order that makes sense within the site hierarchy. Every item needs a name; all except the final item need a complete URL. The generator assigns positions starting at one and shows a trail preview, but it does not discover your site structure.
For a fictional checklist page, the input might be:
| Position | Name | URL |
|---|---|---|
| 1 | Guides | https://example.com/guides/ |
| 2 | Hiking | https://example.com/guides/hiking/ |
| 3 | Daypack checklist | Optional for this final item |
Google’s Breadcrumb documentation allows the last item’s URL to be omitted, using the containing page’s URL instead. Install this trail on the checklist page, not on every page with those same final values.
A preview here does not add visible navigation to your website. Keep the markup consistent with the real hierarchy, and verify any separately rendered breadcrumb links. Do not assume generated markup guarantees the same search display on every device.
Copy and install JSON-LD on the matching page
Copy script gives you the complete HTML script element, including its JSON-LD content. Download gives you schema.json, containing the JSON object without the HTML wrapper. These outputs serve different insertion methods: a CMS field that expects raw JSON needs the data, while an HTML template can accept the complete script.
Google’s structured data introduction describes JSON-LD inside a script element in the page head or body. Use your site’s appropriate template, structured-data field or plugin mechanism. Pasting code into an ordinary paragraph editor may show it as text or remove it instead of installing markup.
Before adding another block, inspect what your CMS or theme already generates. An existing Article and BreadcrumbList can describe different aspects of the same page; the problem is contradictory descriptions of the same article, product or trail. Update the responsible implementation rather than leaving an old price or author alongside a new conflicting version.
The generator safely serializes supplied values for its script block, but it cannot confirm what your CMS ultimately publishes. Save the page, inspect the served output and verify that the intended values remain present. Copying or downloading alone changes nothing on your site.
Validate code, facts and search eligibility separately
Check the installed output in layers:
- Confirm that the JSON parses and the script is present on the intended page.
- Review the declared types and properties, including any nested objects.
- Compare names, prices, dates, images and navigation with the actual page.
- Check the current requirements for the search feature you want to support.
Use Structured Data Checker to inspect installed JSON-LD, parsing errors, entities and its selected property checks. Its coverage is limited. A nested Person or Offer, or an article subtype, can fall outside those checks and appear unsupported or partial. That status alone does not mean the generated structure is invalid; review the specific findings and use broader validation where necessary.
Use Google’s Rich Results Test for supported search features. Treat missing recommended information as a review task, not an invitation to add invented ratings, images or dates. Correct syntax also cannot establish that a real person wrote an article or that an offer is still available.
Google’s general structured data guidelines require relevant, accurate, current page information and applicable feature rules. Even correctly marked-up pages are not guaranteed a rich result. A property count in this generator measures output size, not completeness or an SEO score.
Keep the markup synchronized with future changes
Regenerate or update the responsible template when a price, stock state, author, meaningful article date or page hierarchy changes. Publish the visible facts and their markup together, then inspect the page again. This generator does not monitor later changes or update an existing installation automatically.
For translated pages, use the matching language’s headline, product description and breadcrumb labels, along with that version’s correct URLs and actual offer details. Keep technical property names such as headline and priceCurrency unchanged. A different interface language does not translate the facts you enter or create localized page versions for you.
Save the reviewed inputs and installation location with your own release notes. That makes the next update a concrete change to a known source instead of another isolated script that can drift away from the page.