JSON-LD structured data block showing @context schema.org and @type BlogPosting with required fields
SEO Tools

JSON-LD Schema Markup Examples — Copy-Paste Templates for 6 Common Types

Sunny Pal Singh · · 8 min read

Schema markup is one of those SEO tasks that looks intimidating — a wall of JSON in your page source that nobody explains. But every type follows the same pattern, and Google's rich result eligibility boils down to one question: did you include the required fields? This post gives you copy-paste JSON-LD examples for the six most common schema types with field-by-field explanations.

Every schema type on schema.org has the same skeleton: a @context, a @type, and a set of properties. The difference between a schema block that earns rich results and one that does nothing is whether you hit the required fields for your chosen type. Missing one required field doesn't just reduce the rich result — in most cases it disqualifies the entire block.

Below are the six types you'll actually use on a typical site, with copy-paste templates and annotations for what's required vs. recommended.

Key Takeaways

  • JSON-LD is Google's preferred format — inject it in a <script type="application/ld+json"> tag, no HTML modification needed
  • @context is always https://schema.org; @type declares what kind of entity you're describing
  • Required fields vary by type — missing one blocks rich result eligibility; recommended fields improve snippet appearance
  • One page can have multiple JSON-LD blocks — one per entity type, no conflicts
  • Validate with the Schema Markup Tester before publishing — catches missing required fields and type mismatches Google won't tell you about

How JSON-LD Works

JSON-LD (JSON Linked Data) is embedded in a <script> tag in your page <head> or <body>:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Your Article Title"
}
</script>

Googlebot reads these blocks independently of your visible HTML — you don't need to modify your page structure or add microdata attributes to your markup. One page can have multiple JSON-LD blocks; Googlebot processes each independently. The @context tells parsers which vocabulary you're using (always https://schema.org). The @type tells them what kind of thing you're describing.

Article / BlogPosting

Use for: news articles, blog posts, how-to guides. Enables article rich results including author, date, and image in search snippets.

{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "How to Check DNS Records — A, AAAA, MX, TXT Explained",
  "description": "What each DNS record type does and how to check any domain's records.",
  "datePublished": "2026-03-30T10:00:00Z",
  "dateModified": "2026-03-30T10:00:00Z",
  "author": {
    "@type": "Person",
    "name": "Sunny Pal Singh",
    "url": "https://www.linkedin.com/in/sunny-pal-singh/",
      "sameAs": ["https://www.linkedin.com/in/sunny-pal-singh/"]
  },
  "publisher": {
    "@type": "Organization",
    "name": "ByteWaveNetwork",
    "url": "https://www.bytewavenetwork.com"
  },
  "image": "https://www.bytewavenetwork.com/og/blog/json-ld-schema-examples.jpg",
  "url": "https://www.bytewavenetwork.com/blog/dns-records-guide/"
}

Required for rich results: author, datePublished, headline, image
Recommended: dateModified, publisher, description

@type can be Article, BlogPosting, or NewsArticle. Use BlogPosting for editorial content, NewsArticle for time-sensitive news. The distinction matters for Google News eligibility.

FAQPage

Use for: pages with an FAQ section. Enables the expandable Q&A rich result in search — each question can expand inline in the SERP without the user clicking through.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is a canonical tag?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "A canonical tag is a link element in the page head that tells search engines which URL is the authoritative version of a page."
      }
    },
    {
      "@type": "Question",
      "name": "Does Google always respect canonical tags?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No — canonical tags are a hint, not a directive. Google can override them if it determines a different URL is a better canonical."
      }
    }
  ]
}

Required: mainEntity array with at least one Question and acceptedAnswer
Note: Keep acceptedAnswer.text plain text — HTML in answers renders inconsistently across surfaces. Don't include leading promotional content before the answer.

BreadcrumbList

Use for: every page with a navigation hierarchy. Enables breadcrumb display in search snippets — the path appears below the title instead of just the URL.

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://www.bytewavenetwork.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Blog",
      "item": "https://www.bytewavenetwork.com/blog/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "DNS Records Guide",
      "item": "https://www.bytewavenetwork.com/blog/dns-records-guide/"
    }
  ]
}

Required: itemListElement array; each item needs position, name, item (URL)
Note: position must be sequential integers starting at 1. The last item's item URL is the current page's canonical URL. Mismatching breadcrumb URLs with your actual URL structure is the most common BreadcrumbList mistake.

Organization

Use for: your homepage or about page. Helps Google's Knowledge Panel and establishes brand entity disambiguation across the web.

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "ByteWaveNetwork",
  "url": "https://www.bytewavenetwork.com",
  "logo": "https://www.bytewavenetwork.com/favicon.svg",
  "description": "Free web tools for developers and SEO professionals.",
  "sameAs": [
    "https://twitter.com/bytewavenetwork",
    "https://github.com/bytewavenetwork"
  ]
}

Required: name, url
Recommended: logo, description, sameAs

The sameAs array is particularly valuable — it links your schema entity to verified external profiles, strengthening entity disambiguation. Google uses this to associate your schema entity with external knowledge about your brand. Include your verified social profiles, Wikipedia article, and Wikidata entry if available.

Product

Use for: e-commerce product pages or paid tool plans. Enables price, availability, and review star ratings in search results.

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "SEO Analyzer Pro",
  "description": "Full site SEO audit tool — crawls up to 1000 pages and scores each on 22 checks.",
  "brand": {
    "@type": "Brand",
    "name": "ByteWaveNetwork"
  },
  "offers": {
    "@type": "Offer",
    "price": "29.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "url": "https://www.bytewavenetwork.com/pricing/"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "reviewCount": "124"
  }
}

Required for price rich results: offers with price, priceCurrency, availability
Required for review stars: aggregateRating with ratingValue and reviewCount

Don't fabricate aggregateRating values. Google's quality rater guidelines and manual review process specifically look for fake reviews. Sites caught inflating ratings receive manual actions that can take months to recover from. Only include aggregateRating if you have real, verifiable reviews from your users.

WebPage / WebApplication

Use for: tool pages, landing pages, and any page that doesn't fit a more specific type. Required fields for WebPage: name, url, description. Missing name raises an ERROR (not just a warning) in the Schema Markup Tester.

{
  "@context": "https://schema.org",
  "@type": "WebApplication",
  "name": "DNS Lookup Tool",
  "url": "https://www.bytewavenetwork.com/tools/dns-lookup/",
  "description": "Free DNS lookup tool — check A, AAAA, MX, TXT, CNAME, NS records for any domain.",
  "applicationCategory": "UtilitiesApplication",
  "operatingSystem": "Web",
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "USD"
  },
  "breadcrumb": {
    "@type": "BreadcrumbList",
    "itemListElement": [
      { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.bytewavenetwork.com/" },
      { "@type": "ListItem", "position": 2, "name": "DNS Lookup", "item": "https://www.bytewavenetwork.com/tools/dns-lookup/" }
    ]
  }
}

Required: name, url, description
For WebApplication: add applicationCategory, operatingSystem, offers
Note: Embedding the BreadcrumbList inside the WebPage/WebApplication breadcrumb property is equivalent to a separate BreadcrumbList block — you only need one.

Stacking Multiple Blocks on One Page

A typical tool page might have all four of these simultaneously:

<!-- Block 1: What the page is -->
<script type="application/ld+json">{ "@type": "WebApplication", ... }</script>

<!-- Block 2: Navigation context -->
<script type="application/ld+json">{ "@type": "BreadcrumbList", ... }</script>

<!-- Block 3: Step-by-step instructions -->
<script type="application/ld+json">{ "@type": "HowTo", ... }</script>

<!-- Block 4: FAQ section -->
<script type="application/ld+json">{ "@type": "FAQPage", ... }</script>

Googlebot processes each block independently. There's no conflict or priority between them — they all contribute separate signals. The only constraint is that each block must be internally consistent and valid for its type.

Validating Your Schema Markup

Google's Rich Results Test only checks for rich result eligibility — it won't flag missing recommended fields or type mismatches that don't affect rich results. The Schema Markup Tester catches both, including the missing name on WebPage that the Rich Results Test silently ignores.

Three validation tools:

1. Google Rich Results Test (search.google.com/test/rich-results) — checks Google-specific rich result eligibility. Best for FAQPage, Product, Article. Doesn't catch all spec violations.

2. Schema.org Validator (validator.schema.org) — checks spec compliance against the full schema.org vocabulary, not Google-specific rules. Useful for types Google doesn't support for rich results.

3. ByteWaveNetwork Schema Markup Tester — validates required and recommended fields for 18 schema types; flags missing name on WebPage, empty acceptedAnswer text, missing datePublished on BlogPosting, and other issues that affect both Google rich results and broader schema compliance. Supports single-page checks and sitemap-based multi-page scans to audit an entire site at once.

Validate Schema Markup on Any Page

Free, no signup. The Schema Markup Tester extracts JSON-LD, Microdata, and RDFa from any URL and validates required and recommended fields against 18 schema.org types.

Try the Schema Markup Tester Free →
SP

Sunny Pal Singh

Fellow · Technical Director — AI Infrastructure, Cloud Orchestration & Network Automation

Sunny is a Fellow and Technical Director specialising in AI infrastructure, cloud orchestration, and network automation. With hands-on depth across AWS, Azure, GCP, Red Hat OpenStack, and OpenShift, he leads high-performing teams of architects and engineers building transformative solutions at scale. He built ByteWaveNetwork to bring the same engineering rigour to everyday web tooling.

Affiliate disclosure: Some links on this page may be affiliate links. We only mention tools we've personally used and have an honest opinion about. Affiliate revenue helps keep ByteWaveNetwork's tools free and maintained. We are not paid by any of the tools compared in this article for favorable coverage.

Choose design