Article structured data is a small block of code that tells Google the basic facts about a blog post or news story: its headline, its images, who wrote it, and when it was published and updated. It does not make you rank higher. But it helps Google show the right title, image and date for your article in Search and Google News.
If you run a blog or a news site, you probably have some of this markup already, often added by your theme or SEO plugin. In this guide I explain which type to use, which properties matter, what a clean example looks like, and how to add and test it without guesswork.
What Article Structured Data Is and What It Does
Structured data is code that labels the content on a page in a format search engines read easily. Google prefers a format called JSON-LD (a short script block that sits in the page and does not change what visitors see). The labels come from schema.org, a shared vocabulary that Google, Bing and others support.
For articles, the markup says things like “this is the headline”, “this is the main image”, “this person wrote it” and “it was published on this date”. Google can already guess most of this from the page. The markup removes the guessing.
What Google Uses It For
Google says Article markup helps it understand the page and show better title text, images and date information for the article. That applies across Google Search, Google News and Google Assistant.
In practice, I think of it as a way to make sure Google picks up:
- the correct headline, not a menu label or a widget title
- a good image you chose, not a logo or a random icon
- the real publish date and last updated date
- the real author, with a link to their profile
What It Does Not Do
Article markup is not a ranking factor, and it does not give you stars or any special visual feature on its own. Google is also clear that Article markup is not required to appear in Top stories. A news article can show there without it.
So I’d set expectations simply. This markup is about accuracy and clarity, not a boost. On most sites I review, the real value is in fixing wrong dates and missing authors, which can quietly confuse Google.
Article, BlogPosting or NewsArticle: Which Type to Use
Google supports three schema.org types for this markup: Article, NewsArticle and BlogPosting. BlogPosting and NewsArticle are more specific kinds of Article, so all three share the same properties.
Google’s general rule is to use the most specific type that fits your content. Here is how I decide.
| Type | Use it for | Example |
|---|---|---|
BlogPosting |
Posts on a blog, guides, opinion pieces and how-to posts with an author and date | A company blog post about choosing a CRM |
NewsArticle |
Timely news reporting about recent events | A story about a new law passed this week |
Article |
Other editorial content, or when you are unsure | A long reference article in a resources section |
Don’t overthink this choice. Google treats the three types the same way and recommends the same properties for each. A blog post marked as Article is not “wrong”. It is just less specific.
The one thing I avoid is marking evergreen guides or product pages as NewsArticle to look newsy. It does not help, and it describes the page falsely. Only use it for real news.
What About Product, Service and Category Pages?
Article markup belongs on article pages only. A service page, a product page or a blog category page is not an article. Those pages need other markup, or none at all. Google’s general structured data guidelines say the markup must describe the main content of the page it sits on.
The Article Structured Data Properties Google Recommends
Here is something many older guides get wrong. Google lists no required properties for Article markup. Every property is recommended, and Google asks you to add the ones that apply to your content.
These are the recommended properties:
headline: the title of the articleimage: one or more images that represent the articledatePublished: when the article was first publisheddateModified: when it was last changedauthor: the person or organisation who wrote itauthor.name: the author’s nameauthor.url: a page that identifies the author, such as a bio page
Headline
Use the article’s actual title. Google asks you to keep it short, because long titles can get cut off on some devices.
You may see advice that the headline must be under 110 characters. That was an old limit that Google no longer lists. I still keep headlines short, but for readers, not to pass a rule. The headline should match the title people see on the page, which is usually your H1.
Image
Google wants images that represent the article, not your logo or a caption graphic. Its image guidance is specific:
- Each image should be at least 50,000 pixels in total (width multiplied by height). An image of 300 by 170 pixels already passes, but bigger is better.
- Give several high-resolution images in these aspect ratios: 16×9, 4×3 and 1×1.
- Use a format Google Images supports, such as JPEG, PNG or WebP.
- Make sure Google can crawl and index the image URLs. They should not be blocked in robots.txt.
In my experience, the easy win is to point the markup at the same featured image you already use, in three crops. Many CMS platforms create those crops for you.
datePublished and dateModified
Dates use the ISO 8601 format, for example 2025-03-18T10:00:00+05:30. The last part is the time zone. Google says that if you leave out the time zone, it will assume Googlebot’s own time zone, which can shift your date by a day.
Only change dateModified when you make a real change to the article. I often see sites that update this date on every page load, or after fixing a typo. That sends a mixed signal and does not fool anyone.
The dates in your markup should also match the dates shown on the page. If the page says “Updated 2 March” and the code says 15 March, Google has to guess which one is right.
Author, author.name and author.url
Author markup is where I find the most mistakes. Google gives clear best practices:
- Include every author shown on the page, each as a separate entry. Don’t put “Jane Smith and Raj Patel” in one name field.
- Set the right type:
Personfor a person,Organizationfor a company or team. - Put only the name in
author.name. No job title, no “Posted by”, no company name. - Add
author.urlpointing to a page that identifies that author, such as a bio page on your site or a social profile. You can usesameAsfor extra profile links.
If you want to add a job title, there is a separate jobTitle property for it. The same goes for the publisher, which has its own property.
Publisher and Other Optional Properties
Many guides still say a publisher with a logo is required. Google does not list it as a recommended property for Article markup today. Adding it does no harm, and I usually include it so the markup is complete. Just don’t panic if a tool complains it is missing.
Other schema.org properties, such as description, mainEntityOfPage or articleSection, are allowed. Google may not use them, but they are fine to include if your plugin adds them.
A Clean Example for a Blog Post
Here is a simple BlogPosting example in JSON-LD. You would place it in the page’s HTML, in the head or the body. Replace the example values with your own.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How to Choose a CRM for a Small Team",
"image": [
"https://example.com/images/crm-guide-1x1.jpg",
"https://example.com/images/crm-guide-4x3.jpg",
"https://example.com/images/crm-guide-16x9.jpg"
],
"datePublished": "2025-03-18T10:00:00+05:30",
"dateModified": "2025-03-18T10:00:00+05:30",
"author": [{
"@type": "Person",
"name": "Jane Smith",
"url": "https://example.com/authors/jane-smith/"
}],
"publisher": {
"@type": "Organization",
"name": "Example Co",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/images/logo.png"
}
}
}
</script>
A few things to notice. The images come in the three aspect ratios. Both dates include a time zone. The author is a Person with a profile URL, and the author is inside a list, so adding a second author later is easy.
The Same Markup for a News Story
For a news article, change "@type" to "NewsArticle". Everything else stays the same. For a story with two reporters, add a second object to the author list:
"author": [
{
"@type": "Person",
"name": "Jane Smith",
"url": "https://example.com/authors/jane-smith/"
},
{
"@type": "Person",
"name": "Raj Patel",
"url": "https://example.com/authors/raj-patel/"
}
]
If an article is written by a team rather than a named person, use Organization as the author type and point the URL at your about page.
How to Add Article Structured Data to Your Site
How you add the markup depends on your platform. The goal is the same everywhere: one correct block of Article markup on every article page, filled in from the page’s own data.
- Check what you already have. Run one of your article URLs through Google’s Rich Results Test. Many themes and plugins already add Article markup, and you don’t want two competing blocks.
- Pick the type for each content section. For example,
BlogPostingfor the blog andNewsArticlefor a news section. - Set up author pages. Make sure each author has a bio page on your site. This gives you a solid URL for
author.url. - Add the markup to your article template. Fill the headline, images, dates and author from the post’s fields, not by hand. Hand-typed markup gets out of date fast.
- Test a few live articles. Check one new post, one old post and one post with several authors. Fix any errors and look at the detected values, not just the green ticks.
- Ask Google to recrawl key pages. Use the URL Inspection tool for a few important articles. The rest will be picked up as Google recrawls the site, which can take days or weeks.
On WordPress
Popular SEO plugins such as Yoast SEO and Rank Math add Article markup to posts automatically. In most cases you only need to check their settings: the default article type, the publisher name and logo, and that each author has a proper profile.
The problem I usually see on WordPress sites is double markup. The theme adds one Article block and the SEO plugin adds another, with different dates or authors. If that happens, turn off the theme’s version and keep one source.
On a Custom Site or Other CMS
Ask your developer to add the JSON-LD block to the article template and fill it from the CMS fields. On Shopify, Webflow, Wix and similar platforms, check whether the blog template already outputs markup before adding your own.
Using Google Tag Manager
Google can read structured data that JavaScript adds to the page, so you can inject JSON-LD with a Custom HTML tag in Google Tag Manager. I treat this as a last resort. It works, but the markup sits away from the content, and it is easy to break when the site changes. Putting it in the template is safer.
How to Test and Check Your Markup
Testing has two parts: checking the code is valid, and checking it says the right things.
The Rich Results Test shows whether Google can read your Article markup and lists any errors or warnings. Errors need fixing. Warnings about missing recommended properties are worth fixing if the data exists, but they won’t stop Google using the markup.
Then look at the values the tool detected. Is the headline the real title? Is the image the featured image, not the logo? Are the dates right, with the correct time zone? A tool can pass broken data that is valid code.
For live pages, the URL Inspection tool in Search Console shows what Google found the last time it crawled the page, including detected structured data. It is also how you request a recrawl after a fix.
One thing to know: Search Console does not have a separate rich result report for Article markup, as it does for some other types. So don’t wait for a report to appear. Spot check your templates now and then instead, especially after a theme or plugin update.
Common Mistakes I See With Article Schema
Most problems are not in the code. They come from data that is wrong, out of date or duplicated.
- Two or three Article blocks on one page. Usually from a theme plus a plugin. They often disagree on dates or authors.
- A logo used as the article image. Google asks for images that represent the article itself.
- Dates with no time zone. This can push the date shown in Google off by a day.
- dateModified that changes on its own. Some setups update it every time the page is cached or rebuilt.
- Author set to “admin” or the company name. If a real person wrote the post and their name is on the page, put them in the markup.
- Extra words in the author name. “By Jane Smith, Head of Content” belongs in separate properties, not the name field.
- Headline that doesn’t match the page. The markup says one thing and the H1 says another, often after the title was edited.
- Article markup on pages that are not articles. Home pages, service pages and category pages should not carry it.
Google also warns that markup which misleads, for example a fake author or content hidden from users, can lead to a manual action. In that case Google ignores your structured data, though the page can still appear in results.
Multi-Page Articles
If you split long articles across several pages, Google asks that each page’s canonical tag (the code that tells Google which URL is the main version) points to itself or to a “view all” page. Don’t point every page’s canonical to page one.
How Article Markup Fits With the Rest of Your Page
Structured data works best when it confirms what the page already shows clearly. A visible headline, a byline that links to the author’s bio, a visible date and a strong featured image all help readers first. The markup then repeats those facts in a form Google can trust.
That is why I check Article markup as part of a normal on-page review, alongside titles, headings and internal links. My on-page SEO checklist covers those other parts.
Article markup is also separate from Open Graph tags. Open Graph controls how your link looks when someone shares it on Facebook, LinkedIn or WhatsApp. Google uses structured data. Most blogs need both, and they should use the same title and image. I cover the social side in my guide to Open Graph tags.
Conclusion
Article structured data is simple once you know what matters. Pick the right type, fill in the headline, images, dates and authors correctly, and make sure there is only one block per page. There are no required properties, so focus on accuracy over adding every field you can find.
For your next step, open two or three of your own articles in the Rich Results Test today. Check the detected headline, image, dates and author against what the page shows. If anything is wrong, fix it in the template once, and every article benefits. For the full details, Google’s Article structured data documentation is the reference I keep coming back to.



