Why does my link preview look wrong on WhatsApp?
Missing Open Graph tags, an image that is too big or the wrong shape, or a cache holding the version from before you fixed it.
Almost always Open Graph tags: missing, incomplete, or pointing at an image that is too large, the wrong aspect ratio, or served over a relative URL. Once fixed, the old preview usually persists because the platform cached it.
The tags that matter
<meta property="og:title" content="Page title, around 60 characters">
<meta property="og:description" content="One or two sentences, around 155 characters.">
<meta property="og:image" content="https://example.com/preview.png">
<meta property="og:url" content="https://example.com/page">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Example">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Page title">
<meta name="twitter:description" content="One or two sentences.">
<meta name="twitter:image" content="https://example.com/preview.png">WhatsApp, Slack, Discord, Telegram, LinkedIn, Facebook and iMessage all read Open Graph. X reads its own tags and falls back to Open Graph. Setting both covers everything.
The image rules
| Requirement | Value |
|---|---|
| Absolute URL | Required. A relative path fails on most platforms. |
| Dimensions | 1200×630 is the safe standard (1.91:1). |
| File size | Under 1 MB. WhatsApp in particular refuses large images and shows nothing. |
| Format | PNG or JPEG. Avoid WebP and SVG — support is inconsistent. |
| Accessible | Must not be blocked in robots.txt or behind authentication. |
The size limit catches people out. A beautiful 3 MB hero image produces no preview at all on WhatsApp, which looks identical to having no tags.
Caching is why your fix seems not to work
Every platform caches previews, often for a week or more, keyed on the URL. After fixing the tags:
- Facebook and WhatsApp: use the Facebook Sharing Debugger and click "Scrape Again". WhatsApp uses the same cache.
- LinkedIn: use the Post Inspector.
- X: the card validator no longer refreshes reliably; appending
?v=2forces a new fetch. - Slack and Discord: generally shorter caches; a query parameter forces a refresh.
?x=1. That is a new URL with an empty cache. If the preview is correct, your tags are fine and you only need to purge; if it is still wrong, the tags are still wrong.The other common causes
- Tags set by JavaScript. No preview generator executes JavaScript. The tags must be in the server-rendered HTML.
- Tags outside
<head>. They are ignored there. - A redirect chain. Some generators do not follow redirects reliably; point
og:urlat the final URL. - Blocking the crawlers.
facebookexternalhit,Twitterbot,SlackbotandWhatsAppall need access. A bot-protection rule blocking them removes your previews everywhere.
The last one is worth checking if previews stopped working without any change to your tags — it is usually a CDN rule added for unrelated reasons.
What our audit reports about this
Every item below is measured directly, not inferred. Run it against your own site and the result names the exact rule or header responsible.
- Every Open Graph and Twitter Card tag, present or missing.
- Whether the preview image URL is absolute, reachable, and its dimensions and file size.
- Whether preview crawlers are allowed by robots.txt.
- Rendered simulations of how the link will appear in Google, on large and compact social cards, and on X.
For agents and scripts, the same measurement is at
/api/v1/seo?url=yoursite.com —
see the API documentation.
Related questions
Why does it work on Slack but not WhatsApp?
Usually image size. WhatsApp has stricter limits and fails silently on large files, while Slack is more tolerant. Get the image under 1 MB at 1200×630.
How do I clear the cache?
Facebook's Sharing Debugger with "Scrape Again" covers Facebook and WhatsApp. LinkedIn has a Post Inspector. For others, adding a query parameter creates an uncached URL.
Do I need both Open Graph and Twitter tags?
Open Graph covers nearly everything. The Twitter tags let you control the card type on X specifically. Setting both takes four extra lines and removes the guesswork.
Read next
What is a favicon and why does mine not show?
Caching, wrong sizes and missing formats — the three reasons, and the small set of files that actually covers every platform.
ReadWhat is a good meta description length?
Around 150–160 characters, and length is the least interesting thing about it.
ReadDoes JavaScript hurt AI crawlers?
Yes, more than it hurts search engines. If your content only exists after JavaScript runs, most AI crawlers see an empty page.
ReadHow do I make my website look trustworthy?
The signals people and machines actually use — most of which cost nothing and are missing from most small sites.
Read