
Where does a WhatsApp link preview come from?
From the sender's side. WhatsApp's developer page on link previews says that when you compose a message containing a link, "on behalf of the sender, WhatsApp will crawl this URL and attempt to generate a link preview." The request is a plain HTTP GET, and the preview appears above the composer box before you press send. Previews work for links sent in a chat and links shared to Status.
The WhatsApp Help Center backs this up from the privacy side. Its article on disabling link previews explains that turning the setting on means the links you send will not generate a preview, and presents this as a way to protect your IP address. In other words, the device composing the message is the one that contacts your server.
The crawler identifies itself. WhatsApp documents a User-Agent of the form WhatsApp/2.x.x.x A, I or N, for Android, iOS and web, with examples such as WhatsApp/2.22.20.72 A. The request also carries an Accept-Language header set to the recipient's chosen language, if any, so a multilingual site can answer in that language.
Which tags does WhatsApp read?
WhatsApp's page lists four pieces of mark-up for the page head: a title, a description, a canonical URL and an image. On a WordPress site these come from the same Open Graph set every other network reads, so if your SEO plugin already prints og:title, og:description, og:url and og:image, there is nothing extra to add. Our guide to setting up Open Graph in WordPress covers the one-source rule. The specific requirements WhatsApp sets are these.
| Mark-up | What WhatsApp asks for | How it is shown |
|---|---|---|
| Title | Not empty; the title of the content without branding | Bold, primary text color, at most 2 lines |
| Description | Not empty; 80 characters will suffice | Smaller, secondary color, 1 or 2 lines |
| URL | The canonical URL, undecorated: no session variables, user parameters or counters | Used as the link address |
| Image | Absolute URL, under 600KB, at least 300px wide, aspect ratio 4:1 or less | Thumbnail; large card when the image qualifies |
| Position | The head containing the mark-up must sit within the first 300KB of the HTML | No head found in that window, no preview |
WhatsApp says it makes a best attempt when these rules are not met, relaxing requirements, looking for other mark-up and falling back to a small preview, but warns that this "should not be relied on."
How do iMessage link previews work?
Apple's technical note TN3156, Create rich previews for Messages, first published in 2017 as TN2444 and republished in April 2024, describes the Messages app on iOS and macOS. Without Open Graph data, Messages shows a gray bubble with the page title, the domain and a small icon. With og:title and og:image it shows an image and a caption. Apple's note does not say whether the sender's or the recipient's device fetches the page, so we do not claim either.
- Title. Keep
og:titleshort and specific, and leave the site name out of it. Apple asks you to put the site name inog:site_nameinstead, because branding in the title duplicates other parts of the preview. - Image.
og:imagesupplies the picture. Apple advises against text in the image, since it may be shown at varying sizes and become unreadable; put words in the tags. - Icon. Messages also uses an icon: an
apple-touch-icon, a favicon, or an icon named in alink relelement. If you lack an image of sufficient size or quality, Apple suggests relying on theapple-touch-icon. - Video. An
og:videoortwitter:player:streampointing at a downloadable file such as MPEG-4 downloads and plays automatically. Streams such as HLS need a tap. Video that needs embedding HTML will not play inline. - Same tags for everyone. Serve identical metadata to mobile and desktop user agents.
What image size works in both apps?
Each app documents a different floor, and only Apple names a target. These are the numbers from the two official pages, nothing more.
| Requirement | Apple Messages | |
|---|---|---|
| Minimum image width | 300px or more | At least 900px |
| Small images | Falls back to a small preview | Under 150px wide may be ignored or shown as an icon |
| Shape | Aspect ratio 4:1 or less | Not specified |
| File size | Image under 600KB | Page itself limited to 1 MB; icons, images and video together limited to 10 MB |
| Icon | Not specified | Square, at least 108px per side |
A 1200 by 630 JPEG, the size explained in our Open Graph image size guide, clears Apple's 900 pixel width and WhatsApp's 300 pixel width and sits well inside the 4:1 ratio. The figure to watch is WhatsApp's 600KB cap: a full quality export of a photo at that size can exceed it, so compress it. Apple notes its numbers are guidelines that may change.
Test a WhatsApp or iMessage preview by messaging yourself
Neither app offers a debugger like Facebook's. The test is a real message. Before you start, paste your page's HTML into our paste-the-source preview checker to confirm the tags are there; it runs in your browser and fetches nothing, so it shows what you serve, not what a crawler cached.
Check the WhatsApp setting
On Android tap the three dots menu, then Settings, Privacy, Advanced, and make sure Disable link previews is off. It is off by default. If it is on, the links you send will never show a preview.
Compose, do not send
Open a chat with yourself or a test contact and paste the full URL. WhatsApp's own instructions say to wait: if no preview appears above the composer within 10 seconds, recheck the tag and image requirements.
Send and look at the size
Tap send. If the preview arrives small rather than large, WhatsApp points you back to the image rules: width, aspect ratio and the 600KB limit.
Test in Messages
In the Messages app on iPhone or Mac, start a new message addressed to your own number or Apple Account, paste the URL and send it. Look for the image and title rather than the plain gray bubble.
Why is a preview missing or stale?
Most failures come from one of the documented rules.
- Tags past the 300KB mark. Large inline scripts or styles placed before the meta tags push the head beyond WhatsApp's window. Move the Open Graph tags near the top of the head.
- An image over 600KB. The commonest cause of a small WhatsApp card. Compress the file, or point
og:imageat a smaller crop. - A relative image URL. WhatsApp asks for an absolute URL.
/wp-content/uploads/...without the scheme and host does not qualify. - Tags written by JavaScript. Apple states that Messages previews do not run JavaScript or follow
metarefresh redirects. Server-side redirects are followed. Tags injected by a script after load are invisible. - A login wall. Apple asks that pages behind sign in still carry meaningful metadata for the page itself, so the preview does not read "Sign In" for every link.
- The crawler is blocked. A firewall rule that challenges unknown clients can answer WhatsApp's GET with a challenge page. Allow user agents beginning
WhatsApp/. - Different tags per device. Apple asks for the same metadata for every user agent. A mobile theme that drops the image breaks previews only on phones.
- The sender disabled previews. With Disable link previews on, nothing is fetched. Ask the person who sent the plain link.
Stale previews are a different problem. Because WhatsApp builds the preview while the sender composes, a message sent yesterday keeps yesterday's card; editing your tags changes only messages composed after the edit. Neither WhatsApp nor Apple documents a cache you can clear or a refresh tool. If a brand new message still shows old text, the stale copy is usually on your side: purge your page cache and CDN for that URL, confirm the new tags in a private window, then compose again. The same purge first habit fixes old images on Facebook shares, and the tool-by-tool picture is on the link previews and Open Graph hub.
Sending links from the WhatsApp Business API
If your site sends WhatsApp messages through the Cloud API, previews are opt in. The text message reference lists a preview_url field: set it to true and the WhatsApp client will attempt to render a preview of a URL in the body. The body text can be up to 4096 characters. The preview still depends on the same page tags.
{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "+16505551234",
"type": "text",
"text": {
"preview_url": true,
"body": "New guide: https://example.com/town-clock/"
}
}That example mirrors the request in Meta's reference, with an invented link. Compare how other apps treat the same tags in Slack's unfurl rules, and see what platforms remove from shared images if you rely on embedded image metadata.
What goes wrong
- Branding in the title. Both WhatsApp and Apple ask for a title without the site name. "Town clock repair | Example Journal" wastes one of WhatsApp's two bold lines.
- A long description. WhatsApp shows one or two lines and says 80 characters will suffice. Anything past that is cut.
- Tracking parameters in og:url. WhatsApp wants the canonical URL with no session or user parameters. Keep UTM tags out of
og:url. - Text baked into the image. Apple warns it may become unreadable at small sizes.
- Expecting old messages to update. They will not. Only new messages pick up the change.
Check it worked
- View source, logged out: one
og:title,og:description,og:urlandog:image, near the top of the head. - The
og:imageURL is absolute, opens in a private window, is at least 900 pixels wide, and is under 600KB. - A WhatsApp message composed to yourself shows a preview above the composer within 10 seconds, and arrives as a large card after sending.
- A message to yourself in Apple Messages shows the image and title rather than the gray bubble.
- The title carries no site name, and
og:site_nameholds it instead.
Sources
- Meta for Developers, WhatsApp Business Platform: Link Previews (updated May 21, 2026)
- WhatsApp Help Center, How to disable link previews
- Meta for Developers, WhatsApp Cloud API: Text messages
- Apple Developer, TN3156: Create rich previews for Messages (first published 2017 as TN2444, republished April 30, 2024)
Questions
Why is my WhatsApp link preview not showing?
Usually the image is over 600KB or under 300 pixels wide, the tags sit beyond the first 300KB of HTML, or the sender turned on Disable link previews. Check those three, then compose a fresh message to yourself and wait 10 seconds.
Does WhatsApp generate the preview on the sender's phone?
Yes. WhatsApp's developer documentation says it crawls the URL on behalf of the sender while the message is composed, and its Help Center says turning off previews for links you send protects your IP address, while receiving previews does not affect it.
What image size should I use for WhatsApp and iMessage?
A 1200 by 630 image works in both. WhatsApp asks for at least 300 pixels wide, a 4:1 or narrower aspect ratio and under 600KB. Apple asks for at least 900 pixels wide and may ignore images under 150 pixels.
How do I refresh an old WhatsApp link preview?
You cannot change a preview in a message already sent. Neither WhatsApp nor Apple documents a cache refresh tool. Fix your tags, purge your own page cache and CDN, then compose a new message to see the updated card.
Why does iMessage show only a gray bubble with my link?
Messages found no usable og:image. Add an absolute og:image at least 900 pixels wide, make sure the tags are in the HTML rather than added by JavaScript, and serve the same tags to every user agent.
Hannah Voss, Editor. Checks every guide against a working WordPress install and the networks' current documentation. Last reviewed September 2026.
Related reading
- Open Graph image size: 1200 by 630 and the safe zoneThe right Open Graph image size is 1200 by 630 pixels at a 1.91:1 ratio. Minimums, file limits, formats, and a centre safe zone for square crops.6 min read
- Adding Open Graph tags in WordPressAdd Open Graph tags to WordPress with an SEO plugin or theme code: the four required tags, image tags, per-post overrides, and how to avoid duplicate tags.7 min read
- Link preview checker: test your Open Graph and card tagsPaste a page's HTML to check its Open Graph and X card tags, see mock previews, and find duplicate, missing or relative tags. Runs in your browser only.10 min read
- Slack link preview: how unfurling works and how to fix itHow Slack builds a link preview: the tags its robot reads, its user agent, the 30 minute cache, how to test, remove or block a preview, and why one fails.10 min read
- What platforms strip from shared images: EXIF, XMP and C2PAWhat platforms strip from shared images: how EXIF, XMP and IPTC fields and C2PA manifests die on upload or preview fetch, plus a probe method and a table.7 min read