FREE SEO AUDIT

Schema Markup Generator: JSON-LD for Every Page Type

How to generate schema markup (JSON-LD) for articles, products, FAQs, how-tos, breadcrumbs, and local businesses — with a free schema generator tool.

Schema markup (structured data) tells search engines and AI systems exactly what your page is about — not by making them infer it from text, but by explicitly labeling the type of content, the entities involved, and the relationships between them. Adding it correctly unlocks rich results in Google SERPs and makes your content more likely to be cited in AI-generated answers.

This guide covers what schema markup is, which types you need for each page type, the JSON-LD format you should use, common implementation mistakes, and how to generate it for free.

What is schema markup?

Schema markup is code added to a web page that explicitly describes its content in a format search engines can read without inference. The standard vocabulary is Schema.org, maintained by Google, Microsoft, Yahoo, and Yandex. The implementation format recommended by Google is JSON-LD — a <script> block placed in the page <head>.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Schema Markup Generator: JSON-LD for Every Page Type",
  "datePublished": "2026-07-12",
  "author": {
    "@type": "Person",
    "name": "DeepSEOAnalysis Team"
  }
}
</script>

When Googlebot crawls this page, it reads the JSON-LD and understands that this is an Article published on a specific date by a specific author — without having to parse the headline, date, and byline from the page HTML. AI systems work the same way: explicit schema reduces the interpretive work, which means better extraction and more reliable citations.

Why use JSON-LD instead of Microdata or RDFa?

Three formats can implement schema: JSON-LD, Microdata, and RDFa. Google recommends JSON-LD. Here's why it's the right choice:

  • Separation of concerns — JSON-LD lives in the <head> or as a separate <script> block. It doesn't mix structured data with your HTML content, so you can add or update it without touching visible content.
  • Easier to generate and validate — you can produce correct JSON-LD programmatically, copy-paste it from a generator, and validate it independently.
  • Works with dynamic content — JavaScript can inject JSON-LD at runtime. Microdata and RDFa must be in the rendered HTML.
  • Google's validation tooling focuses on JSON-LD — the Rich Results Test and Schema.org validator are optimized for it.

Which schema type goes on which page?

| Page type | Primary schema type | Supporting types | |---|---|---| | Blog post / article | Article or BlogPosting | BreadcrumbList, Person (author) | | Product page | Product | Offer, AggregateRating | | FAQ section / page | FAQPage | — | | How-to guide | HowTo | HowToStep | | Local business | LocalBusiness | PostalAddress, OpeningHours | | Homepage / site | WebSite, Organization | SearchAction | | Software / tool | SoftwareApplication | Offer | | Event | Event | Place, Offer | | Recipe | Recipe | HowToStep, AggregateRating | | Review | Review | Rating |

Use the schema generator tool to produce valid JSON-LD for any of these types. The tool outputs copy-paste ready code with all required properties filled in.

Article / BlogPosting schema

For blog posts and articles, use Article (or the more specific BlogPosting):

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Schema Markup Generator: JSON-LD for Every Page Type",
  "description": "How to generate schema markup for articles, products, FAQs, and more.",
  "datePublished": "2026-07-12T00:00:00Z",
  "dateModified": "2026-07-12T00:00:00Z",
  "author": {
    "@type": "Person",
    "name": "Author Name",
    "url": "https://example.com/about"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Site Name",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png"
    }
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.com/blog/schema-markup"
  },
  "image": "https://example.com/images/schema-guide.png"
}

Required properties for Google's Article rich result: headline, image, datePublished, author.name. Missing image is the most common reason Article schema doesn't generate a rich result.

FAQPage schema

FAQPage is one of the most impactful schema types for both SEO and GEO (AI visibility). It marks up question-and-answer content so Google can show it as expandable FAQ dropdowns in SERPs, and so AI systems can extract explicit answers to questions.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is schema markup?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Schema markup is code added to a webpage that explicitly describes its content in a machine-readable format using the Schema.org vocabulary."
      }
    },
    {
      "@type": "Question",
      "name": "Which schema format should I use?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "JSON-LD, recommended by Google. It separates structured data from page content and is easier to generate, validate, and update."
      }
    }
  ]
}

The acceptedAnswer.text field can include basic HTML. Each mainEntity item must have @type: Question, name (the question), and acceptedAnswer with @type: Answer and text.

HowTo schema

HowTo schema marks step-by-step instructional content. It's a strong AI citation signal — systems answering "how to" questions look for pages with explicit step structure.

{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "How to Add Schema Markup to a Page",
  "description": "Step-by-step instructions for adding JSON-LD schema markup to any webpage.",
  "totalTime": "PT10M",
  "step": [
    {
      "@type": "HowToStep",
      "position": 1,
      "name": "Choose your schema type",
      "text": "Identify which Schema.org type applies to your page: Article for blog posts, FAQPage for Q&A content, Product for e-commerce, etc."
    },
    {
      "@type": "HowToStep",
      "position": 2,
      "name": "Generate the JSON-LD",
      "text": "Use the DeepSEOAnalysis schema generator to produce valid JSON-LD with all required properties. Copy the output."
    },
    {
      "@type": "HowToStep",
      "position": 3,
      "name": "Add it to your page head",
      "text": "Paste the JSON-LD inside a <script type=\"application/ld+json\"> tag in your page's <head> section."
    },
    {
      "@type": "HowToStep",
      "position": 4,
      "name": "Validate with the Rich Results Test",
      "text": "Use Google's Rich Results Test or the full DeepSEOAnalysis audit to confirm the schema is valid and eligible for rich results."
    }
  ]
}

Product schema

For e-commerce pages, Product schema is essential for Google Shopping integration and rich results (price, availability, ratings shown in SERP):

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Product Name",
  "description": "Product description.",
  "image": "https://example.com/product.jpg",
  "sku": "SKU-001",
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/product",
    "priceCurrency": "USD",
    "price": "29.00",
    "priceValidUntil": "2026-12-31",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "reviewCount": "127"
  }
}

Common errors: using "InStock" instead of "https://schema.org/InStock", omitting priceCurrency, or mismatching the price value with what's displayed on the page. Google's Rich Results Test flags all of these.

BreadcrumbList schema

BreadcrumbList marks your page's position in the site hierarchy and enables Google to show the breadcrumb trail in SERPs (e.g., "example.com › blog › seo") instead of the raw URL:

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://example.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Blog",
      "item": "https://example.com/blog/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Schema Markup Generator Guide"
    }
  ]
}

The last ListItem (the current page) typically omits the item URL since it's the canonical location. position values must be unique sequential integers starting at 1.

Organization and WebSite schema

These go in the root layout so they appear on every page — they establish your site's entity in Google's knowledge graph:

[
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "name": "DeepSEOAnalysis",
    "url": "https://deepseoanalysis.com",
    "logo": "https://deepseoanalysis.com/logo.png",
    "sameAs": [
      "https://twitter.com/yourhandle",
      "https://linkedin.com/company/yourcompany"
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "url": "https://deepseoanalysis.com",
    "potentialAction": {
      "@type": "SearchAction",
      "target": {
        "@type": "EntryPoint",
        "urlTemplate": "https://deepseoanalysis.com/?url={search_term_string}"
      },
      "query-input": "required name=search_term_string"
    }
  }
]

The WebSite SearchAction enables Google Sitelinks Search Box — when users search your brand, Google can show a search box in the result that submits directly to your site's search.

What are the most common schema markup mistakes?

Missing required properties: every schema type has required and recommended properties. Missing image on Article, missing priceCurrency on Offer, or missing acceptedAnswer on Question will fail validation.

Schema that doesn't match page content: if your Product schema says InStock but the page says "Out of Stock," Google will reject the rich result. Schema must accurately reflect what's on the visible page.

Conflicting schema from plugins and theme: WordPress sites often have three sources of schema — the theme, an SEO plugin, and a custom block — all generating separate Article or Product JSON-LD. Multiple conflicting definitions cause validation errors. The full audit detects duplicate schema declarations.

Using the wrong type: BlogPosting and Article are both valid for blog content, but NewsArticle should only be used for news publications. Using schema types you're not eligible for (e.g., Review without a genuine reviewer, Recipe for non-recipe content) risks a manual action.

Not including @context: every JSON-LD block needs "@context": "https://schema.org" or Google can't interpret the type declarations.

How do I validate schema markup?

Two tools:

Google's Rich Results Test — paste a URL or HTML snippet and see which rich results your page is eligible for, and any validation errors. This is the authoritative source for whether Google accepts your schema.

DeepSEOAnalysis full audit — the free site audit validates all JSON-LD on every crawled page automatically. It checks required properties, detects conflicting schema, and surfaces pages that have FAQ content without FAQPage schema or product content without Product schema. For a full-site schema audit across dozens of pages, the automated approach is much faster than testing each URL individually.

What's the difference between schema markup and SEO score?

Schema markup contributes to the structured-data category of the audit score (15% weight). Pages with missing or invalid schema score lower in this category. But schema's biggest impact isn't the score — it's rich results eligibility (expanded SERP real estate, higher CTR) and AI citation readiness (FAQPage and HowTo schema are the two signals most directly tied to being cited in AI-generated answers).

Use the schema generator to produce the JSON-LD, add it to your page, then re-run the audit to confirm it validates clean.


FAQ

Do I need schema markup to rank on Google? No — schema markup is not a direct ranking signal. But it is required for rich results (FAQ dropdowns, review stars, product price/availability in SERPs), and rich results generate significantly higher CTR than standard blue links. For AI visibility, FAQPage and HowTo schema are the most direct signals that make content extractable for AI-generated answers.

Can I have multiple schema types on one page? Yes. A blog post page commonly has Article (for the content) + BreadcrumbList (for navigation) + FAQPage (for a FAQ section at the bottom). They can coexist in the same JSON-LD <script> block as an array, or in separate <script> blocks.

Does schema markup slow down my page? No. JSON-LD in a <script type="application/ld+json"> block is not executed JavaScript — it's parsed as data by crawlers and ignored by the browser renderer. It adds a few hundred bytes to the HTML payload, which has negligible performance impact.

What's the difference between @type Article and BlogPosting? BlogPosting is a subtype of Article — it's more specific. Both are valid for blog content and Google treats them similarly. Use BlogPosting for conversational/opinion posts and Article for more formal editorial content. The practical difference in search behavior is minimal.

Run DeepSEOAnalysis on your own site.

Free, no signup. Technical SEO, Core Web Vitals, structured data, and AI visibility in one report.

Run a free audit →