Open Graph Tags: The Complete 2026 Guide

Author: Lucky Oleg | Published
Open Graph Tags: The Complete 2026 Guide

Most Open Graph guides stop at “add og:title and og:image.” That was enough in 2018. In 2026 your link gets scraped by eight social platforms, four messaging apps, and a growing number of AI search crawlers that use OG metadata as fallback structured data.

This guide covers every tag worth setting, how each platform behaves differently, the eleven reasons your og:image is not rendering, and why OG tags now matter for AI visibility, not just social shares.

If you want a broader primer on head-level metadata, start with our meta tags that actually matter for SEO guide. This article goes deep on Open Graph only.

What Open Graph Actually Is

Open Graph is a protocol Facebook shipped in 2010 to turn web pages into structured objects that social platforms could render as rich cards. The specification never formally expanded, but adoption did. Today every meaningful sharing surface reads OG tags:

  • Social feeds: Facebook, LinkedIn, X, Pinterest, Threads
  • Messengers: WhatsApp, iMessage, Telegram, Signal, Slack, Discord, Microsoft Teams
  • AI crawlers: Perplexity, ChatGPT search, Google AI Overviews, Bing Copilot, Claude web tools
  • Email and productivity: Gmail inline previews, Notion, Linear, Figma comments

A URL with no OG tags gets rendered as a bare link. A URL with correct OG tags gets a card with a title, description, image, and source attribution. Link-preview cards earn meaningfully higher click-through than bare URLs across every sharing surface that has published data.

The protocol is simple on purpose. Each tag is a single line of HTML with a property attribute and a content attribute. There is no JavaScript requirement, no authentication, and no API. A crawler visits your URL, reads the head, extracts OG tags, and renders a card. This simplicity is also why OG tags are now the default fallback format for any crawler that needs a quick, cheap summary of what a page is about, which is exactly the problem AI search engines need to solve at scale.

The Four Required Open Graph Tags

Per the official Open Graph protocol, these four tags are required on any page you want to render as a rich object:

<meta property="og:title" content="Open Graph Tags: The Complete 2026 Guide" />
<meta property="og:type" content="article" />
<meta property="og:image" content="https://webaloha.co/images/og/open-graph-guide.jpg" />
<meta property="og:url" content="https://webaloha.co/open-graph-tags-complete-guide/" />

A few non-obvious rules:

  • Use property="og:...", not name="og:...". Strict parsers ignore the wrong attribute.
  • og:image must be an absolute HTTPS URL. Relative paths are the single most common reason previews break.
  • og:url should be the canonical URL, matching your <link rel="canonical">. Inconsistency between the two confuses share aggregation and AI crawlers.
  • og:type must be a valid value: website, article, book, profile, or one of the music/video subtypes. Custom values are silently dropped.

Extended Open Graph Tags Worth Setting

These are technically optional, but skipping them costs real rendering quality:

<meta property="og:description" content="The complete 2026 guide to Open Graph tags, platform behavior, image specs, and debugging." />
<meta property="og:site_name" content="Web Aloha" />
<meta property="og:locale" content="en_US" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="Diagram of Open Graph tags rendered as a social share card" />
<meta property="og:image:type" content="image/jpeg" />

For blog posts, add the article: namespace. These are read by Facebook, LinkedIn, and several AI crawlers as authorship and freshness signals:

<meta property="article:published_time" content="2026-04-18T09:00:00Z" />
<meta property="article:modified_time" content="2026-04-18T09:00:00Z" />
<meta property="article:author" content="https://webaloha.co/about/" />
<meta property="article:section" content="SEO" />
<meta property="article:tag" content="Open Graph" />

For video and audio pages, og:video:secure_url, og:video:type, og:video:width, og:video:height, and the equivalent og:audio:* tags enable inline playback on platforms that support it. For localized sites, repeat og:locale:alternate for each additional language so Facebook can serve the right regional preview.

A word on og:type=profile. Use it for author pages and team bios, combined with profile:first_name, profile:last_name, and profile:username. AI crawlers parse these as entity signals when building author knowledge graphs, and they complement the Person schema you should also be emitting. Product pages do not have a first-class OG type. Facebook retired product years ago, so use website and lean on Product schema for the actual product metadata.

Open Graph Platform Behavior Compared

Every platform reads OG tags, but they disagree about which ones matter and how to render them. This is the reference table we wish existed when we started debugging shares for clients.

PlatformReads OGUses Twitter tagsShows descriptionImage minImage preferredNotable quirk
FacebookYes (primary)NoYes600x3151200x630Caches ~30 days; HEAD-checks image URL
LinkedInYes (primary)NoYes1200x627 (strict)1200x627Silently drops images below minimum
X / TwitterFalls back to OGYes (preferred)Summary card only300x1571200x600Large card needs twitter:card=summary_large_image
SlackYesNoYes500x2621200x630Generates own thumbnails from og:image
DiscordYesYes (fallback)Yes~500x2621200x630Uses theme-color for embed border
WhatsAppYesNoNo (title + image only)300x2001200x630, under 300 KBSkips images over ~300 KB on mobile
iMessageYes (partial)NoNo (title + image only)1200x1200 works1200x630 or squareFalls back to apple-touch-icon then favicon
TelegramYesYes (fallback)Yes300x2001200x630Requires <html prefix="og: ...">; refresh via @WebpageBot
PinterestYes (partial)NoYes600x9001000x1500 (vertical)Prefers 2:3 portrait; wants og:type=article

The practical takeaway: a single 1200x630 JPG keyed to your canonical URL will render correctly on every platform except Pinterest, which rewards a separate vertical image. For most SMBs and agencies, shipping that single image plus the core OG tags covers 95 percent of the sharing surface area. Only invest in per-platform assets when analytics tell you a specific channel is worth bespoke treatment.

Two behaviors worth memorizing. First, platforms with messenger roots (WhatsApp, iMessage) are the strictest about file size and the most willing to silently drop your image. Second, LinkedIn is the strictest about dimensions. It is the only mainstream platform that will refuse an otherwise valid image simply because it is 1199 pixels wide instead of 1200.

Open Graph Image Specs by Platform

Image specs from official platform docs and current behavior:

PlatformDimensionsAspect ratioMax file sizeFormat
Facebook1200x6301.91:18 MBJPG, PNG
LinkedIn1200x6271.91:15 MBJPG, PNG
X (large card)1200x6002:15 MBJPG, PNG, WEBP, GIF
X (summary)400x4001:15 MBSame
Slack1200x6301.91:1-JPG, PNG
Discord1280x6402:18 MBJPG, PNG, WEBP, GIF
WhatsApp1200x6301.91:1~300 KB idealJPG, PNG
iMessage1200x1200 or 1200x6301:1 or 1.91:1~5 MBJPG, PNG
Telegram1200x6301.91:15 MBJPG, PNG
Pinterest1000x15002:320 MBJPG, PNG

Text overlay rules that survive every platform:

  • Keep all text, logos, and key visual elements within the central 80 percent of the canvas. LinkedIn crops ~5 percent on each side on some viewports; X trims the top and bottom on some clients.
  • Never rely on text smaller than 32 px. Share cards render at roughly 360 px wide in most feeds, so your 32 px becomes ~10 px, already near illegibility.
  • Put your brand in a consistent position. Bottom-left or top-right are the two spots least affected by platform cropping.
  • Use high contrast. Social feeds are cluttered, and low-contrast imagery loses every time.

For the broader image rules (alt text, file format choices, CDN delivery), see our image SEO guide. You can also audit an OG image programmatically with our Image SEO Checker.

Twitter Card Tags: When You Still Need Them

X reads property="og:..." and falls back to OG values for missing twitter: tags. Which means the minimal X-friendly setup is a single extra line:

<meta name="twitter:card" content="summary_large_image" />

That plus your existing OG tags produces a full-bleed image card on X. You only need the full set if X is a meaningful distribution channel or if you want different copy or imagery there:

<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@webaloha" />
<meta name="twitter:creator" content="@olegcapo" />
<meta name="twitter:title" content="Open Graph Tags: The Complete 2026 Guide" />
<meta name="twitter:description" content="The full 2026 guide to OG tags, platforms, images, and debugging." />
<meta name="twitter:image" content="https://webaloha.co/images/og/open-graph-guide.jpg" />

Explicit Twitter tags give you control over truncation (X truncates titles around 70 characters and descriptions around 200) and let you switch imagery per platform if you want X-native artwork.

The 11 Reasons Your og:image Is Not Showing

If a platform is rendering your link without the image, the problem is almost always one of these, roughly in order of frequency:

  1. Relative URL. content="/images/og.jpg" fails on every crawler. Always use the absolute HTTPS URL including the domain.
  2. HTTP, not HTTPS. Several platforms refuse non-HTTPS images outright. Also set og:image:secure_url if you serve a mixed environment.
  3. Platform cache is stale. You updated the image; the platform is still showing the old one. Force-refresh via the platform’s debugger (see next section).
  4. Image below minimum dimensions. LinkedIn rejects anything under 1200x627. Facebook rejects under 200x200. Always default to 1200x630 or larger.
  5. File size too large. WhatsApp skips images over ~300 KB on mobile. Facebook caps at 8 MB. Compress before deploying.
  6. Wrong or missing file extension. Some crawlers infer type from the URL. Use .jpg, .jpeg, or .png. WebP is supported on X but inconsistent elsewhere.
  7. Image behind auth, CDN rules, or hotlink protection. Crawlers are not logged in. Test the image URL in an incognito window; if it 401s or 403s, the crawler will too.
  8. robots.txt or bot-protection blocking the crawler. Cloudflare bot-fight mode, AWS WAF, and aggressive robots.txt rules block FacebookExternalHit, LinkedInBot, TwitterBot, TelegramBot, and Slackbot. Allow these user agents explicitly in your bot rules and robots.txt.
  9. Redirects. Each redirect hop is a chance for the crawler to bail. Keep OG image URLs as direct 200 responses.
  10. CORS or hotlink headers stripping the crawler. Some CDNs refuse requests without a Referer header. Check your CDN’s bot rules.
  11. Mismatch between og:image and og:url origins. Serving the image from a different domain than the page sometimes triggers validation errors on LinkedIn. Keep them on the same domain where possible, or pre-warm the cache with both.

A diagnostic shortcut: run curl -A "facebookexternalhit/1.1" -I https://yourdomain.com/path/og.jpg from a terminal. If you get a 200 OK with Content-Type: image/jpeg and a reasonable file size, the image is reachable for Facebook and most other crawlers. If you get a 403, 404, or a challenge page, you have found the bug without having to touch a single platform debugger. Repeat with LinkedInBot, TwitterBot, and TelegramBot as user agents if a specific platform is failing.

Run a broken URL through our Open Graph Checker to see which tags the crawlers actually parse. It catches most of the issues above in one pass.

This is the part most 2026 OG guides miss entirely.

The crawlers behind Perplexity, ChatGPT search, Google AI Overviews, Bing Copilot, and Claude’s web browsing all parse head-level metadata as part of their document understanding pipeline. When structured data (JSON-LD schema) is present and valid, schema is the primary source of truth. When it is not (and industry audits consistently find schema coverage under 40 percent across published content), OG tags act as the fallback.

Specifically, AI crawlers treat:

  • og:title as a cleaner, more editorially controlled version of <title>
  • og:description as a human-written summary to anchor extraction
  • og:site_name as a publisher entity signal
  • og:type=article plus article:published_time and article:modified_time as freshness and content-class signals
  • article:author as an authorship signal when linked to a profile URL with matching schema
  • og:locale as a language and region hint for regional answer engines

This does not replace schema markup for AI citations. Schema is still the higher-fidelity signal, but correctly implemented OG tags measurably improve how AI systems classify and cite content that lacks schema. If you are already investing in optimizing content for AI citations, OG hygiene is a cheap, one-time win.

The practical 2026 stance: treat Open Graph as structured metadata for machines first, share cards second. The copy you write for og:title and og:description should be as careful as your meta description, and in some cases more so, because AI systems quote OG copy directly into generated answers when your page wins a citation.

Concretely, this changes how we audit OG tags for clients. We check that og:site_name is set on every page (many CMSes skip it by default), that article:author resolves to a real URL with matching Person or Organization schema, and that article:modified_time updates whenever the content is substantively edited. None of this moves rankings in the classical sense. All of it moves how AI systems describe and attribute your content, which is increasingly the ranking.

Open Graph Implementation in Astro, Next.js, and WordPress

Three short, practical examples.

Astro (dynamic OG per page):

---
// src/layouts/BaseLayout.astro
const { title, description, image, type = "website" } = Astro.props;
const canonical = new URL(Astro.url.pathname, Astro.site).toString();
const ogImage = new URL(image ?? "/og-default.jpg", Astro.site).toString();
---
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
<meta property="og:type" content={type} />
<meta property="og:url" content={canonical} />
<meta property="og:image" content={ogImage} />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:site_name" content="Web Aloha" />
<meta name="twitter:card" content="summary_large_image" />

Next.js (App Router metadata API):

// app/blog/[slug]/page.tsx
export async function generateMetadata({ params }) {
  const post = await getPost(params.slug);
  return {
    title: post.title,
    description: post.description,
    openGraph: {
      title: post.title,
      description: post.description,
      type: "article",
      url: `https://example.com/blog/${post.slug}/`,
      images: [{ url: post.ogImage, width: 1200, height: 630 }],
      publishedTime: post.publishedAt,
    },
    twitter: { card: "summary_large_image" },
  };
}

WordPress: Yoast SEO and Rank Math both emit OG tags automatically from the post title, excerpt, and featured image. Override per-post in the “Social” tab when the defaults are not what you want. If you hand-code your theme, drop the tag block into header.php inside the <?php wp_head(); ?> output and pull values from get_the_title(), get_the_excerpt(), and get_the_post_thumbnail_url($post, 'full'). A common WordPress gotcha: both Yoast and Rank Math will happily emit OG tags, and if both plugins are active you can end up with two og:image tags on the same page. Some crawlers pick the first, some pick the last, and you get inconsistent previews. Pick one plugin and deactivate the other’s social module.

How to Debug Open Graph Tags

The workflow we use on every client launch, in order:

  1. Facebook Sharing Debugger: parses the URL, shows Facebook’s last scrape, and lets you “Scrape Again” to force a cache refresh. This also covers WhatsApp and Instagram because they share Meta’s crawler.
  2. LinkedIn Post Inspector: the only way to refresh LinkedIn’s cache. If the image is wrong on LinkedIn, you have to re-inspect after every edit.
  3. X Card Validator (retired as a standalone tool; paste the URL into X’s composer to preview): shows exactly how the card will render, including truncation.
  4. Telegram @WebpageBot: send the URL in a DM to refresh Telegram’s cache. Maximum 10 URLs per day.
  5. Slack: paste into a private channel; Slack regenerates on every fresh paste if the URL is unchanged, or you can append a dummy query param (?v=2) to force a re-scrape.
  6. A tag inspector of your own: before you test platform-by-platform, confirm what is actually being served. View source, Chrome DevTools Elements panel, or a server-side fetch will all show you the rendered head.

Cache-busting pattern: if you absolutely need a share to re-scrape and platform debuggers are not available, append a throwaway query string (?v=2026-04-18). Most crawlers treat different query strings as different URLs. Use this sparingly; it fragments share counts if abused.

Pre-launch ritual. Before any major content launch or homepage refresh, we run every canonical URL through Facebook’s debugger and LinkedIn’s inspector once to pre-warm the cache. That way the first real share from a subscriber or stakeholder gets the correct preview immediately instead of Meta or LinkedIn discovering the page live and caching whatever intermediate state they find.

For broader head-tag audits across a site, combine the OG check with our Meta Tag Checker.

Open Graph Implementation Checklist

For every shareable page:

  • og:title, og:type, og:image, og:url present
  • og:description, og:site_name, og:locale present
  • og:image is an absolute HTTPS URL, at least 1200x630, under 5 MB, JPG or PNG
  • og:image:width, og:image:height, og:image:alt set
  • twitter:card=summary_large_image set (explicit twitter:* tags if X matters)
  • article:published_time, article:modified_time, article:author set on blog posts
  • Theme-color meta tag set for Discord embed branding
  • og:url matches canonical URL exactly
  • Tested through Facebook Debugger and LinkedIn Post Inspector
  • Important text kept inside the central 80 percent of the OG image
  • OG image origin not blocked by robots.txt, WAF, or CDN rules

Where Open Graph Fits in Your 2026 Stack

Open Graph tags used to be a social niceties checkbox. In 2026 they are part of your machine-readable metadata layer: the same crawlers that power link previews also power the AI systems citing your content. Get the tags right once, bake them into your layout or CMS so they ship on every shareable page automatically, and revisit only when you change your canonical URL structure or your brand imagery.

The mental model we recommend to clients: OG tags are cheap, durable, and compound. An hour of setup today pays off every time your content is shared, quoted, or cited for as long as the page lives. Very few things in SEO and GEO offer that ratio in 2026.

If you want this implemented across your site, or audited as part of a broader technical SEO review, that is what our web design and SEO services teams do on every launch.

Open Graph Tags FAQ

What are Open Graph tags?

Open Graph tags are HTML meta tags in the head of a page that tell social platforms, messaging apps, and crawlers how to render a link preview. The protocol was introduced by Facebook in 2010 and is now read by LinkedIn, X, Slack, Discord, WhatsApp, iMessage, Telegram, and a growing number of AI search crawlers. The four required tags are og:title, og:type, og:image, and og:url.

Do Open Graph tags help SEO rankings?

Not directly. Google has repeatedly said Open Graph tags are not a ranking factor. But they strongly influence click-through rate on social referrals, which is a behavioral signal, and AI search systems like Perplexity, ChatGPT search, and Google AI Overviews fall back to OG metadata when schema markup is missing or malformed. In 2026, treating OG tags as part of your structured metadata stack is the correct call.

What size should an Open Graph image be?

Use 1200 by 630 pixels at a 1.91:1 aspect ratio as your universal default. This works for Facebook, LinkedIn, Slack, Discord, WhatsApp, and Telegram without cropping, and X will render it as a summary_large_image card. Keep the file under 5 MB and under 300 KB if WhatsApp sharing matters to you. Keep critical text and logos inside the central 80 percent of the canvas to survive platform-specific cropping.

Why is my og:image not showing up?

The most common causes are relative image URLs instead of absolute HTTPS URLs, platform caches that have not been refreshed, images below a platform’s minimum dimensions (LinkedIn rejects anything below 1200 by 627), and crawlers blocked by robots.txt or bot-protection rules. Run the URL through the Facebook Sharing Debugger and LinkedIn Post Inspector to see exactly what each platform scraped and force a cache refresh.

Do I still need Twitter Card tags if I have Open Graph tags?

X falls back to Open Graph when Twitter-specific tags are missing, so at minimum you only need twitter:card set to summary_large_image. If X is a meaningful distribution channel for you, add twitter:title, twitter:description, twitter:image, and twitter:site explicitly for predictable rendering. Everything else can safely fall back to your OG tags.

How often do social platforms cache Open Graph tags?

Facebook caches for around 30 days but can be refreshed immediately through the Sharing Debugger. LinkedIn caches for approximately 7 days and must be refreshed via the Post Inspector, and each refresh requires a URL change or an explicit re-scrape. X refreshes through the Card Validator. Telegram caches per URL and requires @WebpageBot to clear. Always refresh after editing an OG image if the URL has been shared recently.

Do AI search engines read Open Graph tags?

Yes, and increasingly so. Crawlers for Perplexity, ChatGPT search, Google AI Overviews, and Bing Copilot parse head metadata as part of their document understanding pipeline. When schema markup is missing or invalid, OG tags (og:title, og:description, og:image, og:type, og:site_name, article:author, article:published_time) act as the fallback signal for authorship, freshness, and topical classification. Treat them as machine-readable metadata, not just social decoration.

Useful info? Spread the Aloha:

Lucky Oleg

Lucky Oleg is the founder of Web Aloha, a web design & SEO agency helping businesses ride the digital wave. With years of experience in WordPress, technical SEO, and web performance, he writes about what actually works in the real world.