Article

Last updated:

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 reporting
  • BlogPosting — for blog posts and informal articles
  • TechArticle — for technical documentation and tutorials
  • ScholarlyArticle — for academic papers and research
  • Report — 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

PropertyTypeDescription
@typeTextMust be "Article" or a more specific subtype.
headlineTextThe title of the article. Google recommends keeping this under 110 characters. It should match the visible H1 on the page.
datePublishedDateTimeThe date and time the article was first published, in ISO 8601 format (e.g., "2026-03-07T08:00:00-05:00").
authorPerson or OrganizationThe author of the article. Use a Person object with at least a name property. For organizational authors, use an Organization object.
PropertyTypeDescription
dateModifiedDateTimeThe date the article was last significantly updated. Important for evergreen content that gets refreshed. Must be in ISO 8601 format.
imageURL or ImageObjectThe 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.
publisherOrganizationThe organization that published the article. Include name and logo. This is the publication, not the individual author.
descriptionTextA short summary of the article, typically 150-160 characters. Used in search snippets and social sharing.
mainEntityOfPageURL or WebPageThe canonical URL of the page. Indicates that this article is the primary content of the page.
articleSectionTextThe section of the publication (e.g., “Technology”, “Sports”, “Opinion”).
wordCountIntegerThe approximate word count of the article body.
keywordsTextComma-separated keywords or tags relevant to the article.
inLanguageTextThe language of the article content using IETF BCP 47 codes (e.g., "en-US", "fr").
isAccessibleForFreeBooleanWhether 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 one Person or Organization author with a name property.
  • Using a string for author instead of an object. The author field must be a Person or Organization object, not a plain text string. "author": "Maria Santos" is invalid.
  • headline does 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 dateModified without actual changes. Do not update dateModified unless 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: false and identify the paywalled sections using hasPart with WebPageElement.

Testing & Validation

  1. 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.
  2. Schema.org Validator — Use validator.schema.org to confirm your JSON-LD is syntactically valid.
  3. Google Search Console — Check the “Article” section under Enhancements for indexing issues across your site. Pay attention to author and image warnings.
  4. 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.
  5. 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.
  • 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.