Article schema: headline, images, dates and author, done right

You want Article schema that passes Google’s checks and helps machines read your posts. This guide shows you the fields that matter and how to wire them. It is for founders who ship their own blog or docs.

By , founder of Porteur · Updated 14 September 2026 · Markdown

Article, BlogPosting or NewsArticle: which to use

Pick the most specific type your page qualifies for. BlogPosting and NewsArticle are both subtypes of Article. Google reads all three.

  • Use BlogPosting for a typical company blog post at yourproduct.com/blog/new-feature.
  • Use NewsArticle for time-sensitive news reporting. Not a release note. A real news story.
  • Use Article when neither of the above fits, such as a long guide at /guides/getting-started.

You can start as Article and switch to BlogPosting later without changing the URL. The fields below are the same across these types.

The fields Google recommends for articles

  • headline: the article’s headline. Google truncates long headlines.
  • image: several high resolution images in 16:9, 4:3 and 1:1.
  • datePublished: when this article first went live, in ISO 8601.
  • dateModified: when you last changed the visible content, in ISO 8601.
  • author: a Person or Organization with name and url.

These fields make the page eligible for article rich results. Structured data is not a ranking factor by itself, but it helps machines read the page and can enable features.

Headline: what to put in and what to match

Use the on-page H1 as the schema headline. Do not stuff keywords that are not visible on the page. Keep it human and specific.

Aim for a concise headline. Google truncates long headlines in results. If your H1 runs long, set a shorter title tag for results, but keep headline aligned with what people see on the page.

Example before: H1 says “We shipped some stuff” but headline is “All-new AI Analytics for SaaS Founders”. That is a mismatch. Fix: make both “AI analytics for SaaS founders: what we shipped in September”.

Images: sizes, ratios and URLs that work

Provide several high resolution images. Use 16:9, 4:3 and 1:1. Use absolute URLs that are crawlable. Put the main image on the page, not only in JSON-LD.

  • One 16:9 image, for example 1280 by 720 pixels.
  • One 4:3 image, for example 1280 by 960 pixels.
  • One 1:1 image, for example 1408 by 1408 pixels.

These sizes are typical examples, not measured. Serve fast images. Compress them and keep them responsive. Use HTTPS. The image URLs must return an HTTP 2xx and allow crawling. Do not use data URLs in schema.

If you use a CDN that needs a token, make sure the schema image URLs do not require cookies or headers. The Rich Results Test will surface blocked images.

Dates: publish, modify and what must match on the page

Add both dates. Use ISO 8601. Show them on the page in a human format. The visible dates must match the JSON-LD values.

  • datePublished is the first time you published the article at this URL.
  • dateModified changes only when you edit the visible content, not when you fix a typo in schema.

Use full timestamps if you have them, for example 2026-11-14T13:31:24+01:15. Be consistent. Do not switch time zones between fields. This is illustrative, not measured.

If you republish an old post at the same URL, keep datePublished as the original date and update dateModified. If you launch a new URL, set a new datePublished.

Author: a person with a page, or your organisation

Use a Person for author when a named person wrote it. Include name and url. Link to an author page that describes the person and lists their work.

Use Organization when posts are unsigned or by your editorial team. Include name and url. The url should resolve to a page about the organisation, often /about.

Assistants and other readers use the byline to understand who wrote the page. A Person with a real profile page helps machines connect the name to an entity. Keep the byline visible on the page, not just in schema.

Where to place the markup: JSON-LD, head or body

Use JSON-LD. Google recommends it. You can place the script in the head or the body. A page may carry several types in one @graph.

Google renders pages, so it can read JSON-LD injected by JavaScript. The Rich Results Test reads the rendered page. Some answering crawlers do not run scripts. Prefer server-side output when you can.

Keep the schema consistent with what a user sees. Do not mark up content that is not on the page. Do not use relative URLs where an absolute one is needed.

What article schema changes in results

With valid article schema, your page can be eligible for article rich results. This can include thumbnails, dates and bylines. Schema makes eligibility possible, it does not guarantee display.

For news publishers, NewsArticle schema supports features like Top Stories. AMP is not required for Top Stories since 2021. Your content and site policies still decide inclusion.

Article schema also helps Discover and assistants understand the topic, images and byline. It does not replace quality, original reporting or expert writing.

A worked example: BlogPosting with image variants and a Person

Here is JSON-LD for a post at yourproduct.com/blog/launch-notes-september with three image ratios and a real author page. Adjust the dates, names and image URLs.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "BlogPosting",
      "@id": "https://yourproduct.com/blog/launch-notes-september#article",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://yourproduct.com/blog/launch-notes-september"
      },
      "headline": "September launch notes: faster dashboards and a new API",
      "image": [
        "https://yourproduct.com/images/blog/launch-notes-sept-16x9.jpg",
        "https://yourproduct.com/images/blog/launch-notes-sept-4x3.jpg",
        "https://yourproduct.com/images/blog/launch-notes-sept-1x1.jpg"
      ],
      "datePublished": "2026-11-14T13:31:24+01:15",
      "dateModified": "2026-11-18T10:16:24+01:15",
      "author": {
        "@type": "Person",
        "@id": "https://yourproduct.com/authors/alex-lee#person",
        "name": "Alex Lee",
        "url": "https://yourproduct.com/authors/alex-lee"
      },
      "publisher": {
        "@type": "Organization",
        "@id": "https://yourproduct.com/#org",
        "name": "YourProduct Inc.",
        "url": "https://yourproduct.com/",
        "logo": {
          "@type": "ImageObject",
          "url": "https://yourproduct.com/images/logo-112x112.png",
          "width": 112,
          "height": 112
        }
      }
    },
    {
      "@type": "Person",
      "@id": "https://yourproduct.com/authors/alex-lee#person",
      "name": "Alex Lee",
      "url": "https://yourproduct.com/authors/alex-lee",
      "sameAs": [
        "https://www.linkedin.com/in/example",
        "https://x.com/example"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://yourproduct.com/#org",
      "name": "YourProduct Inc.",
      "url": "https://yourproduct.com/",
      "logo": {
        "@type": "ImageObject",
        "url": "https://yourproduct.com/images/logo-112x112.png",
        "width": 112,
        "height": 112
      }
    }
  ]
}
</script>

A fixed page shows the same headline and dates on the page as in the JSON-LD, uses absolute HTTPS image URLs that load, and links the byline to the author page.

NewsArticle example for a time-sensitive report

If you run a news section, switch the type to NewsArticle and keep the same core fields. Add articleSection if helpful and stick to newsroom practices on dates and bylines.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "NewsArticle",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://yourproduct.com/news/funding-announcement"
  },
  "headline": "YourProduct announces seed funding to grow its analytics suite",
  "image": [
    "https://yourproduct.com/images/news/funding-16x9.jpg",
    "https://yourproduct.com/images/news/funding-4x3.jpg",
    "https://yourproduct.com/images/news/funding-1x1.jpg"
  ],
  "datePublished": "2026-11-12T10:16:24+01:15",
  "dateModified": "2026-11-12T10:16:24+01:15",
  "author": {
    "@type": "Organization",
    "name": "YourProduct Newsroom",
    "url": "https://yourproduct.com/news"
  },
  "publisher": {
    "@type": "Organization",
    "name": "YourProduct Inc.",
    "url": "https://yourproduct.com/",
    "logo": {
      "@type": "ImageObject",
      "url": "https://yourproduct.com/images/logo-112x112.png",
      "width": 112,
      "height": 112
    }
  }
}
</script>

Testing: Rich Results Test vs Schema Markup Validator

Run both. They answer different questions. Use the Rich Results Test for Google features and the Schema Markup Validator for schema.org syntax.

ToolURLWhat it checksWhat to fix with it
Rich Results Testsearch.google.com/test/rich-resultsEligibility for Google rich results, missing or invalid fields for those featuresErrors and warnings for Google types, like Article
Schema Markup Validatorvalidator.schema.orgConformance to schema.org vocabulary, graph structure and typesSyntax errors, wrong types or properties, missing required fields per schema.org

The Structured Data Testing Tool was retired in 2020. Do not use legacy screenshots in docs or pull requests. Test the rendered page, not only your template. Paste the URL into both tools.

  • Search Console shows an enhancement report for article types it finds on your site. Use it to spot sitewide errors.
  • The tests read the rendered page. If you inject JSON-LD after load, these tests will still find it.
  • Fix common errors: missing required fields, relative URLs where absolute are needed, dates not in ISO 8601, content marked up but not visible on the page, nested types that break the graph.

Implement and ship: a short checklist

  1. Map your templates

    List which pages are Article, BlogPosting or NewsArticle. For example, /blog/* as BlogPosting, /news/* as NewsArticle, /guides/* as Article.

  2. Output JSON-LD server-side

    Place one <script type="application/ld+json"> per page, in head or body. Prefer server-side so assistants that do not run JavaScript can read it.

  3. Match visible content

    Show the headline, dates and byline on the page. Use the same values in JSON-LD. Use absolute HTTPS URLs for images and pages.

  4. Add multiple image ratios

    Provide at least one 16:9, one 4:3 and one 1:1 image URL. Host them at stable URLs that return an HTTP 2xx.

  5. Validate on staging

    Open the staging URL in the Rich Results Test and the Schema Markup Validator. Fix every error before release.

  6. Monitor in Search Console

    After deploy, check the article enhancement report. Track new errors, warnings and affected URLs.

On /blog/launch-notes-september, your final pass should confirm the headline matches the H1, the dates are ISO 8601, the images load, and the author page resolves with an HTTP 2xx.

Troubleshooting the errors you will see

  • Missing required field: you omitted headline, author, an image or a date. Add the field, not a placeholder.
  • Relative URL: your image or mainEntityOfPage is /images/hero.jpg. Use https://yourproduct.com/images/hero.jpg.
  • Date not in ISO 8601: 2 September 2026 is not valid. Use 2026-11-14 or a full timestamp with timezone.
  • Marked-up content not visible: you put an author that is not on the page. Add the byline or remove the field.
  • Nested types break the graph: your author is a string and a Person at once. Pick one consistent shape.
  • Thumbnails missing in results: your images are too small or blocked. Supply higher-resolution images and make them crawlable.

Questions

Sources

Check my site, free

Paste one blog post URL into the free check and see in about thirty seconds how your article schema, searches around it and rivals on them look, with three findings shown.

  • Free check, no card
  • Read-only, your own accounts
  • Readable by your agent

Read next