Skip to main content
Comparison

JSON-LD vs BlogPosting Schema: What's the Difference?

By ยท Updated ยท 6 min read

The Core Distinction: Format vs. Vocabulary

JSON-LD is a syntax format โ€” a way of embedding structured data into a webpage using a script tag containing linked data notation. BlogPosting Schema is a vocabulary type โ€” a specific set of properties defined by Schema.org that describes a blog article. One is the container; the other is the content that goes inside it.

The relationship is similar to the difference between HTML and the words you put inside it. You write BlogPosting Schema using JSON-LD syntax. You can also write BlogPosting Schema using Microdata or RDFa syntax, but JSON-LD is the format Google recommends. Conflating the two is a common error that causes developers to implement one while thinking they've implemented both.

How JSON-LD Works as a Format

JSON-LD structured data lives inside a `<script type="application/ld+json">` tag placed anywhere in the HTML โ€” typically in the `<head>` or at the bottom of `<body>`. The tag is invisible to visitors but fully readable by crawlers. The `@context` key declares the vocabulary namespace (usually schema.org), and `@type` declares what kind of thing is being described.

JSON-LD can express any Schema.org type: Product, FAQPage, BreadcrumbList, Organization, Article, BlogPosting, and hundreds more. A single page can include multiple JSON-LD blocks, each wrapped in its own script tag. The format supports nesting, so a BlogPosting can embed an Author object, which itself embeds a sameAs link to a social profile โ€” all inside one JSON-LD block.

Because JSON-LD sits in a script tag rather than being woven into the visible HTML, developers can add or update it without touching the page's visual markup. This makes it the lowest-friction format for retrofitting structured data onto an existing ecommerce blog.

How BlogPosting Schema Works as a Vocabulary

BlogPosting is a Schema.org type that sits in the inheritance chain: Thing > CreativeWork > Article > SocialMediaPosting > BlogPosting. It inherits all properties from those parent types, which is why properties like `author`, `datePublished`, `headline`, `image`, and `publisher` are all valid on a BlogPosting even though they're technically defined higher up the chain.

The properties that matter most for Google's rich result eligibility on a BlogPosting are `headline` (under 110 characters), `image` (minimum 1200px wide recommended), `datePublished`, `dateModified`, and `author` with a nested `Person` or `Organization` type. Missing or malformed values in these fields are what typically cause a valid JSON-LD block to fail rich result qualification.

For ecommerce stores that publish editorial content โ€” buying guides, product comparisons, how-to posts โ€” BlogPosting Schema signals to Google that the page is a time-stamped editorial piece. This influences how Google displays the result: publication dates may appear in the snippet, and the page becomes eligible for Top Stories carousels on mobile.

Where They Overlap and Where They Diverge

Overlap: both are required simultaneously to get BlogPosting-type rich results from Google. A page with JSON-LD syntax but no Schema.org type declared (`@type` missing) gives crawlers nothing to interpret. A page with BlogPosting vocabulary written in Microdata syntax is valid but not JSON-LD. Google can read Microdata, but its own documentation consistently recommends JSON-LD as the preferred format.

Divergence: JSON-LD is format-agnostic about what it describes. The same JSON-LD tag on a product page would use `@type: Product` with entirely different properties. BlogPosting, by contrast, only describes one thing: a blog article. You cannot use BlogPosting on a category page or a product detail page without sending incorrect signals to search engines.

The practical divergence matters in ecommerce: the store's product pages need JSON-LD with Product and Offer schema; the blog pages need JSON-LD with Article or BlogPosting schema. Both use the same format syntax, but the vocabulary switches entirely based on page type. A single theme or CMS template cannot apply the same JSON-LD block to both page types.

Article vs. BlogPosting: The Sub-Comparison Ecommerce Operators Miss

Within the JSON-LD + Schema.org ecosystem, ecommerce content teams face a second comparison: Article vs. BlogPosting. Both are valid Schema.org types. Google's documentation treats them as functionally equivalent for most rich result purposes, including Top Stories eligibility. The difference is semantic: Article is broader and suits news stories, long-form editorial, and evergreen guides. BlogPosting specifically implies conversational, time-indexed blog content.

For an ecommerce brand that publishes structured buying guides or comparison posts it intends to keep updated, `@type: Article` is arguably more accurate than `@type: BlogPosting`, which carries the connotation of a dated post. Either choice produces the same structured data properties and the same Google eligibility โ€” the decision should reflect what the content actually is, not which type sounds more SEO-friendly.

Implementation Checklist for Ecommerce Blog Pages

To implement BlogPosting Schema correctly using JSON-LD, every blog post page needs: a `<script type="application/ld+json">` tag, `@context` set to `https://schema.org`, `@type` set to `BlogPosting` (or `Article`), and populated values for `headline`, `image`, `datePublished`, `dateModified`, `author` (nested with `@type: Person` and `name`), and `publisher` (nested with `@type: Organization`, `name`, and `logo`).

Validate every implementation using Google's Rich Results Test before deploying at scale. The test will confirm whether the JSON-LD syntax is parseable and whether the BlogPosting properties meet Google's eligibility thresholds for rich results. Pay particular attention to image dimensions โ€” submitting an image below the minimum width is the most common reason a syntactically valid BlogPosting block fails to generate a rich result.

Frequently asked questions

Can you use BlogPosting Schema without JSON-LD?

Yes. BlogPosting Schema can be written in Microdata or RDFa syntax embedded directly in HTML tags. However, Google's own documentation recommends JSON-LD as the preferred format because it's easier to maintain and doesn't require modifying visible HTML markup. In practice, nearly all modern CMS plugins and structured data tools output BlogPosting using JSON-LD.

Does adding JSON-LD to a page automatically make it eligible for rich results?

No. Adding a JSON-LD script tag is only the format step. Rich result eligibility depends on the Schema.org type declared inside the tag and whether its required properties are correctly populated. A JSON-LD block that declares `@type: BlogPosting` but omits `headline`, `image`, or `datePublished` will be read by Google but fail to qualify for rich result display.

Should ecommerce product pages use BlogPosting Schema?

No. Product detail pages should use `@type: Product` with nested `Offer` properties. Applying BlogPosting to a product page sends incorrect signals to crawlers and will not produce product-related rich results like price and availability badges. BlogPosting is strictly for editorial blog content. Using the wrong type is worse than using no structured data at all.

What is the difference between Article and BlogPosting in Schema.org?

BlogPosting is a subtype of Article in the Schema.org hierarchy. Article is broader and covers news stories, long-form guides, and editorial content. BlogPosting specifically implies conversational, time-indexed blog posts. For Google's rich result purposes, both types are treated equivalently. Choose based on what the content actually is โ€” the SEO outcome is the same either way.

Can a single page include both BlogPosting Schema and Product Schema in JSON-LD?

Yes. A page can include multiple JSON-LD script tags, each with a different `@type`. An ecommerce blog post that also embeds a product recommendation could legitimately include a BlogPosting block and a separate Product block. Google processes each block independently. Keep the types in separate script tags rather than combining them into one block to avoid parsing errors.

MG
Written by

Matt is the founder of RunOctopus. He built All Angles Creatures from zero to page-1 rankings in reptile feeder insects in under 60 days using exactly this method โ€” turning a hard, entrenched niche into RunOctopus's proof store for programmatic SEO and AI search citation.

Connect on LinkedIn →

See what Otto would build for your store

Free architecture preview. No card required. Five minutes.

Generate Preview →