You text a link in iMessage and expect a rich preview with image and title. Instead you get a bare URL or a broken card with the wrong thumbnail. iMessage generates link previews by fetching Open Graph tags through Apple's crawler. When that fetch fails, the preview does not render.
Short answer
Serve og:title, og:description, and og:image in your server-rendered HTML with absolute HTTPS URLs. Allow Applebot in robots.txt. Use a 1200 × 630 JPG under 5 MB. Test the image URL in Safari on iOS. iMessage caches previews per device, so send the link in a new conversation after fixing tags.
How iMessage link previews work
When you send a URL in Messages on iPhone, iPad, or Mac, Apple's services fetch the page to build a preview card. The crawler (Applebot) reads Open Graph meta tags:
<meta property="og:title" content="Your Title"><meta property="og:description" content="Short description."><meta property="og:image" content="https://example.com/og.jpg"><meta property="og:url" content="https://example.com/page">The preview appears above or below the link bubble with title, domain, and thumbnail.
Applebot does not run JavaScript. Tags must exist in the raw HTML response.
Broken preview vs. no preview
| Symptom | Likely cause |
|---|---|
| Plain URL, no card | Crawler blocked, timeout, or no OG tags |
| Wrong image | Missing og:image, fallback to page image |
| Old image after update | Device-side cache or Apple's CDN cache |
| Preview on Mac but not iPhone | Different cache state per device |
| Title correct, no thumbnail | Image URL broken, too large, or slow |
Step 1: Verify Open Graph tags
- View page source on desktop Safari or Chrome.
- Confirm
og:title,og:description, andog:imageare present. - Open
og:imagein a new tab. Image must load without login.
Scan with OpenGraph Check to preview tags before texting the link.
Step 2: Allow Applebot in robots.txt
User-agent: Applebot
Allow: /
Also allow if you use Apple's search-related crawling:
User-agent: Applebot-Extended
Allow: /
Blocking Applebot prevents iMessage from building rich previews. Check that your Disallow rules do not catch all bots with a wildcard that includes Applebot.
Step 3: Meet image and performance requirements
| Property | Recommendation |
|---|---|
| Size | 1200 × 630 px (minimum 900 × 450 for decent quality) |
| Format | JPG or PNG |
| URL | Absolute HTTPS |
| File size | Under 5 MB (under 500 KB loads faster on mobile) |
| Response time | Under 2 seconds |
Large images on slow servers cause iMessage to skip the thumbnail and show text only.
Step 4: Test on a real device
Simulators and desktop browsers do not fully replicate iMessage unfurling.
- Fix tags on production URL.
- Send link in a new iMessage conversation (not an old thread).
- Wait 5-10 seconds for the preview to generate.
- If stale, try
https://yoursite.com/page?i=1.
iMessage caches previews locally. Old conversations may keep the previous card even after you fix the server.
Common causes of broken iMessage previews
Client-rendered meta tags only
React, Next.js client components, and other SPAs that inject tags after load leave Applebot with empty <head>. Use SSR, SSG, or generateMetadata.
Redirect chains and HTTP
Apple prefers HTTPS. Long redirect chains (http → www → trailing slash) increase failure rates. Use one canonical URL in og:url.
SSL certificate issues
Self-signed certs, expired certificates, or mixed-content image URLs break the fetch silently.
Login walls and paywalls
If Applebot receives a login page instead of content, no preview is generated. Public marketing pages need public OG tags.
og:image points to WebP or SVG
JPG and PNG are safest. WebP support varies. Avoid SVG for social preview images.
CDN bot protection
Cloudflare and similar services may challenge Applebot. Whitelist or reduce bot protection on public pages.
iMessage vs. other platforms
| Platform | Crawler | Shared cache with others? |
|---|---|---|
| iMessage | Applebot | No |
| facebookexternalhit | Yes (Meta) | |
| Slack | Slackbot | No |
| LinkedInBot | No |
Fixing Facebook or WhatsApp previews does not fix iMessage. Validate Applebot access separately.
For WhatsApp-specific issues (often confused with iMessage), see WhatsApp Shows Wrong Link Preview.
Rich preview vs. link formatting
iMessage only unfurls URLs it recognizes as web links. Ensure:
- URL includes
https:// - No extra characters attached to the URL in the message
- URL is on a public domain (not
localhost)
FAQ
Does iMessage use Twitter Card tags?
No. Applebot reads Open Graph tags. Set og:* properties.
Why does the preview differ between my iPhone and a friend's?
Each device caches previews independently. Both may need a new conversation with the updated URL.
Can I force iMessage to refresh a preview?
Delete the message, fix server tags, send in a new chat with a cache-busted URL (?v=2).
Does iMessage preview work with private or unlisted pages?
The page must be reachable by Applebot without authentication.
Do link previews work in SMS (green bubbles)?
Standard SMS does not support rich link previews. This applies to iMessage (blue bubbles) and RCS where supported.
Is there an Apple equivalent of Facebook's Sharing Debugger?
No public inspector tool. Test by sending the link in iMessage and checking page source plus OpenGraph Check.
Bottom line
Broken iMessage link previews come down to Open Graph tags in server HTML and Applebot access. Add a valid og:image on HTTPS, allow Applebot, keep images small and fast, and test in a fresh conversation on a real device. iMessage does not share Meta's cache, so Apple-specific checks are required even when Facebook previews already work.