Sharing, Links & Measurement

Link Preview

Definition

Link preview covers everything that happens between pasting an address and seeing a thumbnail appear. Slack calls it unfurling, iMessage and WhatsApp build a bubble, Discord and Signal draw a box, Notion and Linear expand a row. Each client fetches the page itself and reads whatever metadata it finds, usually Open Graph first, then Twitter card tags, then the plain title and meta description, then any large image in the markup. What separates these clients from the social preview cards on public platforms is where the fetch happens and what it is allowed to do: some messengers fetch from the sender's own device to avoid leaking the recipient's address, some refuse to fetch at all inside end-to-end encrypted threads, and almost none of them run JavaScript. A page that builds its own head tags after load previews as a blank box everywhere.

Why It Matters

Most links are shared in private, not in public feeds, so this is the preview your work is actually judged by. A proposal link that expands into a titled card with the client's project name looks finished; the same link as a bare string of characters looks like something forwarded by accident. There is a privacy edge too. Because many clients fetch the URL the moment it is pasted, a hit in your logs can mean nobody has read the document — only that a chat app looked at it. Read an open event as a person opening it and you will chase a client who has not seen the file yet.

How It Works

The client sends a GET, often with a HEAD first, from its own crawler, follows redirects, and caps how much it will download — commonly the first 100 to 500 KB of HTML and an image below a few megabytes. It parses the returned markup only; because there is no JavaScript engine in most of these fetchers, a page built by client-side rendering hands them an empty shell with nothing to quote. HTTPS is effectively required, and a self-signed or expired certificate makes the preview vanish with no error shown to the sender. The result is stored in a cache keyed by the URL, which is why a corrected headline or a replaced image often refuses to show: a new address, or the platform's re-crawl tool, is the only reliable way through. Publishing a plain HTML file with its tags already in the source, as you would on 99helpers, sidesteps the whole class of problem.

Real-World Example

A designer sends a portfolio link, portfolio-2026.99helpers.site, into a client Slack channel. The page is a React app that writes its title after load, so Slack unfurls it as a grey rectangle with the raw domain underneath. Moving the title, description and image tags into the static index.html and reposting produces a proper card with the project name and a cover shot. The file changed by twelve lines; the link now reads as a piece of work rather than a stray URL.

Common Mistakes

  • Counting preview fetches as human opens — chat clients hit the URL on paste, before anyone has clicked anything
  • Relying on JavaScript to insert the title and image tags — the fetchers that build previews do not execute scripts
  • Blocking every bot user agent for privacy and then wondering why no link ever expands — preview fetchers are bots by definition

Related Terms

Put a file online in seconds

Drop in a document, an image, a page or a whole static website and share the link — free, with no build step and no server to set up.

Host a file free →