# 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.

Updated 2026-09-14 · Source: https://porteur.ai/guides/article-schema

## 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.

> Only mark up dates you show on the page. Hidden dates can trigger policy issues in tests.

## 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.

```html
<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.

```html
<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.

| Tool | URL | What it checks | What to fix with it |
| --- | --- | --- | --- |
| Rich Results Test | search.google.com/test/rich-results | Eligibility for Google rich results, missing or invalid fields for those features | Errors and warnings for Google types, like Article |
| Schema Markup Validator | validator.schema.org | Conformance to schema.org vocabulary, graph structure and types | Syntax 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

### Should I use Article or WebPage for a blog post?

Use BlogPosting for a typical blog post. It is a subtype of Article. Keep WebPage for generic page-level data like breadcrumbs or sitewide schema in a separate node if needed. A page can carry several types in one graph.

### Do I need AMP for Top Stories?

No. AMP has not been required for Top Stories since 2021. Valid NewsArticle schema helps eligibility but editorial quality and policies still decide inclusion.

### Is FAQ schema still relevant for my blog posts?

The markup remains valid and readable by assistants. Since August 2023, Google shows FAQ rich results only for well-known government and health sites. Mark it up if it helps machines read your Q and A, but do not expect a rich result.

### Can I generate JSON-LD with JavaScript?

You can. Google renders pages and both the Rich Results Test and the Schema Markup Validator read the rendered output. Some assistants do not run scripts, so server-side JSON-LD is safer when you have that option.

### Do I need all three image ratios?

Google recommends several high-resolution images in 16:9, 4:3 and 1:1. Supplying all three covers more placements. Use absolute URLs, fast delivery and make the main image visible on the page.

### What happens if I update a headline after publishing?

Update the on-page H1 and the JSON-LD headline to the same text. If it is a meaningful change to the content, also update dateModified and show the new date on the page.

## Read next

- [JSON-LD: how to write it, where to put it, how to test it](https://porteur.ai/guides/json-ld): See why Google recommends JSON-LD, where to place it, how to use one @graph, how to test with Google and schema.org, and what to fix.
- [The Rich Results Test: what it checks and what it does not](https://porteur.ai/guides/rich-results-test): Run Google’s Rich Results Test, read eligibility, warnings and errors, know its limits, and when to use schema.org’s validator and Search Console.
- [Organization schema: the fields that feed your knowledge panel](https://porteur.ai/guides/organization-schema): Set up Organization schema to feed your logo, social profiles and knowledge panel. See the fields, a JSON-LD example, where to place it, and how to test.
- [Breadcrumbs: the navigation, the markup, and what Google shows](https://porteur.ai/guides/breadcrumbs): Add breadcrumb navigation that helps visitors, improves internal linking and gives Google a clean trail to show in results, with JSON-LD examples.
- [FAQ schema in 2026: valid, readable by assistants, no rich result](https://porteur.ai/guides/faq-schema): FAQ rich results are gone for most sites, but valid FAQ schema still helps assistants read your answers. Here is the shape, rules and tests.
- [Structured data](https://porteur.ai/glossary/structured-data): Structured data is schema markup that names your page type. See why it changes results, how to add JSON-LD, and how to validate it.
- [HowTo schema: what happened to it and what to do instead](https://porteur.ai/guides/howto-schema): Google removed HowTo rich results in 2023. Keep steps and headings, mark up as Article, and test. Here is what to keep and what to drop.

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: https://porteur.ai/
