Toolypet
Back to Blog
SEO

Complete Structured Data Guide 2026 - Get Rich Results with JSON-LD

Learn how to get Google Rich Snippets with Schema.org and JSON-LD. Implementation guide with practical examples for FAQ, How-to, and Product schemas.

Toolypet Team

Toolypet Team

Development Team

8 min read

Complete Structured Data Guide 2026

Have you seen star ratings, FAQs, or recipe cards in search results? That's Rich Results.

As of 2026, pages with rich results have an average 58% higher CTR. Make your content stand out with structured data.


What is Structured Data?

Structured data is a standardized format that helps search engines understand page content.

Key Concepts

TermDescription
Schema.orgVocabulary co-developed by Google, Microsoft, and Yahoo
JSON-LDJavaScript-based data format (Google recommended)
Rich ResultsEnhanced search results based on structured data
Rich SnippetOlder term for rich results

Why JSON-LD?

FormatProsCons
JSON-LDSeparate from HTML, easy maintenanceJavaScript dependency
MicrodataEmbedded directly in HTMLComplex code
RDFaFlexibleLearning curve

Google Official Recommendation: JSON-LD


Types of Rich Results

Major Types Supported by Google

TypeDisplay FormatUse Case
ArticleNews cardBlogs, News
FAQExpandable Q&AFAQ pages
How-toStep-by-step guideTutorials
ProductPrice, stock, ratingProduct pages
ReviewStar rating displayReview content
RecipeCook time, caloriesRecipes
EventDate, locationEvents
LocalBusinessHours, locationLocal businesses
BreadcrumbListPath displayAll pages

JSON-LD Basic Structure

Template

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "SchemaType",
  "property1": "value1",
  "property2": "value2"
}
</script>

Required Elements

ElementDescription
@contextAlways "https://schema.org"
@typeSchema type (Article, FAQ, etc.)
Required propertiesVaries by type

Practical Implementation Examples

1. Article (Blog/News)

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Complete Structured Data Guide 2026",
  "description": "How to get rich results with JSON-LD",
  "image": "https://example.com/article-image.jpg",
  "author": {
    "@type": "Person",
    "name": "Sam Rank",
    "url": "https://example.com/author/sam-rank"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Toolypet",
    "logo": {
      "@type": "ImageObject",
      "url": "https://toolypet.com/logo.png"
    }
  },
  "datePublished": "2026-02-22",
  "dateModified": "2026-02-22"
}

2. FAQ (Frequently Asked Questions)

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is structured data?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Structured data is a standardized format that helps search engines understand page content."
      }
    },
    {
      "@type": "Question",
      "name": "Where should I put JSON-LD?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "It can be placed anywhere in the HTML <head> or <body>, but placing it in the <head> is recommended."
      }
    }
  ]
}

3. How-to (Step-by-Step Guide)

{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "How to Add JSON-LD Structured Data",
  "description": "How to add JSON-LD to your webpage",
  "totalTime": "PT10M",
  "step": [
    {
      "@type": "HowToStep",
      "name": "Choose Schema Type",
      "text": "Select the Schema.org type that matches your page content."
    },
    {
      "@type": "HowToStep",
      "name": "Write JSON-LD Code",
      "text": "Write JSON-LD code according to your chosen schema."
    },
    {
      "@type": "HowToStep",
      "name": "Insert into HTML",
      "text": "Wrap the code with <script type='application/ld+json'> tag and insert into HTML."
    },
    {
      "@type": "HowToStep",
      "name": "Test",
      "text": "Validate using Google Rich Results Test."
    }
  ]
}

4. Product

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "SEO Guidebook 2026",
  "description": "Practical guide with the latest SEO strategies",
  "image": "https://example.com/product.jpg",
  "brand": {
    "@type": "Brand",
    "name": "Toolypet"
  },
  "offers": {
    "@type": "Offer",
    "price": "29.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "url": "https://example.com/product"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "reviewCount": "124"
  }
}

5. BreadcrumbList

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://example.com"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "SEO",
      "item": "https://example.com/seo"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Structured Data Guide",
      "item": "https://example.com/seo/structured-data"
    }
  ]
}

6. LocalBusiness

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Morning Glory Cafe",
  "image": "https://example.com/cafe.jpg",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main Street",
    "addressLocality": "San Francisco",
    "addressRegion": "CA",
    "postalCode": "94102",
    "addressCountry": "US"
  },
  "telephone": "+1-415-555-1234",
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "09:00",
      "closes": "22:00"
    }
  ],
  "priceRange": "$$"
}

Framework-Specific Implementation

Next.js

// app/layout.tsx or pages/_document.tsx
import Script from 'next/script';

export default function Layout({ children }) {
  const jsonLd = {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "name": "Toolypet",
    "url": "https://toolypet.com"
  };

  return (
    <html>
      <head>
        <Script
          id="json-ld"
          type="application/ld+json"
          dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
        />
      </head>
      <body>{children}</body>
    </html>
  );
}

React (Helmet)

import { Helmet } from 'react-helmet';

function ArticlePage({ article }) {
  const jsonLd = {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": article.title,
    "author": { "@type": "Person", "name": article.author }
  };

  return (
    <>
      <Helmet>
        <script type="application/ld+json">
          {JSON.stringify(jsonLd)}
        </script>
      </Helmet>
      <article>{/* Content */}</article>
    </>
  );
}

WordPress

// functions.php
function add_json_ld_schema() {
  if (is_single()) {
    $schema = array(
      "@context" => "https://schema.org",
      "@type" => "Article",
      "headline" => get_the_title(),
      "datePublished" => get_the_date('c')
    );
    echo '<script type="application/ld+json">' . json_encode($schema) . '</script>';
  }
}
add_action('wp_head', 'add_json_ld_schema');

Validation and Testing

Google Official Tools

ToolURLPurpose
Rich Results Testsearch.google.com/test/rich-resultsTest rich results eligibility
Schema Markup Validatorvalidator.schema.orgValidate schema syntax
Search Consolesearch.google.com/search-consoleCheck actual indexing status

Testing Checklist

  • No JSON syntax errors
  • All required properties included
  • Matches actual page content
  • Valid image URLs
  • Rich Results Test passed

Common Mistakes and Solutions

1. JSON Syntax Errors

// ❌ Wrong: trailing comma
{
  "name": "Test",
  "url": "https://example.com",  // Here!
}

// ✅ Correct
{
  "name": "Test",
  "url": "https://example.com"
}

2. Missing Required Properties

// ❌ Missing author in Article
{
  "@type": "Article",
  "headline": "Title only"
}

// ✅ Including required properties
{
  "@type": "Article",
  "headline": "Complete Article",
  "author": { "@type": "Person", "name": "Author" },
  "datePublished": "2026-02-22"
}

3. Content Mismatch

// ❌ Different from page content
{
  "@type": "Product",
  "price": "10000"  // Actual page shows 15000
}

// Google guideline violation = risk of manual action

4. Excessive Markup

❌ Marking up all text as structured data
❌ Applying schema to hidden content
❌ Including information not visible to users

✅ Only mark up actually visible content
✅ Structure only key information

SEO Impact

Expected Benefits

MetricImprovement
CTR (Click-through rate)+20-58%
ImpressionsRich results eligibility
TrustStar ratings, reviews displayed
Voice SearchAnswer candidate

Cautions

  • Structured data ≠ guaranteed ranking improvement
  • Rich results display is at Google's discretion
  • Manual action for guideline violations

Best Practices Checklist

Implementation

  • Choose appropriate schema for page type
  • Include all required properties
  • Use JSON-LD format
  • Place in <head>

Content

  • Matches actual page content
  • Only includes user-visible information
  • Keep information up to date

Testing

  • Rich Results Test passed
  • Schema Markup Validator passed
  • No errors in Search Console

FAQ

Q1: Does structured data directly affect rankings?

A: It's not a direct ranking factor. However, it has indirect effects like increased CTR and voice search answers.

Q2: Can I put multiple schemas on one page?

A: Yes! It's common to use Article + FAQ + BreadcrumbList together. Add each as a separate <script> tag.

Q3: Why aren't rich results showing?

A: Possible reasons:

  • Missing required properties
  • Page not indexed
  • Google's discretion (not guaranteed)
  • Competing pages more suitable

Q4: Microdata vs JSON-LD - which should I choose?

A: JSON-LD is recommended. It's officially recommended by Google and easier to maintain as it's separate from HTML.

Q5: Can structured data be applied to dynamic content?

A: Yes! Google can read JSON-LD generated by JavaScript. However, server-side rendering is more stable.


Conclusion

Structured Data Essentials:

  1. Use JSON-LD: Google recommended format
  2. Choose appropriate schema: Match content type
  3. Include required properties: Check type-specific requirements
  4. Match content: Only visible information
  5. Test thoroughly: Pass Rich Results Test

Related Tools

ToolPurpose
Structured Data GeneratorAuto-generate JSON-LD
Meta Tag GeneratorGenerate meta tags
SERP PreviewPreview search results
Structured DataJSON-LDSchema.orgRich SnippetsSEOSearch Optimization

About the Author

Toolypet Team

Toolypet Team

Development Team

The Toolypet Team creates free, privacy-focused web tools for developers and designers. All tools run entirely in your browser with no data sent to servers.

Web DevelopmentCSS ToolsDeveloper ToolsSEOSecurity