Your link preview is the ad you never designed

The link preview that unfurls when someone shares your URL is your most-shared marketing, and usually broken. What Open Graph needs, fixed in ten minutes.
The link preview that unfurls when someone shares your URL is your most-shared marketing, and usually broken. What Open Graph needs, fixed in ten minutes.
A 12-point website conversion audit founders can run in 30 minutes. Score yes/no, fix the no's first, and stop redesigning before diagnosing.

Gabriel Espinheira

Paste your website into a busy WhatsApp group and watch what loads underneath the link. Maybe a clean image with your name on it. More likely a grey box, last year's stock photo, or nothing at all — just the bare URL, sitting there like a typo someone forgot to delete.

That little card is the most-shared piece of marketing your business owns, and almost nobody designs it on purpose.

It's called a link preview, and it's set by a handful of Open Graph tags buried in your site's HTML — the title, the description, and the image a platform pulls when your URL gets shared. Get them wrong and your warmest introductions arrive looking broken. Get them right and every share turns into a small, clean advert you never paid for.

Direct answer: Your link preview — the image and text that unfurl when someone shares your URL in WhatsApp, LinkedIn, Slack or a text — is controlled by Open Graph tags in your site's HTML. Most owner-operated sites ship those tags broken or generic, so their most-shared first impression renders as a grey box. One 1200×630 image, a few correct server-rendered tags, and a cache refresh fixes it in an afternoon.

Your link preview is shown more often than your homepage

Here is the number that should change how you think about this. Roughly 84% of all sharing happens through what marketers call dark social: private channels like copy-pasted links in WhatsApp and Messenger, emails and texts, not the public share buttons you can count. It's a widely-cited figure and an old one, so treat it as a direction rather than a decimal. The direction isn't in dispute: most of the time your business gets passed around, it happens in a private message, and the only thing the recipient sees before deciding whether to click is the preview.

Follow that through. You probably obsess over your homepage hero — the headline, the photo, the thing you redesign every eighteen months. But the homepage only gets seen by people who already clicked. The preview gets seen by everyone the link is sent to, click or no click. It's a 1200-by-630 pixel image doing the job your whole homepage thinks it has.

There's a measurement sting on top. Because those private shares carry no referrer, your analytics file the traffic under "Direct" and you never learn the share happened at all. So the preview is both your highest-frequency advert and your least-visible one — running constantly, in rooms you can't see into, and you've no idea whether it's landing.

It breaks because of the build, not the picture

Pick apart a broken preview and you land in the same three places every time, and not one of them is the image you chose. The reason your link looks amateur is almost never that nobody picked a nice photo. It's that the photo never reaches the platform trying to show it.

First, the image path is relative. Your tag points at /images/preview.png instead of the full https://yourdomain.com/images/preview.png, and the moment the link is copied somewhere else, the unfurler can't resolve it. Second, the tags are built by JavaScript. Most social crawlers — Facebook's, LinkedIn's, WhatsApp's — don't run JavaScript. They read the raw HTML the server sends and nothing more, so if your Open Graph tags only appear after the page's scripts execute, the crawler sees an empty head and shows a bare link. That's the quiet tax of a lot of templated and JavaScript-heavy builders. Third, and most common: the whole site ships one default image. Every page, from home to pricing to the article you spent a day on, unfurls with the same generic logo card, because nobody set a per-page image and the builder filled the gap with a placeholder.

None of these is a taste problem. You can't fix them in Canva. They're decisions about how the markup is generated and served — which is exactly the layer a freelancer building you a pretty front end tends to skip.

What a correct link preview actually needs

You need fewer things than the size guides suggest, but you need them exactly right. Start with one image at 1200 by 630 pixels — the 1.91:1 ratio every major platform reads cleanly, from Facebook and LinkedIn to WhatsApp, Slack and iMessage. Go below 600×315 and Facebook won't show it; below 200×200 it's rejected outright. Keep your text and logo near the centre, roughly an 80-pixel margin in from each edge, because some platforms crop the rest.

Then the tags — and they have to sit in the HTML the server sends, not the version JavaScript assembles afterwards:

  • og:title — the card's headline (write it for the share; it needn't match your page title)

  • og:description — one line that earns the click

  • og:image — the absolute URL of that 1200×630 image

  • og:url — the canonical URL of the page

  • twitter:card set to summary_large_image, so X shows the big image instead of a thumbnail

One trap isn't obvious: file weight. Facebook accepts an image up to 8MB and LinkedIn up to 5MB, but WhatsApp silently drops any image over roughly 300KB and falls back to a bare link. In Spain, Germany, Italy, Portugal and Ireland, WhatsApp reaches more than nine in ten internet users (LINK Mobility, 2025) — so for a European audience the 300KB ceiling, not the 8MB one, is the limit that bites. Export the 1200×630 as a JPEG around quality 80, keep it under 250KB, and skip SVG and WebP; most platforms won't render either.

The link preview you fixed is still broken

Here's the part that makes people give up. You correct the tags, re-share the link, and the old broken card shows up anyway. You didn't get it wrong twice — every platform caches the preview independently, usually for about seven days, and WhatsApp caches the failure right alongside the success. A link you shared yesterday keeps unfurling broken for a week after you've fixed it.

The move is to force a refresh instead of waiting it out. Two free tools do it: the LinkedIn Post Inspector (linkedin.com/post-inspector) and the Facebook Sharing Debugger. Paste your URL, hit inspect, and the platform re-fetches your tags and updates its cache on the spot. Run them after every change — and run them once right now, before you change anything, just to see what your buyers have actually been looking at. Most founders find that more instructive than they'd like.

The senior move is treating your head section like a product surface

All of this lives in one place: the <head> of your HTML, the part of the page no visitor ever opens. That's exactly why it gets neglected, and exactly why getting it right signals something. A site whose head is correct — server-rendered Open Graph tags, a per-page share image, structured data a machine can read — was built by someone who treats the invisible layer as part of the product, not a thing to bolt on if there's time.

We do this on purpose. Our own pricing page ships its structured data server-side, so the right numbers stay machine-readable even when a front-end component is slow to render — the prices read correctly in search and in AI answers because the markup doesn't wait for a script to finish first. That's not a flourish. It's the same habit as a clean link preview: the parts of your site a person never looks at are still doing work, and a senior build ships them deliberately.

Keep this reframe: the head of your page is the cheapest billboard you own. Most owner-operated sites are running a blank one.

Audit your own preview in ten minutes

Before you touch the homepage again, do this:

  1. Paste your three money pages into a private chat — home, pricing, your best service page — and screenshot what unfurls. That's the version your buyers actually see.

  1. Run each URL through the LinkedIn Post Inspector. It shows the exact title, description and image each platform will pull, and flags what's missing.

  1. Check the image is absolute, server-rendered and under 250KB. A relative path, a JavaScript-injected tag, or a 2MB PNG is your bug.

  1. Set a distinct 1200×630 image for those three pages. One generic card for the whole site is the tell of a build nobody finished.

  1. Re-inspect to bust the cache, so the fix lands this week instead of next.

None of it is glamorous. It's a few tags, one image, and a cache refresh — the invisible infrastructure that decides whether a warm referral arrives looking sharp or looking unfinished. Plan. Build. Iterate. That's the loop, and the head of your page is part of it.

If you'd rather someone owned the layer your visitors never see — alongside the conversion-first website it sits inside and the workspace where the work stays visible — book a 30-min call and bring your worst-looking shared link. You'll leave with a fix-it list. Every price is on the Plans page, no call required.

Ready to start?

Book a 30-minute call. We'll dig into what's working, what isn't, and what the first move should be. No fluff, no pressure. If it makes sense to work together, we'll make it happen.

Ready to start?

Book a 30-minute call. We'll dig into what's working, what isn't, and what the first move should be. No fluff, no pressure. If it makes sense to work together, we'll make it happen.

Read more