For the complete documentation index, see llms.txt. Markdown variants are available by appending .md to any URL or sending an Accept: text/markdown header. An agent skill is available at /.well-known/agent-skills/site-skill.md.
/
234
Sponsor

iMessage Open Graph Preview

Paste a URL and see the link preview iMessage will build from it.

How iMessage renders a link

iMessage draws a shared link as a rich bubble: the og:image filling the top, with a footer bar carrying a bold og:title over the bare domain. The bubble is heavily rounded with no visible border, so it reads as a message attachment rather than an embedded post.

iMessage ignores og:description entirely — the card shows the image, the title, and the domain only. A card whose meaning lives in the description renders here as a picture plus a headline, so the title has to make sense on its own.

Why iMessage sometimes shows no preview

When a message shows a bare URL instead of a bubble, the fetch failed rather than a tag being absent. iMessage generates the preview on the sender's device without executing JavaScript, so client-rendered tags are invisible to it. A login wall, an internal host, or an og:image it cannot reach leaves only the link text.

The fetch comes from the sender's own IP with a spoofed user agent that impersonates Facebook's and X's crawlers — so user-agent allow-lists aimed at those bots affect iMessage too, while robots.txt rules targeting Applebot have no effect on previews at all.

What to set for an iMessage preview

Set og:title and og:image in the page head, server-rendered — og:description is still worth setting for other platforms, but iMessage will not show it. Use an HTTPS image at 1200×630 when possible, keep it under 5 MB, and serve it without an avoidable redirect.

The scanner requests both the page and its image the way iMessage's fetcher does, so it can show whether the tags are reachable before you share the link.

Frequently asked questions