You pasted your link into Slack and got... nothing. No image, no title, or last month's headline. Before you start rewriting tags, know this: most broken social previews are not a tag problem — they are a caching problem, an image problem, or a crawler-access problem. Work through the five minutes below in order and you will find the actual cause instead of guessing.
The 5-minute answer:
- Minute 1 — confirm the tags exist in your served HTML (not just in your browser's inspector)
- Minute 2 — confirm the og:image is an absolute URL pointing at a real, correctly sized image
- Minute 3 — confirm the platform's crawler can actually reach your page
- Minute 4 — fix whatever the first three steps exposed
- Minute 5 — force each platform to re-scrape the URL
Match your symptom to the cause
| What you see | Most likely cause | Where to look |
|---|---|---|
| No preview card at all | Tags missing from served HTML, or the crawler is blocked | Minute 1 and Minute 3 below |
| Old title or image after you updated it | Platform cache — it is serving its first snapshot, not your new tags | Minute 5 below |
| Image missing or tiny thumbnail | Relative image URL, wrong size, or broken file | Minute 2 below |
| Fine on Facebook, broken on LinkedIn | Each platform caches separately | Clear both in Minute 5 |
| Fine on Facebook, wrong card on X | Missing twitter:card — X falls back to Open Graph with its own layout | Set twitter:card to summary_large_image |
| Fine everywhere except WhatsApp | WhatsApp caches previews aggressively and skips undersized images | Minute 2 and Minute 5 below |
Minute 1: Are the tags in the served HTML?
Social crawlers read the raw HTML your server sends — they do not run your JavaScript the way a browser does. Tags injected by client-side JavaScript are invisible to most link-preview scrapers. So do not trust your browser's element inspector, which shows the post-JavaScript DOM. Instead, open view-source: on the URL (paste view-source:https://yoursite.com/page into Chrome's address bar) or fetch it with curl, and confirm the og:title, og:description and og:image tags are present in that raw markup.
If they are missing from the served HTML, that is your bug — server-render the tags, or use prerendering for the crawler user agents. If you are not sure what the finished tags should look like, our complete guide to Open Graph and meta tags walks through every field; the point of this checklist is diagnosing, not re-teaching the tags.
Minute 2: Is the image valid?
The og:image causes more silent failures than every other tag combined. It must be:
- An absolute URL —
https://yoursite.com/images/share.png, not/images/share.png. Plenty of crawlers will not resolve relative paths against your domain, and the preview silently shows nothing. - A real image file — the URL must return an actual image content type (JPG or PNG are the safe choices across every platform) and a 200 status, not a redirect chain to a login page.
- The right size — 1200×630px is the recommended size for Facebook and LinkedIn. Images below about 200×200px may not display at all, and Facebook ignores images over 8MB.
- Declared dimensions help — adding
og:image:widthandog:image:heightlets crawlers lay out the card without fetching the file first, which speeds up and stabilizes rendering.
Paste the og:image URL into a fresh private browser window. If it does not load there, no platform's crawler will load it either.
Minute 3: Can the crawler reach your page?
Tags can be perfect and the preview still fails if the platform's scraper never gets your HTML. The usual suspects:
- robots.txt blocking the crawler — Facebook's scraper identifies as
facebookexternalhit; a broad disallow rule can lock it out. - A firewall or bot protection — Cloudflare's Bot Fight Mode and similar WAF rules are known to challenge or block social crawlers. If previews broke right after you enabled bot protection, check its logs.
- IP or rate limiting — scrapers fetch from fixed ranges and can trip aggressive rate limits on small servers.
The fastest way to see what a crawler actually encounters is Facebook's Sharing Debugger: paste the URL and it shows you exactly what Facebook's crawler fetched, including errors like unreachable images or blocked responses. Treat its output as ground truth — it is the same fetch that builds the preview.
Minute 4: Fix what the first three minutes exposed
By now you know which of the three it is: missing tags in served HTML, a broken image, or a blocked crawler. Fix that one thing — not all three. If the fix is the tags themselves, the quickest reliable way is to regenerate the full set: a meta and OG tag generator with live search and social previews shows you the card as each platform will render it, so you catch the mistake before you deploy instead of after.
Minute 5: Force each platform to re-scrape
This is the step everyone skips, and it is the fix for the single most common complaint — "I fixed the tags and the preview is still wrong." Facebook, LinkedIn and X cache a URL's preview the first time it is shared, and fixing your tags does not clear their cache. You have to ask each platform to fetch the page again:
- Facebook / Messenger — paste the URL into the Sharing Debugger and click "Scrape Again."
- LinkedIn — run the URL through LinkedIn's Post Inspector, which forces a re-fetch.
- X — there is no public re-scrape tool; the cache clears when X's crawler independently revisits the URL, which usually takes days. Get the tags right and be patient.
- WhatsApp — previews cache hard on the device. After fixing tags and image, test with a URL variant (a harmless query parameter like
?v=2) to force a fresh fetch.
If the preview is correct in the debugger but wrong in your chat app, it is your app's local cache — the platform already has the right version.
FAQ
Why is my og:image not showing even though the tag is correct?
Check the image URL in a private window: it must be absolute, return a 200 with a real image content type, be at least 200×200px (1200×630 recommended), and sit under 8MB. Then force a re-scrape — a cached broken snapshot looks identical to a still-broken image.
I updated my tags but Facebook still shows the old preview. Why?
Facebook cached the URL the first time it was shared and does not re-check on your schedule. Paste the URL into the Sharing Debugger and click "Scrape Again" — that is the entire fix.
Do I need Twitter Card tags if I have Open Graph tags?
X falls back to Open Graph for anything missing, so a preview will render either way. But without twitter:card set to summary_large_image you lose control over the large-image layout, which is why the card can look different on X than on Facebook.
Why does the preview work in the debugger but not in my app?
The platform has the correct version; your app is showing its own locally cached copy. Clear the app's cache or test on another device.
Can Cloudflare break my Open Graph previews?
Yes — bot-protection features can challenge or block the social crawlers (like facebookexternalhit), so the platforms never receive your tags. If previews broke after enabling bot protection, check its event log for blocked crawler requests.
Why is there no preview for my JavaScript-heavy page?
Link-preview crawlers read your server-sent HTML and mostly do not execute JavaScript. Tags injected client-side never reach them — the tags must be present in the raw HTML response, which you can verify with view-source or curl.
Comments
No comments yet. Be the first to share your thoughts below.