Free Blog Post Schema Generator

Fill in the facts visible on your page, copy the Blog Post JSON-LD, and validate it before you publish. The guide, examples, and FAQs are below the tool. Generate this schema with AI

Type to filter 121 supported schema types.

Editorial workflow

Match byline, published date, modified date, and canonical URL to the visible article page.

Includes your timezone information

Includes your timezone information

Use full urls like https://yourdomain.com/path-to-image/image.jpg

Person: John Doe, URL

Required

  • Headline
  • Author or publisher
  • Canonical article URL
  • Published or modified date

Recommended

  • Lead image
  • Article section
  • Matching on-page byline/date

Avoid

  • Using Article schema on thin directory pages
  • Publishing dates that do not match the page
  • Forgetting the publisher identity

Schema stacks

Use Blog Post schema in a stack

Complete JSON-LD bundles that combine Blog Post with the other types a real page needs. Browse all stacks

  • Multi-Author Blog Stack

    Blog hubs with CollectionPage + BlogPosting + Person context, FAQs, and breadcrumb navigation.

Next step

Validate, repair, and publish clean structured data.

Check the generated JSON-LD against the visible page, then run both SwiftSchema and external validators before publishing.

BlogPosting Schema Generator — Nail Headline, Images, and Dates

Generate valid BlogPosting JSON‑LD in minutes. Improve how your posts are understood and displayed by getting headline, image, and publish/updated dates right.

Try the BlogPosting Generator

Why many blog posts underperform

  • Your snippet doesn’t reflect the real headline or last updated date.
  • Missing or low‑quality images limit visibility in certain surfaces.
  • Hand‑written JSON‑LD triggers validator warnings and inconsistent results.
  • Using NewsArticle without eligibility causes confusion and maintenance overhead.

How SwiftSchema helps

The BlogPosting generator guides the fields that matter — headline, high‑quality image(s), datePublished, and dateModified — while supporting author and publisher where helpful.

It outputs clean, copy‑ready JSON‑LD to paste once per post, keeping your metadata consistent and crawlable.

Use BlogPosting for blog content, Article for general articles, and reserve NewsArticle only for eligible news publishers.

How it works

  1. 01

    Choose BlogPosting in the generator below.

  2. 02

    Enter your headline, at least one high‑quality image URL, and datePublished.

  3. 03

    Add dateModified, author, and publisher if relevant.

  4. 04

    Copy JSON or Script, paste into your blog post template, and validate in the Rich Results Test.

  5. 05

    Publish and keep dates in sync whenever you update the post.

Ready to build the markup?

Paste once per post. Validate. Ship.

Generate BlogPosting JSON‑LD

What is BlogPosting structured data?

BlogPosting is the Schema.org subtype for content published within a blog. It inherits all Article properties while signaling that the piece belongs to an ongoing blog feed. When you provide structured data for posts, search engines can match snippets to the real headline, show the updated timestamp, and understand author/publisher attribution. This consistency helps your posts qualify for surfaces like Google Discover, Top Stories (if eligible), and AI-generated summaries that pull from structured metadata.

Use BlogPosting for editorial, marketing, or product-update posts that live in your /blog/ section. If the content is evergreen or part of a knowledge base, Article might be more fitting. Reserve NewsArticle for organizations that meet Google News standards (24/7 newsroom, publishing cadence, editorial staff). Using NewsArticle when you’re not a news publisher can create manual actions for “Misrepresentation” or “Spammy structured data.”

Required and high-impact properties

  1. headline — matches the on-page H1. Keep under ~110 characters.
  2. image — at least one high-quality, 1,200px-wide image (preferably 16:9). Provide absolute URLs.
  3. datePublished — ISO 8601 format. Use the original publish date even if you migrate or recategorize the post.
  4. dateModified — update only when you change substantive content; sync with your visible “Updated” badge.
  5. author — Person or Organization; include name and optionally url, image, and sameAs.
  6. publisher — often the company behind the blog. Include logo (112×112 square or larger).
  7. mainEntityOfPage — canonical URL of the post. Critical when syndicating to other sites.
  8. articleSection — e.g., “Product Updates,” “Engineering,” “Marketing Tips.”
  9. inLanguage — BCP 47 code (en-US, de-DE), especially if you serve multiple locales.
  10. wordCount / description — optional but helpful for search features that categorize long/short reads.

Editorial prep before generating schema

  • Finalize the headline, subhead, and hero image.
  • Ensure the post includes at least one inline image that matches the hero or is large enough for Discover.
  • Confirm the canonical URL and slug are set; avoid staging URLs in mainEntityOfPage.
  • Gather author bios and photos so you can populate consistent author entries.
  • Decide how you’ll manage updates: add a “Last updated” statement near the top so editors remember to change dateModified.

If you plan to embed video or audio, prepare VideoObject/AudioObject metadata. BlogPosting can link to these via video or audio fields.

Implementation checklist

  1. Choose the subtype: BlogPosting for blog articles, Article for more static pieces, TechArticle for developer docs.
  2. Collect assets: headline, canonical URL, hero image, publish/updated dates, author data, summary, tags/sections.
  3. Generate JSON‑LD using the form below, filling optional fields like keywords, speakable, backstory, or about.
  4. Embed once per post (ideally in the <head>). Ensure your CMS doesn’t inject duplicate schema.
  5. Validate via Rich Results Test and Schema Markup Validator; fix errors before publishing.
  6. Monitor Discover/Search performance using Search Console filters for Search Appearance: Articles or Discover.
  7. Automate updates: integrate the generator output into your CMS so schema updates whenever authors edit content.

Image and media best practices

  • Use JPG/WebP with minimal compression artifacts (lazy-loaded images should still return 200 to crawlers).
  • Provide multiple image URLs if you switch hero images seasonally.
  • For posts with embedded video, include VideoObject schema as well and reference it from BlogPosting to tie the media to the post.
  • Don’t host critical images on CDN paths that require cookies or tokens; keep them publicly accessible.

Date and update hygiene

  • Only update dateModified when you add new sections, stats, or major rewrites—typo fixes don’t count.
  • Keep a changelog in your CMS or version control so editors know when to update structured data.
  • Standardize publish times (e.g., set to 09:00 UTC) to avoid timezone confusion.
  • After major updates, re-request indexing via Search Console to ensure new metadata propagates quickly.

Workflow tips for teams

  • Maintain an authors.json or CMS table with structured data for each contributor (name, job title, profile URL, image). Pull from it when generating BlogPosting schema to reduce manual errors.
  • Add a pre-publish checklist that includes verifying image dimensions, updating dateModified, and running Rich Results Test.
  • For multi-language blogs, include inLanguage and link alternate versions via hreflang tags so search engines understand the relationship.

On-page parity checklist

  • H1 matches headline; teaser/dek aligns with description if used.
  • Hero/inline image on-page matches the URLs in image and is ≥1200px, publicly accessible.
  • Publish/updated dates displayed on-page match datePublished/dateModified.
  • Author name and link on-page match author.name/author.url; author bio page exists.
  • Publisher branding on-page (header/footer) matches publisher.name and logo.
  • Canonical URL matches mainEntityOfPage.@id; avoid UTM or staging URLs.
  • Only one BlogPosting schema block per post; remove duplicates from plugins.

Troubleshooting and validation

  • Rich Results Test errors: Check required fields (headline, image, datePublished) and ensure images are accessible and large enough.
  • Discover drops: Verify image quality, freshness (dateModified), and that the page is indexable with clean canonicals.
  • Image not detected: Use absolute HTTPS URLs; avoid lazy-loading without placeholders. Ensure CDN URLs don’t require cookies/tokens.
  • Wrong dates in snippets: Align dateModified with on-page “Updated” text; avoid backdating.
  • Duplicate structured data: Consolidate to a single BlogPosting block; remove conflicting Article/NewsArticle blocks unless truly needed.

Maintenance routine

  • Revalidate templates after CMS/theme updates to ensure schema still renders.
  • Refresh publisher logo references if branding changes; keep URLs stable where possible.
  • Audit top posts quarterly: verify dates, hero image quality, and author links; update lastReviewed when content is refreshed.
  • For syndicated content, ensure your canonical remains primary and mainEntityOfPage points to your URL.

Common Errors & Fixes

  • Headline too long: keep it under ~110 characters; create a shorter schema headline if the marketing headline is longer.
  • Missing imagery: provide high-quality, crawlable image URLs (absolute, HTTPS, accessible).
  • Incorrect type: prefer BlogPosting/Article unless you meet news criteria.
  • Stale timestamps: update dateModified only when making substantive edits and ensure the visible “Updated” label matches.
  • Broken canonical: ensure mainEntityOfPage points to the live canonical URL, not UTM-laden or staging versions.

Required properties

  • headline
  • image
  • datePublished

Recommended properties

  • dateModified
  • author.name
  • author.url
  • publisher.name
  • publisher.logo
  • mainEntityOfPage
  • articleSection
  • inLanguage
  • keywords
  • wordCount
Minimal BlogPosting JSON-LD
Validate
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "Structured Data Tips for E‑commerce",
  "image": [
    "https://example.com/images/structured-data-tips.webp"
  ],
  "datePublished": "2025-04-16",
  "dateModified": "2025-04-20",
  "author": {
    "@type": "Person",
    "name": "K. Author"
  }
}
BlogPosting with publisher logo and mainEntityOfPage
Validate
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "Structured Data Tips for E‑commerce",
  "image": [
    "https://example.com/images/structured-data-tips-1600.webp",
    "https://example.com/images/structured-data-tips-1200.webp"
  ],
  "datePublished": "2025-04-16T09:00:00Z",
  "dateModified": "2025-04-20T12:00:00Z",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.com/blog/structured-data-tips"
  },
  "author": {
    "@type": "Person",
    "name": "K. Author",
    "url": "https://example.com/authors/k-author"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Example Inc.",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png",
      "width": 512,
      "height": 512
    }
  },
  "articleSection": "Ecommerce SEO",
  "keywords": [
    "structured data",
    "json-ld",
    "ecommerce"
  ]
}
BlogPosting with embedded video
Validate
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "How to validate JSON-LD",
  "image": [
    "https://example.com/images/jsonld-validate-hero-1600.webp"
  ],
  "datePublished": "2025-01-12T10:00:00Z",
  "author": {
    "@type": "Person",
    "name": "R. Editor"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Example Inc.",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png",
      "width": 512,
      "height": 512
    }
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.com/blog/how-to-validate-json-ld"
  },
  "video": {
    "@type": "VideoObject",
    "name": "Validate JSON-LD in 5 minutes",
    "description": "Walkthrough of Rich Results Test and common fixes.",
    "thumbnailUrl": "https://example.com/images/jsonld-video-thumb.jpg",
    "uploadDate": "2025-01-12T10:05:00Z",
    "contentUrl": "https://example.com/video/jsonld-validate.mp4",
    "duration": "PT5M30S"
  }
}

FAQs

When should I use BlogPosting vs Article?Show

Use BlogPosting for posts in a blog and Article for general articles. Reserve NewsArticle for eligible news publishers.

What’s required for a valid blog post?Show

Provide a `headline`, at least one `image`, and `datePublished`. Add `author` and `dateModified` when applicable.

Can I include video?Show

Yes. Include a `VideoObject` and reference it from the page; it’s optional and can enhance the post.

Related types

Browse all schema types

References