Open Graph Tags
Last reviewed:
Add to the <head> of every page you want to share with a rich link preview. OG tags are not structured data and do not affect search ranking directly — their job is social rendering and messaging-app previews. og:url should always match the canonical URL; mismatches cause deduplication failures and duplicate card submissions on some platforms.
Baseline
<!-- ── REQUIRED for a basic OG card ─────────────────────────────────────── -->
<meta property="og:title" content="REQUIRED -- page title, max ~60 characters for display">
<meta property="og:description" content="REQUIRED -- 1-2 sentences, max ~155 characters">
<meta property="og:image" content="REQUIRED -- absolute URL; 1200x630px recommended minimum">
<meta property="og:url" content="REQUIRED -- canonical URL of this page">
<meta property="og:type" content="REQUIRED -- website | article | product">
<!-- ── RECOMMENDED ──────────────────────────────────────────────────────── -->
<meta property="og:site_name" content="RECOMMENDED -- your site or publication name">
<meta property="og:locale" content="RECOMMENDED -- e.g. en_US">
<!-- ── IMAGE DIMENSIONS (recommended for consistent rendering) ──────────── -->
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="RECOMMENDED -- alt text for the OG image">
<!-- ── TWITTER / X CARD (add alongside OG tags) ─────────────────────────── -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="OPTIONAL -- overrides og:title on X">
<meta name="twitter:description" content="OPTIONAL -- overrides og:description on X">
<meta name="twitter:image" content="OPTIONAL -- overrides og:image on X">
<meta name="twitter:site" content="OPTIONAL -- @yourhandle">
Article variant (og:type=article)
Use on editorial, playbook, briefing, and news pages. og:type=article unlocks the article: namespace — silently ignored on website-type pages.
<meta property="og:type" content="article">
<meta property="og:title" content="REQUIRED -- article headline, max ~60 characters">
<meta property="og:description" content="REQUIRED -- 1-2 sentences, max ~155 characters">
<meta property="og:image" content="REQUIRED -- absolute URL; 1200x630px minimum">
<meta property="og:url" content="REQUIRED -- canonical URL of this article">
<meta property="og:site_name" content="RECOMMENDED -- publication name">
<!-- article: namespace -- only parsed when og:type is article -->
<meta property="article:published_time" content="REQUIRED -- ISO 8601, e.g. 2026-03-28T09:00:00+00:00">
<meta property="article:modified_time" content="RECOMMENDED -- ISO 8601; update on each substantive edit">
<meta property="article:author" content="OPTIONAL -- absolute URL of author bio page">
<meta property="article:section" content="OPTIONAL -- primary section, e.g. Technology">
<meta property="article:tag" content="OPTIONAL -- repeat this tag for each keyword; max ~10">
<!-- Twitter/X card -- article pages -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="RECOMMENDED -- article headline">
<meta name="twitter:image" content="RECOMMENDED -- same absolute URL as og:image">
<meta name="twitter:creator" content="OPTIONAL -- @authorhandle">
Field notes
- Images below 600px wide render as small thumbnails or are ignored — use 1200×630px minimum.
og:urlmust be the canonical URL — mismatches cause deduplication failures and duplicate card submissions on some platforms.- Facebook and LinkedIn cache OG tags aggressively — use their card debugger tools after publishing to force a cache refresh.
- Twitter/X falls back to
og:values whentwitter:tags are absent, but always declaretwitter:cardexplicitly — fallback behavior for card type is unreliable. - Repeat
<meta property="article:tag">once per keyword — parsers expect separate elements, not a comma-separated string. article:modified_timeis consumed by Facebook, LinkedIn, and Slack unfurling; a stale value keeps showing the original publication date in cards even after content updates.