Reference

How each platform reads your tags

Open Graph is a shared standard, so one tag block works nearly everywhere. But each network interprets it a little differently — which tags it prefers, how it crops the image, and how stubbornly it caches. Here's the behaviour of the platforms that matter, so nothing surprises you after you hit share.

The short version: write good Open Graph tags and you've covered all of them. Only X adds its own twitter: layer, and even that falls back to Open Graph. The details below are for when a specific platform misbehaves.

Facebook

The reference implementation of Open Graph. Reads og:title, og:description, og:image, og:url, og:type and og:site_name. Renders the large 1.91:1 card when the image is at least 600×315; smaller images become a compact left-thumbnail card. Caches hard — use the Sharing Debugger's "Scrape Again" after any change.

WhatsApp

Shares Facebook's crawler and cache, so if it works on Facebook it works on WhatsApp. Shows a smaller, squarer thumbnail than the feed card, so keep the essential part of the image centred. Very heavy images sometimes don't load — another reason to stay well under 1 MB.

LinkedIn

Reads Open Graph and prefers a 1200×627 image. Historically the most aggressive cacher of all — once LinkedIn has seen a URL, it can hold the old preview for weeks. The Post Inspector is the only reliable way to force a refresh. LinkedIn also reads og:type = article and can surface an author/publisher.

LinkedIn's cache is unforgiving. Run every URL through the Post Inspector before you post it to a company page. A wrong first impression can persist far longer here than anywhere else.

X (Twitter)

The one platform with its own layer. Reads twitter:card, twitter:title, twitter:description and twitter:image — but falls back to the og: equivalents for anything not specified. In practice you only need to add twitter:card = summary_large_image and let it inherit the rest from Open Graph. The old Card Validator is retired; append ?v=2 to bust the cache and post to test. Remember: Twitter tags use name=, not property=.

Slack

Unfurls links using Open Graph, showing title, description and image at a modest size. It also reads <meta name="description"> and even <title> as fallbacks, so a page with basic SEO tags but no OG still gets a usable unfurl. Because it renders small, image text must survive shrinking. Cache expires on its own; a query-string change forces a new unfurl.

Discord

Uses Open Graph much like Slack, plus theme-color to tint the embed's left border — a nice touch for branded links. Supports large images with twitter:card = summary_large_image. Caches for a few minutes to hours; re-posting after a short wait, or a query-string tweak, refreshes it.

iMessage & Signal

Apple's Messages builds a rich link from Open Graph, favouring a large image when the ratio is right and falling back to a small icon otherwise. It's cache-persistent per link and offers no debugger, so get it right before sharing. Signal reads OG similarly. For both, an absolute image URL and a clean 1.91:1 graphic are what matter.

At a glance

PlatformReadsCacheRefresh with
FacebookOpen GraphLongSharing Debugger → Scrape Again
WhatsAppOG (via Facebook)LongFacebook debugger
LinkedInOpen GraphVery longPost Inspector
X (Twitter)Twitter → OG fallbackMedium?v=2, then post
SlackOG, then description/titleShortQuery-string change
DiscordOG + theme-colorShortRe-post / query change
iMessageOpen GraphPer-linkNo debugger — get it right first

The takeaway

Don't build seven different tag sets. Write one complete Open Graph block, add twitter:card for X, keep the image at 1200×630 with the message centred, and every platform above renders well. Then confirm it with a side-by-side preview before you share — and when something still looks off, the troubleshooting checklist covers the rest.

Next: the perfect OG image · fix a broken preview · back to the tool