JSON-LD Generator
Generate JSON-LD for Article, Product, Organization, and FAQPage pages with field checks, script output, property ledger, and review warnings.JSON-LD Generator
- {{ issue.detail }}
| Status | Scope | Detail | Next step | Copy |
|---|---|---|---|---|
| {{ row.status }} | {{ row.scope }} | {{ row.detail }} | {{ row.nextStep }} |
| JSON path | Value | Purpose | Copy |
|---|---|---|---|
| {{ row.path }} | {{ row.value }} | {{ row.purpose }} |
Introduction
JSON-LD gives web page content a machine-readable graph without changing the visible text that people read. Search engines, validators, and other crawlers can use that graph to identify the page's main entity, such as an article, product, organization, or FAQ set.
Structured data works best when it describes the same content already present on the page. It can clarify a headline, author, price, logo, contact point, profile URL, or question-and-answer pair, but it should not be used to add hidden claims or mark up content that readers cannot verify.
A valid JSON-LD block is still only a candidate for downstream use. Rich-result eligibility depends on search guidelines, page quality, supported feature policies, and deployed markup. The safest habit is to generate the graph, compare it against the visible page, then test the final URL after publication.
The useful question is not only whether the JSON parses. The graph should name the right entity, use a suitable Schema.org type, keep identifiers stable, and avoid fields that would surprise a reader who looks at the same page.
Technical Details:
A JSON-LD graph is ordinary JSON with linked-data keys that give the values shared meaning. @context names the vocabulary, @type names the kind of thing being described, and @id can give the entity a stable identifier that remains the same across future markup changes.
Schema.org supplies the common type and property names. A page about a product can use product, brand, SKU, offer, price, and availability properties; a FAQ page can use questions and accepted answers. The graph is most reliable when those properties mirror the public page content rather than private notes or draft claims.
JSON-LD is commonly embedded in an HTML document with type="application/ld+json". The script text must remain valid JSON, and any value that could prematurely close the script block needs escaping in the final script output.
Rule Core:
| Scope | Graph behavior | Review point |
|---|---|---|
| Common graph | Every output starts with @context set to https://schema.org and a Schema.org @type. A supplied entity @id is included. |
Use a stable absolute URL or fragment for @id, or leave it blank. |
| Article | Article, BlogPosting, or NewsArticle output can include headline, description, image array, dates, author, publisher, logo, and mainEntityOfPage. |
Match the visible headline, byline, publisher, dates, and canonical page URL. |
| Product | Product output can include name, description, image, SKU, brand, and an Offer with URL, price, currency, and availability. | Price must be a non-negative number, and offer fields should match the commerce page. |
| Organization | Organization output can include name, URL, logo, description, public contact point, and sameAs profile URLs. |
Keep only official profiles and public contact details that represent the same entity. |
| FAQPage | Complete Question | Answer rows become mainEntity questions with acceptedAnswer text. |
Each question and answer should be visible on the same page, and each row needs both sides of the pipe. |
Empty optional values are removed before the graph is displayed. That keeps blank fields from becoming meaningless properties, but it also means a missing required-looking value may leave a weaker graph than expected. For example, a FAQPage with no complete question-and-answer rows has no emitted mainEntity questions.
Audit Signals:
| Signal | When it appears | How to read it |
|---|---|---|
| Pass | JSON syntax, Schema.org context, and populated fields satisfy the current check. | The field is structurally ready, but still needs page-content confirmation. |
| Review | A page URL, image URL, logo URL, publisher, brand, offer, or entity @id may be incomplete or non-absolute. |
Fix it when the field should appear in published markup, or remove it when the page does not support it. |
| Missing | A required-looking field is empty, a product price is invalid, or a FAQ row lacks either a question or an answer. | Clear the blocker before copying the script for publication. |
| Info | The audit reminds you about content match, testing, FAQ eligibility, sameAs, or optional contact details. | Treat it as context that affects trust even when the graph has no blockers. |
visible page facts
-> choose Article, Product, Organization, or FAQPage
-> fill type-specific fields and optional entity @id
-> remove blank optional values
-> build JSON-LD graph
-> escape closing script sequences in the script view
-> audit URLs, required-looking fields, FAQ completeness, and product price
-> review Script Tag, Markup Audit, Property Ledger, and JSON
Minifying changes whitespace only. The graph fields and audit logic stay the same, so compare markup by its properties and audit rows rather than by indentation.
Everyday Use & Decision Guide:
Start by choosing the Schema type that matches the main entity on the page. If the page is an article, fill the visible headline, byline, publisher, publication date, update date, and representative image. If it is a product page, focus on the product name, visible description, product image, brand, SKU, and any offer details shown to customers.
Use Page URL for the canonical absolute URL where the markup will live. The summary can still show a script when the URL is blank, but the audit will ask for a crawlable URL before publication. Use Entity @id only when you have a stable entity URL or fragment that should persist across deployments.
- For Organization, use public contact details and one official profile URL per line in SameAs URLs.
- For FAQ Page, enter one
Question | Answerpair per row and remove draft rows that are not visible on the page. - Open Markup Audit before copying the script. A Missing row means the summary will show blockers.
- Use Property Ledger to compare each JSON path with the source page text, especially price, availability, dates, and profile URLs.
- Use the JSON view when another validator or code review needs the graph without the surrounding script tag.
Do not treat a quiet audit as a promise of rich-result display. It means the current graph is syntactically ready and has passed the local checks. Search policies, page quality, supported result type, and deployed-page validation still decide what appears in search.
The best final check is concrete. Compare the Script Tag and Property Ledger against the published page, then run the deployed URL through a structured-data validator before relying on the markup.
Step-by-Step Guide:
Follow the fields from the page-level entity down to the validation rows.
- Choose Schema type. The summary badge should change to the selected type, such as Article, Product, Organization, or FAQPage.
- Enter Page URL as an absolute
httporhttpsURL. If the audit shows a page URL review note, replace a relative path or blank value with the canonical page URL. - Fill Name or Headline, then complete the fields that match the chosen schema. Watch the field count badge and Property Ledger as blank optional values drop out of the graph.
- For articles, set Article subtype, Author name, Publisher name, and dates. For products, check Offer price, currency, and availability. If a price blocker appears, enter a non-negative number or clear the offer.
- For FAQPage output, add one
Question | Answerpair per line in FAQ pairs. If Incomplete FAQ rows appears, complete the missing side or remove the row. - Open Advanced only when needed. Add Entity @id for a stable entity identifier, and use Minify generated code when compact JSON is easier to paste.
- Review Markup Audit. Resolve Missing rows first, then decide whether each Review row should be fixed or intentionally omitted.
- Inspect Script Tag for the copy-ready markup and JSON for the graph alone. Validate the final page after deployment, not just the draft values.
Interpreting Results:
Structured-data script ready means no current audit row has Missing status. It does not mean every optional field is ideal, and it does not guarantee rich-result display. Review notes can still point to blank images, missing publisher details, optional offers, or a non-absolute entity @id.
| Result cue | Meaning | Action |
|---|---|---|
| Needs review | At least one Missing row blocks publication confidence. | Fix the named field, price, or FAQ row before copying the script. |
| Review notes | The graph can be valid JSON while still lacking a recommended field or absolute URL. | Use the Next step cell in Markup Audit to decide what to change. |
| Property Ledger | Each row maps a JSON path to the emitted value and its purpose. | Compare rows such as offers.price, datePublished, and sameAs with the visible page. |
| FAQ eligibility info | FAQPage syntax can be valid even when a search feature is not broadly available for the site. | Use FAQPage only when the page content and current search policies support it. |
The main false-confidence risk is copying a syntactically valid graph that describes content users cannot see. Resolve that by checking the ledger against the page, then validating the deployed URL with a structured-data test.
Worked Examples:
Article page. A page at https://www.example.com/news/launch-checklist with headline Launch Readiness Checklist, author Jordan Lee, publisher Example Editorial, image URL, and dates of 2026-05-06 should produce a Script Tag with @type set to the selected article subtype. Markup Audit should pass the headline, author, date, image, publisher, and page URL checks when those values are present and absolute.
Product offer with a price check. A product named Launch Readiness Workbook with brand Example Co, SKU LAUNCH-READY-001, price 49.00, currency USD, and availability In stock emits an Offer with offers.price formatted as 49.00. If the price is changed to -9 or text, Markup Audit marks Offer price as missing because the price is not a valid non-negative number.
FAQ row cleanup. Entering What is JSON-LD? | JSON-LD is structured data written as JSON. creates one complete question in JSON and Property Ledger. A second row such as Where should I add it? | is not emitted as a complete mainEntity question, and Incomplete FAQ rows tells you to finish or remove the row before publishing.
FAQ:
Which schema type should I choose first?
Choose the type that matches the main visible entity on the page. Use Article for editorial content, Product for a product page, Organization for an entity profile or contact page, and FAQPage only for visible question-and-answer content.
Why is the page URL flagged for review?
The URL is blank or not an absolute http or https URL. Replace it with the canonical page URL so fields such as mainEntityOfPage, organization URL, FAQ URL, and offer URL can point to the right page.
Why did a FAQ row disappear from the JSON?
FAQ rows need text on both sides of the pipe separator. A row with only a question or only an answer is flagged in Markup Audit and is not emitted as a complete question in the graph.
Does a ready script guarantee a rich result?
No. Structured-data script ready means the current local checks found no missing blockers. Rich-result display depends on deployed markup, current search policies, supported result type, and page quality.
Are entered values sent to a server?
The current generator assembles the graph in the browser after the page loads. The description of the tool does not show a server submission path for entered fields, so still handle copied scripts and shared URLs with normal care.
Glossary:
- JSON-LD
- A JSON syntax for linked data that can describe page content with shared vocabulary terms.
- Schema.org
- The vocabulary used here for types such as Article, Product, Organization, and FAQPage.
@context- The graph key that identifies the vocabulary used to interpret the JSON-LD properties.
@type- The graph key that names the kind of entity being described.
@id- An optional stable identifier for the entity, usually an absolute URL or URL fragment.
mainEntity- The FAQPage property that carries visible question-and-answer entries.
sameAs- A list of official profile URLs that identify the same organization or entity.
- Rich result
- A search presentation that may use structured data when the markup, page, and policy requirements qualify.
References:
- JSON-LD 1.1, W3C Recommendation, 16 July 2020.
- Getting started with Schema.org using Microdata, Schema.org.
- Intro to structured data markup in Google Search, Google Search Central.
- General structured data guidelines, Google Search Central.
- FAQPage structured data, Google Search Central.