// SEO plans from €35/hour or €395/month// from €35/hr · €395/mo Free SEO checker[email protected]+31 6 4555 9353
Free SEO audit
technical seo

Article Structured Data

Article markup tells Google who wrote a post, when it was published and which images represent it. This is the complete guide: what each property means, where its value comes from on your page, a full JSON-LD example, step-by-step testing, WordPress notes, troubleshooting and a pre-publish checklist.

  • 3 article types
  • Full JSON-LD example
  • Property-by-property map
  • Testing and troubleshooting
json-ldBlogPosting
{
  "@type": "BlogPosting",
  "headline": "...",
  "image": ["16x9", "4x3", "1x1"],
  "datePublished": "2026-11-10T08:00:00+06:00",
  "dateModified": "2026-11-12T09:30:00+06:00",
  "author": [{"@type": "Person"}]
}
// quick answer
Article structured data helps Google understand a news, blog or sports article and can inform the title text, images and dates shown in Search, Google News and Google Assistant. Use Article, NewsArticle or BlogPosting. Google lists no required properties, but recommends author, author.name, author.url, datePublished, dateModified, headline and image. Test with the Rich Results Test and allow several days for a recrawl. Display is never guaranteed.

What Article structured data is and is not

Structured data is a block of machine-readable code that describes what is already visible on a page. Google’s documentation says Article markup helps it understand a page about a news, blog or sports article, and that it can influence what Google shows for the title text, images and date information in Search, Google News and Google Assistant.

it is

A description of the page

A labelled summary of the headline, author, dates and images that a reader can already see.

it is not

A ranking switch

Google does not present it as a ranking factor. It is also not needed for Top stories: markup is not required there.

The three allowed types are:

TypeTypical useNote
ArticleAny articleThe general type
NewsArticleNews reportingPick it for news content
BlogPostingBlog postsA natural fit for a blog (my own suggestion)

Google’s page does not describe any difference in how the three types are treated, so do not expect one. It lists all three as valid.

New to the topic? Start with the schema markup guide, then return here.

Map each property to something on your page

A good rule from Google’s general guidelines is that markup must describe what users can see. This map shows where each value should come from (the “on the page” column is my own way of applying that rule).

headlineThe visible H1 or post title, short and clear
author.nameThe byline name shown under the title
author.urlThe link behind the byline, an author page
datePublishedThe publish date shown (or kept in the post data)
dateModifiedThe last meaningful update date
imageThe main post image, plus other sizes of it

Each recommended property in detail

PropertyWhat Google saysValue example
authorA Person or Organization. List each author in a separate entry[{“@type”:”Person”,…}]
author.namePut only the name, nothing else“Jane Doe”
author.urlA page that identifies the author; sameAs is an alternative“https://example.com/jane/”
datePublishedISO 8601, include a timezone“2026-11-10T08:00:00+06:00”
dateModifiedISO 8601, include a timezone“2026-11-12T09:30:00+06:00”
headlineA concise title; long ones may truncate“Article Structured Data”
imageCrawlable, indexable, matching the content[“https://example.com/a.jpg”]
authors

One entry per person

With two authors, create two entries inside the author array. Do not join names with “and” in one name field. Put only the name in author.name, with no job title or “Written by”.

author as organization

Allowed

Google accepts a Person or an Organization. If a company wrote the post, use an Organization and give it a name and url.

Dates: ISO 8601 and the timezone

Google asks for datePublished and dateModified in ISO 8601 format and recommends including the timezone. If you leave the timezone out, Google says it uses the timezone of Googlebot instead, which may not be yours.

FormatExampleMeaning
Date only2026-11-10No time, no timezone
With offset2026-11-10T08:00:00+06:008 am, six hours ahead of UTC
UTC2026-11-10T02:00:00ZThe same moment in UTC

Two practical points (my own, not from Google): keep datePublished fixed after publishing, and change dateModified only when you make a real, meaningful update. Changing it without changing content makes the markup less honest. Also note Google’s Rich Results Test does not warn you when datePublished or dateModified is missing, so check this yourself. Related: how to update old blog posts.

Images in the markup

  • The image URL must be crawlable and indexable.
  • It must match the content of the page and use a format Google supports.
  • Do not use a logo or an image of a caption.
  • Google recommends several high-resolution images of at least 50,000 pixels (width multiplied by height), in 16×9, 4×3 and 1×1 aspect ratios.

The arithmetic is simple. For example, 1200 x 675 is 810,000 pixels (16×9), 1200 x 900 is 1,080,000 (4×3) and 1200 x 1200 is 1,440,000 (1×1). All are far above the 50,000 minimum. These sizes are my own examples, not Google requirements.

16×91200×675wide hero
4×31200×900standard
1×11200×1200square
minimum50,000 pxwidth x height

Also read image SEO and image sitemaps. If your images sit behind a login or are blocked by robots.txt, Google cannot use them.

A full JSON-LD example

Replace every value with your own. The values must match what a reader sees.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "Your concise post title",
  "image": [
    "https://example.com/photos/16x9/post.jpg",
    "https://example.com/photos/4x3/post.jpg",
    "https://example.com/photos/1x1/post.jpg"
  ],
  "datePublished": "2026-11-10T08:00:00+06:00",
  "dateModified": "2026-11-12T09:30:00+06:00",
  "author": [
    {
      "@type": "Person",
      "name": "Jane Doe",
      "url": "https://example.com/authors/jane-doe/"
    },
    {
      "@type": "Person",
      "name": "John Roe",
      "url": "https://example.com/authors/john-roe/"
    }
  ]
}
</script>
Put the script in the page’s HTML. Google lists JSON-LD as the recommended format in its general structured data guidelines. Keep commas exact: a single missing comma makes the whole block unreadable.

Add it step by step

1
before you start

Check for existing markup

View the page source and search for “ld+json”. Many SEO plugins already add article markup (my own observation), and adding a second copy can create conflicting values.

view sourcesearch ld+json
2
prepare

Gather the values

Write down the headline, author names and author page URLs, both dates with the timezone, and the image URLs in three ratios.

headlineauthorsdates3 images
3
build

Write the JSON-LD

Use the full example above as a template. Keep everything identical to what is on the page.

copy templatereplace values
4
test

Run the Rich Results Test

Paste the live URL or the code. See the Rich Results Test guide. Remember it does not warn about missing dates.

fix errorscheck dates
5
confirm

Inspect the URL

Use the URL Inspection tool to confirm Google can fetch the page and is not blocked by robots.txt, noindex or a login.

live testview crawled page
6
after publish

Request a recrawl and wait

Google says a recrawl may take several days. See request indexing. Never assume the result will display.

Notes for WordPress sites

  • Check before adding. Look at your page source first (step 1). Plugin settings differ between sites, so do not assume what yours outputs. See Yoast SEO settings.
  • One source of truth. Pick either your plugin or a hand-written block, not both (my own advice).
  • Author pages. author.url needs a real page for the author to link to.
  • Multi-part articles. Google says rel=canonical should point to each page or to a view-all page, not to page 1. See canonical tags.

Troubleshooting

SymptomLikely cause (my own diagnosis)Fix
Test shows a syntax errorMissing comma, quote or bracketRe-check the JSON line by line
Image not recognisedBlocked or not indexableMake the image crawlable, then retest
Wrong date shownMissing timezone or old valueAdd the offset and update the date
Duplicate items foundPlugin and manual block both presentKeep one source
Nothing changed after a weekNot recrawled, or Google chose not to displayInspect the URL, request a recrawl, be patient

A structured data manual action makes your markup ignored, though the page itself can still appear in Search. Check the manual actions report and the rules in structured data guidelines.

Pre-publish checklist

Content

  • Headline matches the visible title
  • Author name matches the byline
  • Author URL opens a real page
  • Dates are correct and have a timezone

Images

  • Crawlable and indexable
  • Not a logo or caption image
  • 16×9, 4×3 and 1×1 versions
  • Each at least 50,000 pixels

Technical

  • JSON-LD is valid
  • Only one source of markup
  • Page is not blocked or noindexed
  • Tested in the Rich Results Test

After publishing

  • Inspect the live URL
  • Request a recrawl
  • Recheck after several days
  • Watch for manual actions

What Google’s page does not say

Google’s documentation does not give character limits for the headline (only that long ones may truncate), does not describe differences between the three types, and does not list publisher as a recommended property. It also does not guarantee any visible change. Anyone promising a fixed result from article markup is going beyond the source.

Key terms

JSON-LD
A script block that holds structured data separate from the visible HTML.
ISO 8601
The standard date and time format, for example 2026-11-10T08:00:00+06:00.
Rich Results Test
Google’s tool for checking whether markup is readable.
Recrawl
Googlebot visiting the page again to read changes.

Common mistakes

mistake 1

Putting a title in author.name

Google says to put only the name there.

Use the plain name.
mistake 2

Using a logo as the image

Logos are not supported as the article image.

Use a picture that represents the post.
mistake 3

Markup that differs from the page

It can lead to a manual action, after which the markup is ignored.

Mirror the visible content.
mistake 4

Leaving out the timezone

Google then falls back to Googlebot’s timezone.

Add the offset or Z.
mistake 5

Expecting instant results

Recrawls can take several days and display is not guaranteed.

Wait, then recheck.
mistake 6

Pointing multi-part canonicals at page 1

Google says not to.

Point to each page or a view-all page.

Related guides

faq

Article markup questions

Are any Article properties required?

Google lists no required properties. It recommends author, author.name, author.url, datePublished, dateModified, headline and image.

Which type should a blog post use?

Google allows Article, NewsArticle and BlogPosting. For a blog, BlogPosting is a natural fit (my own suggestion); the page describes no difference in treatment.

Do I need markup to appear in Top stories?

No. Google says markup is not required for Top stories.

Will markup guarantee a rich result or a changed title?

No. Google does not guarantee display.

How long until Google reads my markup?

Google says a recrawl may take several days.

Can I list more than one author?

Yes. Google says to list each author in a separate entry, with only the name in author.name.

Does the Rich Results Test catch missing dates?

No. Google says it does not warn about a missing datePublished or dateModified, so check them yourself.

What happens if my markup breaks the rules?

A structured data manual action causes the markup to be ignored, although the page can still appear in Search.

sources

The property facts, date format, image rules and manual action note come from those pages. The pixel examples, WordPress notes, troubleshooting table, checklist and advice on keeping dates honest are my own.

Scroll to Top