og:article Metadata: Published Time, Author, Section, and Tags

How to use og:type=article with og:article:published_time, og:article:author, og:article:section, and og:article:tag for blog posts and news articles.

What is og:type=article?

The Open Graph protocol defines a set of object types. When you set og:type to article, you unlock a set of article: namespace properties that provide structured metadata specific to written content — blog posts, news articles, and editorial pieces.

Facebook was the original consumer of these tags, but many platforms now read them. Google uses article:published_time as a signal for content freshness. Some social platforms display author and publication date in their link previews.

Complete article OG tag set

<head>
  <!-- Required base OG tags -->
  <meta property="og:type"        content="article" />
  <meta property="og:title"       content="How to Use og:article Metadata" />
  <meta property="og:description" content="A guide to article-specific OG properties." />
  <meta property="og:image"       content="https://yourdomain.com/og/article-og-guide.png" />
  <meta property="og:url"         content="https://yourdomain.com/blog/og-article-guide" />
  <meta property="og:site_name"   content="Your Blog Name" />

  <!-- Article-specific properties -->
  <meta property="article:published_time"  content="2024-03-15T09:00:00+00:00" />
  <meta property="article:modified_time"   content="2024-03-20T14:30:00+00:00" />
  <meta property="article:expiration_time" content="2025-03-15T09:00:00+00:00" />
  <meta property="article:author"          content="https://yourdomain.com/authors/jane-smith" />
  <meta property="article:section"         content="Engineering" />
  <meta property="article:tag"             content="open graph" />
  <meta property="article:tag"             content="seo" />
  <meta property="article:tag"             content="meta tags" />
</head>

Note: article:tag is a repeatable property — include one <meta> tag per keyword/tag.

article:published_time

This is the most important article property. It must be in ISO 8601 format with timezone offset:

<!-- Correct: ISO 8601 with timezone -->
<meta property="article:published_time" content="2024-03-15T09:00:00+00:00" />
<meta property="article:published_time" content="2024-03-15T09:00:00Z" />

<!-- Also valid (UTC): -->
<meta property="article:published_time" content="2024-03-15" />

<!-- WRONG — not ISO 8601: -->
<meta property="article:published_time" content="March 15, 2024" />
<meta property="article:published_time" content="03/15/2024" />

In JavaScript, generate the correct format with: new Date(post.publishedAt).toISOString()

article:author

The article:author property should be a URL pointing to the author's profile page (an OG object of type profile). It is also repeatable for co-authored articles.

<!-- Single author (URL to author profile page) -->
<meta property="article:author" content="https://yourdomain.com/authors/jane-smith" />

<!-- Multiple authors -->
<meta property="article:author" content="https://yourdomain.com/authors/jane-smith" />
<meta property="article:author" content="https://yourdomain.com/authors/john-doe" />

<!-- The author profile page should have these OG tags: -->
<!-- <meta property="og:type" content="profile"> -->
<!-- <meta property="profile:first_name" content="Jane"> -->
<!-- <meta property="profile:last_name" content="Smith"> -->
<!-- <meta property="profile:username" content="janesmith"> -->

Facebook displays author information from this relationship. Twitter and LinkedIn largely ignore article:author in favor of their own attribution mechanisms.

article:section

A high-level category or section name for the article. This is a single string, not a URL. Use it for your top-level content categories:

<meta property="article:section" content="Engineering" />
<!-- or -->
<meta property="article:section" content="Product News" />
<meta property="article:section" content="Tutorials" />

article:tag

Tags are granular keywords describing the article content. Include one <meta> tag per keyword. Keep tags to 5–10 per article; more than that provides diminishing returns.

<meta property="article:tag" content="open graph" />
<meta property="article:tag" content="seo" />
<meta property="article:tag" content="social media" />
<meta property="article:tag" content="meta tags" />
<meta property="article:tag" content="link preview" />

Implementing in Next.js

// app/blog/[slug]/page.tsx
export async function generateMetadata({ params }) {
  const post = await getPost(params.slug);

  return {
    title: post.title,
    description: post.excerpt,
    openGraph: {
      title: post.title,
      description: post.excerpt,
      type: 'article',
      url: `https://yourdomain.com/blog/${post.slug}`,
      images: [{ url: post.ogImage, width: 1200, height: 630 }],
      publishedTime: new Date(post.publishedAt).toISOString(),
      modifiedTime: new Date(post.updatedAt).toISOString(),
      authors: [`https://yourdomain.com/authors/${post.author.slug}`],
      section: post.category,
      tags: post.tags,
    },
  };
}

Implementing in WordPress

Plugins like Yoast SEO and Rank Math automatically add article:published_time and article:modified_time for post types. For full control, use a custom filter:

// functions.php
add_action('wp_head', function() {
  if (is_single()) {
    global $post;
    $published = get_the_date('c', $post);
    $modified  = get_the_modified_date('c', $post);
    $author_url = get_author_posts_url($post->post_author);
    $tags = get_the_tags();

    echo '<meta property="og:type" content="article">' . "\n";
    echo '<meta property="article:published_time" content="' . esc_attr($published) . '">' . "\n";
    echo '<meta property="article:modified_time"  content="' . esc_attr($modified) . '">' . "\n";
    echo '<meta property="article:author"         content="' . esc_url($author_url) . '">' . "\n";

    if ($tags) {
      foreach ($tags as $tag) {
        echo '<meta property="article:tag" content="' . esc_attr($tag->name) . '">' . "\n";
      }
    }
  }
});

Which platforms use article: properties?

  • Facebook: Uses all article: properties for its sharing debugger and link previews.
  • Google: Uses article:published_time and article:modified_time as freshness signals.
  • Twitter/X: Ignores article: properties; uses twitter: card tags instead.
  • LinkedIn: Partially respects article: properties in its Post Inspector.
  • Discord, Slack: Ignore article: properties; display og:title, og:description, og:image only.

Test your OG tags free

Paste any URL into OGFixer to see exactly how your link previews look on Twitter, LinkedIn, Discord, and Slack.

Related Guides