iMessage Link Preview Not Working? How to Fix OG Tags on iOS
Links shared in iMessage showing no preview, wrong image, or just a plain URL? Learn why iMessage link previews fail and how to fix og:image, og:title, and og:description for iOS.
Why iMessage link previews break
When you paste or send a link in iMessage, iOS fetches Open Graph metadata from the page to render a rich preview card — complete with title, description, and image. If your og:title, og:description, or og:image tags are missing, malformed, or loaded via JavaScript, iMessage silently falls back to a plain URL with no card.
Apple's link preview crawler (used by iMessage and Safari) is conservative: it requires HTTPS, expects static HTML tags, and will not execute JavaScript to find metadata. This catches a lot of React, Next.js, and SPA sites that rely on client-side rendering for their <head>.
Quick fix checklist
- Add the required OG tags in static HTML: your page must include
og:title,og:description, andog:imageinside a server-rendered<head>block — not injected by JavaScript after load. - Use HTTPS: both your page URL and your image URL must use HTTPS. iMessage will not load previews over plain HTTP.
- Use an absolute image URL: write
https://yourdomain.com/og.jpg, not/og.jpg. Apple's crawler needs a fully-qualified URL to fetch the image. - Meet Apple's image specs: recommended 1200×630 px (1.91:1 ratio). Minimum 600×315 px. Use JPEG or PNG. Keep file size under 8 MB.
- Make the image publicly accessible: open the image URL in an incognito browser tab. If it requires login, returns 403, or redirects, Apple cannot load it.
- Also add Twitter Card tags: iMessage on iOS 13+ can use
twitter:card,twitter:title, andtwitter:imageas a fallback when OG tags are absent.
Common causes and specific fixes
1. JavaScript-rendered metadata
If you use React, Vue, or another SPA framework and inject meta tags on the client, Apple's crawler will never see them. Switch to server-side rendering (SSR) or static generation. In Next.js, use the built-in metadata export or generateMetadata(). In Nuxt, use useHead() within a server component.
2. Missing og:image
iMessage will show a card with title and description even without an image, but no image means a much smaller, less eye-catching preview. Always include og:image for maximum impact. Verify it with OG Fixer before deploying.
3. Cached old metadata
iOS caches link previews aggressively. After fixing your tags, the recipient may still see the old (broken) preview for a while. To test immediately:
- Delete the existing message thread and send the link again.
- Test from a different device or a device that has never seen the URL.
- Add a query string like
?v=2to bust the cache during development.
4. Image served from a CDN with restrictive headers
Some CDNs add Cache-Control: private or X-Robots-Tag: noindex headers that block Apple's crawler. Check your CDN configuration and ensure OG images are served with public cache headers.
5. Wrong image aspect ratio
Images that are too tall (portrait) or too wide (banner) may be cropped or rejected entirely. Stick to the 1.91:1 ratio (1200×630 px) for the best results across all Apple surfaces.
Minimum required tags for iMessage
<meta property="og:title" content="Your Page Title" /> <meta property="og:description" content="A short description of your page." /> <meta property="og:image" content="https://yourdomain.com/og-image.jpg" /> <meta property="og:url" content="https://yourdomain.com/your-page" /> <meta property="og:type" content="website" /> <!-- Twitter Card fallback (also used by iMessage) --> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:image" content="https://yourdomain.com/og-image.jpg" />
How to test your iMessage link preview
The fastest way to preview your link before sending it to real users is to use OG Fixer. Paste your URL and instantly see how it will look on iMessage, Twitter, Slack, Discord, and more — without sending a single message.
You can also use Apple's Simulator (Xcode > Open Developer Tool > Simulator) to send your link to Safari or Messages on a virtual iPhone. Or simply AirDrop the link to yourself and check the preview in Messages.
iMessage vs other platforms — key differences
| Platform | JS rendering | Cache TTL | Min image |
|---|---|---|---|
| iMessage | No | Hours–days | 600×315 px |
| No | ~3 days | 300×200 px | |
| Slack | No | ~30 min | 200×200 px |
| Discord | No | ~1 hour | 256×256 px |
| Twitter/X | No | ~7 days | 144×144 px |
Fix your iMessage preview in 30 seconds
Paste your URL into OG Fixer and see exactly how your link will appear in iMessage, WhatsApp, Slack, and Twitter — before you send it. No sign-up required.
Preview my link now →