← All Posts

How to Create JSON-LD Structured Data for SEO (Schema.org)

Published on February 10, 2026

What Is Structured Data?

Structured data is a standardized format for providing information about a page and classifying its content. Search engines like Google, Bing, and Yahoo use structured data to understand the meaning of your content beyond what they can infer from the plain text. This understanding enables rich results — enhanced search listings that include star ratings, images, FAQ accordions, pricing information, event dates, and more.

When you search for a recipe and see cooking time, calorie count, and a star rating directly in the search results, that information comes from structured data markup on the page. Similarly, when you see FAQ dropdowns, product pricing, or event details in search results, those are all powered by structured data.

The vocabulary for structured data is defined by Schema.org, a collaborative project between Google, Microsoft, Yahoo, and Yandex. Schema.org defines hundreds of types (Article, Product, Organization, Event, Recipe, etc.) and thousands of properties that describe each type.

Why JSON-LD?

There are three formats for adding structured data to a webpage: JSON-LD, Microdata, and RDFa. Google recommends JSON-LD as the preferred format, and for good reason:

  • Separation of concerns. JSON-LD is placed in a <script> tag in the document head, completely separate from the visible HTML. You do not need to modify your page templates or add attributes to existing HTML elements.
  • Easy to maintain. The JSON-LD block is a single, self-contained object that is easy to read, edit, and validate. Microdata and RDFa require sprinkling attributes throughout your HTML markup, making maintenance much harder.
  • Framework friendly. JSON-LD works well with JavaScript frameworks like React, Next.js, Remix, and Vue because you can generate it dynamically from your data without touching the template structure.
  • Google's recommendation. Google explicitly states that JSON-LD is its preferred format for structured data. While it supports all three formats, JSON-LD receives the most attention in documentation and tooling.

JSON-LD Format

JSON-LD (JavaScript Object Notation for Linked Data) is a method of encoding structured data using JSON. Every JSON-LD block starts with an @context that references Schema.org and an @type that specifies the schema type:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "PulpMiner",
  "url": "https://www.pulpminer.com",
  "description": "Turn any webpage into structured JSON data."
}
</script>

The @context tells search engines that the vocabulary comes from Schema.org. The @type specifies what kind of thing is being described. All other properties are defined by the schema type. You can include multiple JSON-LD blocks on a single page if the page describes multiple entities.

Common Schema Types

Article

The Article schema is used for blog posts, news articles, and editorial content. It helps Google understand the headline, author, publication date, and featured image, which can lead to enhanced display in Google News and Top Stories:

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "How to Create JSON-LD Structured Data",
  "description": "A complete guide to implementing structured data.",
  "image": "https://example.com/images/jsonld-guide.png",
  "author": {
    "@type": "Organization",
    "name": "PulpMiner",
    "url": "https://www.pulpminer.com"
  },
  "publisher": {
    "@type": "Organization",
    "name": "PulpMiner",
    "logo": {
      "@type": "ImageObject",
      "url": "https://www.pulpminer.com/logo.png"
    }
  },
  "datePublished": "2026-02-10",
  "dateModified": "2026-02-10"
}

Product

The Product schema enables rich product snippets in search results, showing price, availability, and review ratings. This is essential for e-commerce sites:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Wireless Bluetooth Headphones",
  "image": "https://example.com/headphones.jpg",
  "description": "Premium noise-cancelling wireless headphones.",
  "brand": {
    "@type": "Brand",
    "name": "AudioPro"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/headphones",
    "priceCurrency": "USD",
    "price": "149.99",
    "availability": "https://schema.org/InStock",
    "seller": {
      "@type": "Organization",
      "name": "Example Store"
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "1247"
  }
}

FAQPage

The FAQPage schema generates expandable question-and-answer sections directly in Google search results. This can dramatically increase the visual size of your listing and drive more clicks:

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is JSON-LD?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "JSON-LD is a method of encoding structured data using JSON, recommended by Google for adding Schema.org markup to web pages."
      }
    },
    {
      "@type": "Question",
      "name": "Does structured data improve SEO?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Structured data does not directly affect rankings, but it enables rich results that significantly improve click-through rates from search results."
      }
    }
  ]
}

Organization

The Organization schema provides information about your company or brand. It helps Google display a knowledge panel with your logo, contact information, social media profiles, and founding details:

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "PulpMiner",
  "url": "https://www.pulpminer.com",
  "logo": "https://www.pulpminer.com/logo.png",
  "description": "Turn any webpage into structured JSON data.",
  "sameAs": [
    "https://twitter.com/pulpminer",
    "https://github.com/pulpminer"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer support",
    "email": "support@pulpminer.com"
  }
}

Other Useful Types

Schema.org defines hundreds of types. Here are several that commonly generate rich results:

  • BreadcrumbList — Displays a breadcrumb trail in search results instead of a raw URL, helping users understand your site hierarchy.
  • HowTo — Shows step-by-step instructions with optional images and time estimates. Useful for tutorials and guides.
  • WebApplication — Describes a software application accessible through a browser. Can show ratings and pricing in search results.
  • LocalBusiness — Displays business hours, address, phone number, and reviews. Essential for businesses with physical locations.
  • Event — Shows event dates, locations, and ticket prices directly in search results.
  • Recipe — Displays cooking time, calories, ratings, and an image. One of the most visually rich result types.

Google Rich Results

Rich results are enhanced search listings that go beyond the standard blue link and description. They are powered by structured data and can take many forms: review stars, FAQ accordions, product prices, recipe cards, event listings, and job postings. Google reports that pages with valid structured data receive higher click-through rates than standard results.

Not all schema types produce rich results. Google only supports rich results for specific types documented in their Search Gallery. Adding structured data for unsupported types still helps Google understand your content but will not produce a visual enhancement in search results.

Important caveats about rich results:

  • Valid structured data does not guarantee rich results. Google decides whether to show rich results based on many factors including page quality, user intent, and device.
  • Structured data must accurately describe visible page content. If your JSON-LD claims a 5-star rating but your page shows 3 stars, Google may issue a manual penalty.
  • Rich results availability varies by country and language. Some rich result types are only available in certain regions.

Testing with Rich Results Test

Google provides the Rich Results Test tool (available at search.google.com/test/rich-results) to validate your structured data. You can test by entering a URL or pasting your HTML code directly. The tool will:

  1. Detect all structured data on the page (JSON-LD, Microdata, and RDFa).
  2. Validate each block against Google's requirements, showing errors and warnings.
  3. Preview how your rich result will appear in search results.

Additionally, Google Search Console provides a dedicated "Enhancements" section that shows structured data errors and warnings across your entire site. Monitor this regularly to catch issues before they affect your search appearance.

Another useful tool is Schema Markup Validator (validator.schema.org), which validates your markup against the full Schema.org vocabulary, not just the subset Google supports. This is helpful for ensuring correctness even for types that do not produce Google rich results.

Implementation Tips

  • Start with the most impactful types. Article, FAQPage, Product, and BreadcrumbList are the most commonly used and most likely to produce visible rich results.
  • Use absolute URLs. All URL properties in your JSON-LD must be absolute (including the protocol). Relative URLs will cause validation errors.
  • Match visible content. The data in your JSON-LD must match what users see on the page. Do not add fake reviews, inflated ratings, or misleading prices. Google enforces this through manual actions.
  • One primary type per page. While you can have multiple JSON-LD blocks, each page should have one primary schema type that describes the main content. A blog post uses Article, a product page uses Product, etc.
  • Keep it updated. If your page content changes (new price, updated publish date, different rating), update the structured data to match. Stale structured data can trigger warnings in Search Console.
  • Nest related entities. Use nested objects for related entities like author, publisher, and offers rather than referencing them by URL. This gives search engines the most complete picture in a single block.
  • Test before deploying. Always validate your JSON-LD with the Rich Results Test before pushing to production. A syntax error or missing required property can silently prevent rich results.

Using the PulpMiner JSON-LD Generator

Writing JSON-LD by hand is error-prone. Missing a comma, forgetting a required property, or using the wrong type name can all cause validation failures. The PulpMiner JSON-LD Generator lets you select a schema type, fill in a form with your data, and instantly generates valid JSON-LD code that you can copy and paste into your page. It supports Article, Product, FAQPage, Organization, BreadcrumbList, WebApplication, and more. Every generated block is validated against Schema.org requirements in real time.

Need to extract data from websites?

PulpMiner turns any webpage into structured JSON data. No scraping code needed.

Try PulpMiner Free

No credit card required