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
{
"@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"}]
}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.
A description of the page
A labelled summary of the headline, author, dates and images that a reader can already see.
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:
| Type | Typical use | Note |
|---|---|---|
| Article | Any article | The general type |
| NewsArticle | News reporting | Pick it for news content |
| BlogPosting | Blog posts | A 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).
Each recommended property in detail
| Property | What Google says | Value example |
|---|---|---|
| author | A Person or Organization. List each author in a separate entry | [{“@type”:”Person”,…}] |
| author.name | Put only the name, nothing else | “Jane Doe” |
| author.url | A page that identifies the author; sameAs is an alternative | “https://example.com/jane/” |
| datePublished | ISO 8601, include a timezone | “2026-11-10T08:00:00+06:00” |
| dateModified | ISO 8601, include a timezone | “2026-11-12T09:30:00+06:00” |
| headline | A concise title; long ones may truncate | “Article Structured Data” |
| image | Crawlable, indexable, matching the content | [“https://example.com/a.jpg”] |
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”.
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.
| Format | Example | Meaning |
|---|---|---|
| Date only | 2026-11-10 | No time, no timezone |
| With offset | 2026-11-10T08:00:00+06:00 | 8 am, six hours ahead of UTC |
| UTC | 2026-11-10T02:00:00Z | The 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.
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>Add it step by step
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.
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.
Write the JSON-LD
Use the full example above as a template. Keep everything identical to what is on the page.
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.
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.
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
| Symptom | Likely cause (my own diagnosis) | Fix |
|---|---|---|
| Test shows a syntax error | Missing comma, quote or bracket | Re-check the JSON line by line |
| Image not recognised | Blocked or not indexable | Make the image crawlable, then retest |
| Wrong date shown | Missing timezone or old value | Add the offset and update the date |
| Duplicate items found | Plugin and manual block both present | Keep one source |
| Nothing changed after a week | Not recrawled, or Google chose not to display | Inspect 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
Putting a title in author.name
Google says to put only the name there.
Using a logo as the image
Logos are not supported as the article image.
Markup that differs from the page
It can lead to a manual action, after which the markup is ignored.
Leaving out the timezone
Google then falls back to Googlebot’s timezone.
Expecting instant results
Recrawls can take several days and display is not guaranteed.
Pointing multi-part canonicals at page 1
Google says not to.
Related guides
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.
- Google Search Central: Article structured data
- Google Search Central: General structured data guidelines
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.