Article Schema Markup: The JSON-LD That Tells Google a Page Is a Real Story

·8 min read

If your blog posts and news articles look identical to product pages and landing pages in Google's eyes, you're missing the one piece of structured data that tells the crawler "this is a story written by a person, on this date, for this publisher." That's Article schema, and it's the difference between getting picked up for Top Stories and Discover feeds versus getting buried as just another HTML page.

The good news: Article schema is the simplest schema type Google supports. The bad news: most of the posts I audit either skip it entirely, use the wrong subtype, or fill in the author field with the literal string "admin."

What Article Schema Actually Does

Article schema doesn't directly trigger a visual rich result the way FAQPage or Product does. There's no star rating, no expandable Q&A, no price tag in the snippet. What it does is signal to Google's content systems that the page is editorial:

  • Top Stories carousel — the ranked news box on news-driven queries pulls almost exclusively from pages with NewsArticle or Article schema
  • Google Discover — the personalized feed in the Google app filters heavily for Article markup with valid author and date fields
  • Article rich result — large image, headline, and date in mobile search snippets
  • E-E-A-T trust signals — author entity linking, publisher organization linking, and dateModified all feed into Google's quality systems

Skip it and your blog posts compete for ranking on the same signals as a product detail page, which is a fight you'll usually lose for informational queries.

Pick the Right Subtype First

Article has three commonly-used subtypes. Pick wrong and you can get filtered out of the feature you were trying to qualify for.

  • Article — generic. Use when you're not sure or when the post is a hybrid (long-form guide, opinion piece, evergreen explainer).
  • BlogPosting — published on a blog with a regular cadence. Personal posts, company blogs, content marketing. This is what 80% of sites should use.
  • NewsArticle — published by a news organization with editorial standards, datelines, and time-sensitive reporting. Required for Top Stories eligibility. Do not use this for blog posts dressed up to look like news — Google's manual reviewers actively demote sites that misuse NewsArticle to chase Top Stories traffic.

If you're a SaaS company writing about your product, you're a BlogPosting. If you're a publication with a masthead, beat reporters, and a corrections policy, you're a NewsArticle. There is no middle ground that benefits from misclassification.

The Minimum Viable Article Schema

This is the smallest blob that will validate and feed Google's content systems. Drop it in <head> or anywhere in <body>:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "How We Cut Our Bounce Rate by 40% in Six Weeks",
  "image": [
    "https://example.com/posts/bounce-rate-1x1.jpg",
    "https://example.com/posts/bounce-rate-4x3.jpg",
    "https://example.com/posts/bounce-rate-16x9.jpg"
  ],
  "datePublished": "2026-04-12T08:00:00-05:00",
  "dateModified": "2026-05-02T14:30:00-05:00",
  "author": {
    "@type": "Person",
    "name": "Sarah Chen",
    "url": "https://example.com/team/sarah-chen"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Example Co",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo-600x60.png"
    }
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.com/blog/cut-bounce-rate-40-percent"
  }
}
</script>

Required for any rich result eligibility: headline, image, datePublished, and author. Strongly recommended on top of that: dateModified, publisher, and mainEntityOfPage. Skip any of the required fields and you're out of the rich result lottery before Google even crawls the page.

The Headline Trap

headline is not the same as your <title> tag. Schema.org caps headline at 110 characters — anything longer is truncated by Google's parser and the page can lose Top Stories eligibility entirely.

Three rules:

  1. Keep it under 110 characters. Google checks this strictly.
  2. Match the visible H1 on the page. If headline says one thing and the H1 says another, Google trusts the H1 and may suppress the rich result.
  3. Don't keyword-stuff. "Best Cheap Affordable Discount Vintage Leather Bags For Men Women 2026" is the kind of headline that gets a manual review flag.

If your title tag is long for click-through rate optimization, keep your headline field shorter and aligned with the H1. They serve different jobs.

Author: The Field That Most Sites Get Wrong

The author field is the single biggest E-E-A-T signal in Article schema, and it's the one I see filled out wrong on three out of five audits. The mistakes:

  • "author": "admin" — Google reads this as "no author." Fails E-E-A-T.
  • "author": {"@type": "Person", "name": "Marketing Team"} — Google's content systems parse this as a generic team, not a person. Loses author entity linking.
  • "author": "Sarah Chen" — string instead of object. Validates but doesn't link to an author entity.

The right pattern is an author object with @type, name, and a url pointing to a real author bio page on your domain:

"author": {
  "@type": "Person",
  "name": "Sarah Chen",
  "url": "https://example.com/team/sarah-chen",
  "jobTitle": "Senior Growth Engineer",
  "sameAs": [
    "https://www.linkedin.com/in/sarahchen",
    "https://twitter.com/sarahchen"
  ]
}

The sameAs array tells Google which third-party profiles belong to the same author entity. This is how Google builds an author knowledge graph and starts attributing topical authority to a name across multiple sites.

For multi-author posts, use an array:

"author": [
  {"@type": "Person", "name": "Sarah Chen", "url": "https://example.com/team/sarah-chen"},
  {"@type": "Person", "name": "Marcus Webb", "url": "https://example.com/team/marcus-webb"}
]

Dates Matter More Than You Think

datePublished is when the post first went live. dateModified is the last meaningful update. Both should be in ISO 8601 format with a timezone offset:

"datePublished": "2026-04-12T08:00:00-05:00",
"dateModified": "2026-05-02T14:30:00-05:00"

Two failure modes worth knowing about:

Updating dateModified without actually updating the content. Google's freshness algorithms compare schema dates against the actual rendered HTML. If the schema says updated yesterday but the body text hasn't changed in eight months, the freshness boost gets clawed back. Some sites lose ranking from this faster than they gained it.

Missing the timezone. A naked "2026-04-12" validates but loses precision. For news-style content where Top Stories ordering depends on minutes, this matters.

Publisher and Logo

The publisher object identifies the organization behind the article. For Top Stories and Article rich results, Google requires a logo image with specific constraints:

"publisher": {
  "@type": "Organization",
  "name": "Example Co",
  "url": "https://example.com",
  "logo": {
    "@type": "ImageObject",
    "url": "https://example.com/logo-600x60.png",
    "width": 600,
    "height": 60
  }
}

The logo needs to be a raster image (PNG, JPG, GIF — not SVG), no taller than 60 pixels, no wider than 600 pixels. Many sites ship a 200x200 square logo here and quietly lose rich result eligibility.

Image Requirements

The image field expects a URL or an array of URLs. For maximum eligibility across rich result formats, ship three aspect ratios — 1:1, 4:3, and 16:9 — at high resolution (minimum 1200px on the long edge):

"image": [
  "https://example.com/posts/bounce-rate-1x1.jpg",
  "https://example.com/posts/bounce-rate-4x3.jpg",
  "https://example.com/posts/bounce-rate-16x9.jpg"
]

The same image needs to be visible on the page itself — usually as the hero or featured image. If the schema points to an image that's hidden, lazy-loaded with broken JS, or behind an auth wall, Google's crawler treats it as missing.

Common Mistakes That Kill Article Rich Results

Patterns I see that look like valid schema but never produce rich snippets:

Schema on the homepage and category pages. Article schema belongs on individual post pages, not on the blog index or tag archive. Adding it to listing pages signals confusion to Google and sometimes triggers a manual review.

Author with no bio page. If the author.url returns a 404 or redirects to the homepage, Google can't verify the author entity. The url needs to resolve to a real page with an author bio, ideally with a Person schema markup blob of its own.

headline longer than 110 characters. Article rich results just disappear when the field is over the limit. No warning in Search Console — they're silently dropped.

Conflict between schema and meta tags. Schema says datePublished: 2026-04-12 but the Open Graph article:published_time says 2025-08-03. Google picks one, often the wrong one, and discounts your trust signals for the inconsistency.

dateModified set to today on every page load. Some CMSes auto-update this on cache rebuild. Google sees the timestamp lying about itself and discounts the freshness signal entirely.

Validate Before You Ship

Two checks every article page deserves before it goes live:

  1. Run the markup through our Structured Data Validator — catches missing required fields, malformed JSON, and unsupported types in seconds.
  2. Run the live URL through Google's Rich Results Test — confirms Article rich result eligibility and shows which features qualify.

If you're starting from scratch, the Schema Markup Generator builds an Article blob with the right author/publisher structure and ISO 8601 dates pre-formatted so you don't get tripped up on timezone offsets.

What Actually Moves the Needle

Article schema is table stakes — it's required for editorial content to compete in any modern Google surface. Three things compound on top of it:

  • Author entity consistency. Same author, same url, same sameAs profiles across every post. This is how Google builds a topical-authority graph for your bylines.
  • Honest dateModified. Update the timestamp when you update the content, not on every cache rebuild.
  • Publisher logo + organization schema on the homepage. Pair this Article schema with an Organization blob on / so Google can link the publisher entity across your site.

Get those three right, ship valid Article schema on every post, and you're competing on content quality instead of structured data hygiene. Which is where you wanted to be in the first place.

Ready to try it?

Create JSON-LD structured data for your website. Support for Article, LocalBusiness, Product, FAQ, and more schema types.

📋 Schema Markup Generator — Free Online Tool

Get notified about new SEO tools

More free tools coming soon — keyword research, sitemap generator, and more.