ShipworkSite inspection
Schema builder

Crawlability

PaginationAre paginated pages set up right?Internal searchIs site search eating crawl budget?URL parametersAre parameters creating duplicates?Log analyserWhat does Googlebot actually crawl?Robots builderNeed a robots.txt file?Soft 404sAre pages “not found” but returning 200?JavaScriptCan crawlers see it without running JS?FreshnessIs my site quietly going stale?Robots.txtDoes robots.txt say what I think?

Indexing

Sitemap lastmodAre my sitemap dates valid?SitemapIs my sitemap actually fetchable?IndexingIs Google allowed to index my pages?CanonicalsIs Google indexing the wrong URL?Index signalsDo sitemap and index signals agree?Sitemap generatorNeed a sitemap.xml for my site?Bulk URL statusWhere does each of these URLs really land?Redirect builderNeed the redirect rules?RedirectsAre my URLs answering directly, over HTTPS?

On-page

Keyword ideasWhat are people searching for?SERP previewHow does my page look in Google?Content qualityAre your pages too thin or too alike?Image weightAre images slowing the page?CannibalizationAre pages competing with each other?On-page checkDoes the page use its target phrase?ImagesAre my images accessible and loading?Meta tag builderWhat should my title and share tags say?DuplicatesDo my pages compete for one query?

Links

Orphan pagesWhich pages can no link reach?Link graphHow deep do your pages sit?Anchor textDo links say what they point at?Outbound linksAre external links still alive?Broken linksAre internal links sending visitors nowhere?

Structured data

Rich resultsIs my markup eligible for a rich result?Structured dataIs my product schema valid?Schema coverageDo my key pages carry structured data?Social previewHow does my page look when shared?Schema vs pageDoes markup match the page price?Schema builderNeed valid JSON-LD?

International

Hreflang sitemapDo page and sitemap hreflang agree?HreflangDo my language versions link back?Hreflang builderNeed the hreflang tags?Page DoctorWhy is this page not doing well?Redirect planMy site has dead links — what redirects do I write?Sitemap diffIs anything missing from my sitemap?Robots simulatorWhat does my robots.txt actually block?Can Googlebot?Can Googlebot fetch this URL?
Every error, explainedGuides
Pricing Learn Error guides Run free audit

+1 free check

Welcome to Shipwork

Sign in free and your next check this month is on us.

Continue with GoogleContinue with email

We email you a 6-digit code. No password.

No card needed. Reports and watches follow you to any device.

Generate valid JSON-LD schema

Pick a type, fill the fields, copy the markup. Required fields are enforced before output. The mistakes the checker flags most are impossible to generate here.

Manual generation runs in your browser. Page lookup reads the URL you enter.

After generating

Paste the block into your page, then run the structured-data check on the live URL. It parses every JSON-LD block including nested ProductGroup variants and names each missing field.

What the schema generator creates

Choose Product, FAQ or Article, fill in the required fields, and generate JSON-LD in your browser. The page does not send form data to a server. For Product, the required inputs are name, image URL, numeric price and currency code; availability can be selected as InStock, OutOfStock or PreOrder, and brand and product URL are optional. FAQ accepts one question and answer per line separated by ||. Article requires a headline and image URL, with author, publication date and publisher optional.

The output describes one of those types. It is not a general schema editor: it does not generate Organization, LocalBusiness, ProductGroup, shipping or return-policy markup. The form also does not fetch your page or prove that the information you entered is visible to shoppers. Treat generated JSON-LD as a starting block that you must compare with the live page.

How to read and use the output

The tool reports missing required form fields instead of outputting markup. After a successful generation, copy or download the JSON-LD and add it to the relevant page inside a script element with type application/ld+json. For example: <script type="application/ld+json">{"@context":"https://schema.org","@type":"Article"}</script>. Use the actual generated object, not this shortened illustration.

A generated block is syntactically structured data, not a promise of a Google rich result. Google requires the markup to describe the visible page and to follow the rules for the specific feature. Product markup from this tool contains a name, image and Offer; it does not include review data, SKU, variant relationships, shipping or returns. Validate the page after deployment with the structured-data check, then use Google’s Rich Results Test to see which Google-supported result requirements apply.

Common Product markup mistakes

The most serious mistake is publishing a price or stock status that differs from the page or checkout. The generator defaults availability to InStock if you leave that optional field blank, so change it whenever the real offer is not in stock. It does not know your inventory. Currency must be the three-letter code matching the price, such as USD, and the image URL should resolve to a crawlable product image.

Do not put Product markup on a page that is really a category or a product review. Do not reuse one product’s markup across other products, and do not add invented ratings. Google’s product result types have different requirements: merchant listings are for pages where the customer can buy the product, while product snippets can fit other product-related pages. Match markup to page purpose and visible facts.

A safe workflow for adding JSON-LD

First select the type that matches the page. For a product detail page, use Product; for editorial content use Article; for visible questions and answers use FAQPage only when those questions and answers are actually on the page. Fill in canonical URLs and facts from the page itself. If a Product has variants, this form does not create ProductGroup markup, so use a platform implementation or write that structure separately rather than pretending a single Offer represents all variants.

Add the JSON-LD to the template responsible for that URL, then view the fetched source and confirm the script appears once with the expected values. Check for a second schema plugin or theme block that already emits the same entity; duplicate or conflicting blocks can make debugging harder. Finally test the live URL with the rich results check or schema content check. Re-run after theme changes and price updates.

When to use related tools

Use the generator when you need a first Product, FAQPage or Article JSON-LD block. Use the structured-data check when markup is already live and you want Shipwork to parse the blocks it can fetch, including nested ProductGroup variants. Use Rich Results for checks focused on Google result eligibility. If your issue is a specific missing product field, the no product markup fix explains how to investigate the page rather than generate a new block.

Questions

Which schema type do I need?
Product pages want Product (or ProductGroup for variants). Question-and-answer content wants FAQPage. Editorial content wants Article. Pick the one matching the visible page content. Markup must describe what visitors already see.
What makes Product markup valid?
A name plus an offer with price, priceCurrency and availability at minimum. Image, brand, shipping and returns strengthen it. The generator enforces the required fields before it outputs.
Where do I paste the output?
In a script tag of type application/ld+json in the page head or body. One block per type is cleanest; the checker parses every block it finds.
How do I know it worked?
Paste the URL into the structured-data check after deploying. It parses every JSON-LD block the way a crawler does, including nested ProductGroup variants.
How do I generate Product schema for Google Shopping?
Select Product and enter the visible product name, a working image URL, the current numeric price and the matching currency code. Set availability to match inventory; add brand and the exact product URL when available. The generator outputs JSON-LD but does not check your Merchant Center feed or verify that the facts match the live page. Validate after publishing.
Does this schema generator create ProductGroup markup for variants?
No. It creates a single Product with one Offer, plus FAQPage and Article types. A product with distinct sizes, colors or other variants may need ProductGroup and hasVariant structured data. Use the live structured-data check to inspect existing nested markup, or implement the variant structure separately using Google's current documentation.
Why does Google not show rich results after I add schema?
Valid JSON-LD makes a page eligible only when it meets the requirements for a supported search feature. Google can choose not to show an enhancement. Also check that the markup matches visible content, the URL is crawlable and indexed, and the selected schema type suits the page. The generator cannot test those conditions by itself.
Can I use FAQ schema on any page with questions?
Use FAQPage markup only for question-and-answer content that is actually visible on the page and follows the applicable search feature policies. The generator accepts lines in Question || Answer format but cannot confirm that those answers appear on the page. Do not add hidden or fabricated questions to try to influence search display.
Where should I paste JSON-LD in Shopify or WordPress?
Add it to the product or content template that renders the matching page, either in the head or body. In Shopify this is usually a theme template or a carefully chosen app; in WordPress it may be the theme or SEO plugin. Check for existing markup first, then inspect the public page source to avoid duplicate or stale blocks.