Facebook Link Preview Wrong — How to Fix It
If Facebook is showing the wrong title, description, or image when you share a link, the cause is almost always one of two things: incorrect Open Graph tags on your page, or Facebook's URL unfurl cache serving outdated data. Both are fixable — usually in under five minutes — and this guide walks you through exactly how.
You'll learn how Facebook's URL unfurl actually works, a complete Open Graph tags checklist, step-by-step troubleshooting, the advanced URL unfurl edge cases that trip up even seasoned developers (CDN caching, dynamic content, mobile vs desktop), and how to test your Facebook link previews before every share.
→ Test your Facebook link preview on TryUnfurl
Understanding URL Unfurling on Facebook
Facebook invented the Open Graph protocol, and it's still the single most important source of truth for the Facebook URL unfurl process. Every time someone pastes your link into a status update, a Messenger chat, or a business page post, Facebook's scraper (user-agent facebookexternalhit) fetches the page, reads the <head>, and builds the preview card from four primary tags:
og:title— headline (up to ~100 characters shown)og:description— body text (up to ~300 characters shown)og:image— preview image (minimum 200×200 px, ideal 1200×630 px)og:url— canonical URL for deduplication across shares
Facebook then caches the result — aggressively. After you fix a tag, you have to clear Facebook's cache using the Sharing Debugger before the new URL unfurl shows up on any share.
A few Facebook-specific quirks worth knowing:
- Facebook does not read Twitter Card tags. If your only metadata is
twitter:*, Facebook sees nothing. - Facebook's scraper does not execute JavaScript. Every Open Graph tag must be in the initial HTML response.
- Once a post is published, Facebook freezes the preview into the post. You cannot retroactively update the URL unfurl on an existing share — only new shares pick up the new tags.
Complete Open Graph Tags Checklist for Facebook
Before the troubleshooting loop, run this Facebook URL unfurl checklist:
-
og:titlepresent, 55–90 characters, benefit-led -
og:descriptionpresent, 100–200 characters -
og:imagepresent, absolute HTTPS URL, publicly reachable -
og:imageis at least 200×200 px (ideally 1200×630 px at 1.91:1) -
og:image:widthandog:image:heightdeclared -
og:urlmatches the canonical URL -
og:typeset (website,article,product, etc.) -
og:site_nameset for consistent branding - No duplicate OG tags on the page
- All tags present in the server-rendered HTML (not JS-injected)
- Image returns HTTP 200 to an unauthenticated GET request
- Page itself returns HTTP 200 to
facebookexternalhit
If every box is ticked and Facebook still looks wrong, the issue is almost certainly stale cache — jump to the Sharing Debugger step below.
Common Causes of Facebook Preview Problems
Wrong og: tags
The most common cause. Check that og:title, og:description, og:image, and og:url are all set correctly and accurately describe the page's actual content.
Stale cache
Facebook caches link previews and can serve old data for days or weeks. If you changed your page content or og: tags, you must explicitly clear the cache.
og:image is too small or missing
Facebook requires og:image to be at least 200×200 px. For a full-width preview card, use 1200×630 px. Images under 200×200 px are silently ignored and no image is shown.
og:image URL is not publicly accessible
The image URL must load with a plain GET request and return HTTP 200. No authentication, no redirects requiring cookies, no IP allow-lists blocking Facebook's crawler.
Page content is JavaScript-rendered
Facebook's scraper does not run JavaScript. If your og: tags are set by a client-side JS framework (React, Vue, etc.), Facebook will never see them. The tags must be in the raw HTML response.
Multiple og:title or og:image tags
If your page has duplicate og: tags, Facebook may pick the wrong one. Validate with the Sharing Debugger and ensure each property appears only once.
Step-by-Step Facebook Preview Troubleshooting
- Update your Open Graph tags in the HTML
<head>:
<meta property="og:title" content="Your Page Title" />
<meta property="og:description" content="A concise description under 300 characters." />
<meta property="og:image" content="https://example.com/preview.jpg" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:url" content="https://example.com/your-page" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="Your Site Name" />
Confirm tags are in the raw HTML — run
curl -s https://example.com/your-page | grep og:to verify the tags appear without JavaScript execution.Open Facebook's Sharing Debugger:
- Go to https://developers.facebook.com/tools/debug/
- Paste your URL and click Debug
- Review the "OG Tags" section — confirm all tags are correct
- Click Scrape Again to force Facebook to re-crawl your page
- Click Scrape Again a second time to pick up the freshly crawled data
Verify the image — click the image URL shown in the debugger to confirm it loads directly. If it doesn't, fix the image URL.
Check for warnings — the Sharing Debugger shows warnings for common issues like missing tags, small images, or HTTPS problems. Address each warning.
Test a fresh share — post a new Facebook update with the URL. The preview should now reflect your updated tags.
Advanced URL Unfurl Issues on Facebook
Once the basics check out, these are the tricky edge cases that tend to stump teams:
Dynamic content
If your og:title, og:description, or og:image are generated from user or CMS data, make sure the values actually render correctly for unauthenticated visitors. A personalized page that builds OG tags from the logged-in user's profile will serve empty tags to Facebook's crawler, which sees the page logged out.
CDN caching
Facebook may be serving the correct new tags — but your CDN might still be serving an old HTML response. If TryUnfurl shows the right tags and Facebook's Sharing Debugger shows stale ones, clear your CDN cache (Cloudflare, Fastly, CloudFront, Vercel, Netlify) before re-running Scrape Again.
Mobile vs desktop preview differences
Facebook may render different crop or text sizes on mobile feed vs desktop. If your og:image has copy or logos too close to the edges, the mobile crop can cut them off. Test the same URL on Facebook's desktop web and the Facebook iOS/Android apps — the cards may differ.
Blocked crawler
Some WAFs and bot-protection layers block facebookexternalhit outright. Check your server logs for 403s from that user-agent, and add an allowlist rule if needed.
Image hotlink protection
If your images are behind hotlink protection or a Referer allowlist, Facebook's scraper will be blocked from downloading them. Either remove the protection for your OG image URLs or return the image for a Facebook user-agent.
Redirect chains
Long redirect chains (HTTP → HTTPS → www → non-www → final URL) can cause Facebook to give up before resolving your tags. Keep redirects to a single hop where possible.
How to Clear Facebook's Link Preview Cache
- Go to Facebook Sharing Debugger
- Enter your URL and click Debug
- Click Scrape Again (you may need to do this twice)
- Check the "Time Scraped" field — it should now show the current time
For links already shared in posts, Facebook does not re-render the preview retroactively. Only new shares will show the updated preview.
Testing Your Facebook Link Previews
Before any high-stakes share — a campaign, a product launch, a company update — run the URL through a multi-platform link preview checker so you see exactly what the Facebook URL unfurl will look like on every network at once.
TryUnfurl fetches your URL live (no cache) and renders the preview card the way Facebook, LinkedIn, Twitter/X, Slack, Discord, and iMessage will render it. It also lists every Open Graph tag your page is actually serving so you can spot issues before Facebook sees them.
For launches with many URLs — a content migration, a campaign landing set, a monthly audit — use the bulk URL unfurl checker to test up to 100 URLs in one pass.
Frequently Asked Questions
Why does my Facebook preview still show the old image after I clicked Scrape Again?
Click Scrape Again twice. The first scrape updates the cache; the second fetch shows the newly cached data. If the image is still wrong after two scrapes, the og:image tag on your page may still point to the old image.
Can I change the Facebook link preview for a post I've already published?
No. Facebook bakes the preview into the post at share time. Once published, the preview cannot be changed. Delete the post and re-share with the corrected URL to show the updated preview.
What is the correct Facebook og:image size?
Minimum 200×200 px, recommended 1200×630 px. See the og:image size guide.
Why does my image show in the Sharing Debugger but not in a post?
This is a timing/cache inconsistency. After scraping, wait 5–10 minutes before creating a new share. The debug cache and the end-user cache are populated by separate systems.
Does Facebook read Twitter Card tags?
No. Facebook only reads Open Graph (og:) tags.
My page requires login — why can't Facebook scrape it?
Facebook's scraper cannot log in to your site. All pages whose Open Graph tags you want Facebook to read must be publicly accessible.
How do I test Facebook URL unfurl without actually posting?
Use TryUnfurl for a live multi-platform preview, then Facebook's Sharing Debugger to force a re-scrape and confirm the rendered card matches.
Why does my Facebook link preview show on mobile but not desktop?
Usually a user-agent-based server response difference or a CDN delivering different HTML. Test both with curl -A "facebookexternalhit/1.1" and confirm both responses contain identical Open Graph tags.