The Article type represents a self-contained written composition — a news story, investigative report, opinion piece, or feature article. Search engines use Article markup to display rich results including the headline, author, publish date, and thumbnail image in search listings and in Google Discover. Proper Article markup is essential for any news or editorial website.
When to Use This
Use Article on any page that contains a standalone written piece with a clear headline, author, and publication date. This includes news articles, magazine features, investigative reports, opinion columns, and general editorial content.
Choose a more specific subtype when appropriate:
NewsArticle— for timely news reportingBlogPosting— for blog posts and informal articlesTechArticle— for technical documentation and tutorialsScholarlyArticle— for academic papers and researchReport— for formal reports and white papers
Use the base Article type when none of the subtypes apply or when the content is general editorial.
Do not use Article for:
- Product pages — use Product instead
- FAQ content — use FAQPage instead
- Landing pages without editorial content — use
WebPage - User-generated forum posts — use
DiscussionForumPosting
Required Properties
| Property | Type | Description |
|---|---|---|
@type | Text | Must be "Article" or a more specific subtype. |
headline | Text | The title of the article. Google recommends keeping this under 110 characters. It should match the visible H1 on the page. |
datePublished | DateTime | The date and time the article was first published, in ISO 8601 format (e.g., "2026-03-07T08:00:00-05:00"). |
author | Person or Organization | The author of the article. Use a Person object with at least a name property. For organizational authors, use an Organization object. |
Recommended Properties
| Property | Type | Description |
|---|---|---|
dateModified | DateTime | The date the article was last significantly updated. Important for evergreen content that gets refreshed. Must be in ISO 8601 format. |
image | URL or ImageObject | The primary image for the article. Google requires at least one image for article rich results. Recommended minimum width: 1200px. Provide multiple sizes using an array of ImageObject entries. |
publisher | Organization | The organization that published the article. Include name and logo. This is the publication, not the individual author. |
description | Text | A short summary of the article, typically 150-160 characters. Used in search snippets and social sharing. |
mainEntityOfPage | URL or WebPage | The canonical URL of the page. Indicates that this article is the primary content of the page. |
articleSection | Text | The section of the publication (e.g., “Technology”, “Sports”, “Opinion”). |
wordCount | Integer | The approximate word count of the article body. |
keywords | Text | Comma-separated keywords or tags relevant to the article. |
inLanguage | Text | The language of the article content using IETF BCP 47 codes (e.g., "en-US", "fr"). |
isAccessibleForFree | Boolean | Whether the article is free to read or behind a paywall. If paywalled, pair with hasPart using WebPageElement and isAccessibleForFree: false. |
JSON-LD Example
A complete Article markup for a news article:
{
"@context": "https://schema.org",
"@type": "NewsArticle",
"headline": "City Council Approves New Public Transit Expansion Plan",
"description": "The Portland City Council voted 4-1 to approve a $2.3 billion transit expansion that will add three new light rail lines by 2032.",
"image": [
{
"@type": "ImageObject",
"url": "https://www.portlandgazette.com/images/transit-plan-hero.jpg",
"width": 1200,
"height": 630
},
{
"@type": "ImageObject",
"url": "https://www.portlandgazette.com/images/transit-plan-square.jpg",
"width": 1200,
"height": 1200
}
],
"datePublished": "2026-03-06T14:30:00-08:00",
"dateModified": "2026-03-07T09:15:00-08:00",
"author": [
{
"@type": "Person",
"name": "Maria Santos",
"url": "https://www.portlandgazette.com/authors/maria-santos",
"jobTitle": "Transportation Reporter"
}
],
"publisher": {
"@type": "Organization",
"name": "Portland Gazette",
"url": "https://www.portlandgazette.com",
"logo": {
"@type": "ImageObject",
"url": "https://www.portlandgazette.com/images/logo.png",
"width": 300,
"height": 60
}
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://www.portlandgazette.com/news/transit-expansion-approved"
},
"articleSection": "Local News",
"wordCount": 1450,
"keywords": "public transit, light rail, Portland, city council, infrastructure",
"inLanguage": "en-US",
"isAccessibleForFree": true
}
The same Article marked up with Microdata:
<article itemscope itemtype="https://schema.org/NewsArticle">
<meta itemprop="mainEntityOfPage" content="https://www.portlandgazette.com/news/transit-expansion-approved" />
<h1 itemprop="headline">City Council Approves New Public Transit Expansion Plan</h1>
<p itemprop="description">The Portland City Council voted 4-1 to approve a $2.3 billion transit expansion that will add three new light rail lines by 2032.</p>
<img itemprop="image" src="https://www.portlandgazette.com/images/transit-plan-hero.jpg"
alt="Rendering of proposed light rail expansion" width="1200" height="630" />
<div itemprop="author" itemscope itemtype="https://schema.org/Person">
By <a itemprop="url" href="https://www.portlandgazette.com/authors/maria-santos">
<span itemprop="name">Maria Santos</span>
</a>
</div>
<time itemprop="datePublished" datetime="2026-03-06T14:30:00-08:00">March 6, 2026</time>
<time itemprop="dateModified" datetime="2026-03-07T09:15:00-08:00">Updated March 7, 2026</time>
<div itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
<meta itemprop="name" content="Portland Gazette" />
<div itemprop="logo" itemscope itemtype="https://schema.org/ImageObject">
<meta itemprop="url" content="https://www.portlandgazette.com/images/logo.png" />
<meta itemprop="width" content="300" />
<meta itemprop="height" content="60" />
</div>
</div>
<meta itemprop="articleSection" content="Local News" />
<meta itemprop="wordCount" content="1450" />
</article>
The same Article marked up with RDFa:
<article vocab="https://schema.org/" typeof="NewsArticle">
<meta property="mainEntityOfPage" content="https://www.portlandgazette.com/news/transit-expansion-approved" />
<h1 property="headline">City Council Approves New Public Transit Expansion Plan</h1>
<p property="description">The Portland City Council voted 4-1 to approve a $2.3 billion transit expansion that will add three new light rail lines by 2032.</p>
<img property="image" src="https://www.portlandgazette.com/images/transit-plan-hero.jpg"
alt="Rendering of proposed light rail expansion" width="1200" height="630" />
<div property="author" typeof="Person">
By <a property="url" href="https://www.portlandgazette.com/authors/maria-santos">
<span property="name">Maria Santos</span>
</a>
</div>
<time property="datePublished" datetime="2026-03-06T14:30:00-08:00">March 6, 2026</time>
<time property="dateModified" datetime="2026-03-07T09:15:00-08:00">Updated March 7, 2026</time>
<div property="publisher" typeof="Organization">
<meta property="name" content="Portland Gazette" />
<div property="logo" typeof="ImageObject">
<meta property="url" content="https://www.portlandgazette.com/images/logo.png" />
</div>
</div>
</article>
Common Mistakes
- Missing
author. Google now requires an author for article rich results. Always include at least onePersonorOrganizationauthor with anameproperty. - Using a string for
authorinstead of an object. Theauthorfield must be aPersonorOrganizationobject, not a plain text string."author": "Maria Santos"is invalid. headlinedoes not match the visible H1. The structured data headline must match what users see on the page. Discrepancies can be treated as misleading markup.- Missing
image. Articles without an image are ineligible for most Google rich result formats, including Top Stories and Discover. Provide at least one image with a minimum width of 1200 pixels. - Incorrect date formats. Use full ISO 8601 with timezone offset (e.g.,
2026-03-07T08:00:00-05:00). Omitting the time or timezone makes the date ambiguous. - Setting
dateModifiedwithout actual changes. Do not updatedateModifiedunless the content has been meaningfully revised. Artificially bumping this date is considered a spam signal. - Omitting
publisher. While not strictly required, publisher information significantly strengthens your article’s credibility in search engine evaluation. - Marking up non-article content as Article. Product pages, landing pages, and category pages are not articles. Misapplying Article markup can trigger manual actions.
- Not handling paywalled content correctly. If any part of the article is behind a paywall, you must indicate this with
isAccessibleForFree: falseand identify the paywalled sections usinghasPartwithWebPageElement.
Testing & Validation
- Google Rich Results Test — Paste your article URL at search.google.com/test/rich-results. Verify the Article result type is detected with no errors or warnings.
- Schema.org Validator — Use validator.schema.org to confirm your JSON-LD is syntactically valid.
- Google Search Console — Check the “Article” section under Enhancements for indexing issues across your site. Pay attention to author and image warnings.
- Google Discover eligibility — Articles with proper markup, high-quality images (at least 1200px wide), and good user engagement may appear in Google Discover. Monitor performance in Search Console’s Discover report.
- Social sharing preview — Test how your article appears when shared on Twitter/X, Facebook, and LinkedIn. While these platforms primarily use Open Graph tags, structured data consistency helps ensure accurate previews.
Related Schemas
- BlogPosting — A subtype of Article for blog posts and informal editorial content.
- WebPage — The generic page type. Use when content does not qualify as an article.
- Person — Used to identify article authors with structured data.
- Organization — Used to identify the publisher of the article.