2 Oct 2026
Link Preview Privacy: What Your Private URLs Can Expose
Link preview privacy involves two separate questions: what a messaging service can read when it fetches a destination, and who receives the URL itself. A neutral preview can avoid exposing a message title or excerpt while still giving the fetching service a link that grants access. For private-by-link content, the address deserves as much care as the words behind it.This matters when a page is meant for a small audience: a personal note, a client draft, a private document, or a message that opens later. The sender may think the next person to visit will be the recipient. A preview fetch can happen first. A useful decision starts with the actual sharing channel and the destination's response, rather than the reassuring appearance of a closed envelope or a private chat.Official sources were checked on 2 October 2026. The technical example below uses synthetic data in local, in-memory request/response fixtures. It is not a test of Secret Letter or any live messaging platform.Do link previews open a URL before the recipient clicks?
They can. In its documentation for classic link unfurling, Slack describes fetching a URL and looking for Open Graph or card metadata to build a preview. That is a real request to the destination, even though the person reading the conversation has not deliberately opened the page.Avoid turning that example into a claim about every chat app. Preview generation may happen on a sender's device, through a provider, through a connected integration, or under platform-specific settings. Those paths have different privacy consequences. Check the channel you actually use; its encryption label alone does not explain the entire preview workflow.Automated visits also have other causes. Microsoft's Safe Links documentation describes URL scanning and, in configured email flows, rewriting and time-of-click checks. A security scanner and a preview generator serve different purposes. Both explain why a URL may be processed by infrastructure beyond the intended reader. An early request in a log is therefore not reliable proof that a human has read the message.What can a private link preview expose?
A preview card can reveal a name, a document subject, a thumbnail, or an excerpt. The destination may publish those fields in its HTML even when the visible page is locked. The Open Graph protocol defines fields including a title, description, image, and canonical object URL. Each field is another place where a developer can accidentally reuse private content.A birthday surprise with a generic title might be harmless. A sealed note with an excerpt naming a relationship problem is a different situation: the card can disclose the subject without revealing the whole note. Decide what the preview is allowed to say independently of what the final page will eventually display.Then consider the second channel of exposure. A fetcher must receive a usable address to request the page. If possession of that address is the access credential, the request transfers something valuable even when every preview field is generic. This is why hiding an excerpt and protecting a capability-bearing URL are different tasks.What does a small metadata experiment show?
Our local fixture creates two HTML responses for the same fake private address. Both visible bodies say “Sealed.” One response puts the synthetic marker DEMO_PRIVATE_TEXT_9c2e in its Open Graph description. The other uses “A private message is waiting.” A simple metadata extractor can read the marker in the first response without running JavaScript or opening any envelope animation.const secret = "DEMO_PRIVATE_TEXT_9c2e";
const personalized =
'<meta property="og:description" content="' + secret + '">';
const generic =
'<meta property="og:description" content="A private message is waiting.">';
personalized.includes(secret);
generic.includes(secret);
Which preview model fits your content?
| Model | Useful for | Remaining limitation |
|---|---|---|
| Personalized public card | Published articles and public releases | Title, excerpt, and image are intentionally disclosed |
| Generic private-page card | Low-risk messages where context should stay hidden | The fetcher still receives the destination URL |
| Authenticated preview | Account-based team content with a supported integration | The integration and card audience need their own permission review |
| Plain link with previews disabled | Sharing when a rich card adds little value | The channel still handles the URL; scanners may work separately |