Facebook Link Preview Not Working
You share a link on Facebook and the preview is broken — wrong image, missing title, no description, or a completely blank card. Facebook has its own crawler (facebookexternalhit), its own caching layer, and specific requirements that differ from other platforms. Here's how to diagnose and fix every common issue.
Common Causes
1. OG tags missing or malformed — Facebook requires at minimum og:title, og:description, og:image, and og:url.
2. Platform cache serving old data — Facebook caches link previews for up to 30 days. Changes to your OG tags won't appear until the cache is cleared.
3. facebookexternalhit blocked by robots.txt or firewall — Facebook's crawler must be able to access both the page and the image URL.
4. Image issues — Wrong size, HTTP instead of HTTPS, redirects, 404, or missing dimension tags.
5. Server too slow — Facebook's crawler times out after approximately 4-5 seconds. Slow servers produce blank previews.
6. JavaScript-rendered OG tags — facebookexternalhit does not execute JavaScript. Tags must be in the static HTML.
7. HTTP and HTTPS treated as separate URLs — Facebook caches http://example.com and https://example.com independently.
How to Fix
Step 1: Run the Facebook Sharing Debugger. Go to the Facebook Sharing Debugger, log in with any Facebook account, paste your page URL, and click "Debug". The debugger shows you exactly what Facebook's crawler sees: every OG tag it found, the image it fetched, and any warnings or errors.
Step 2: Click "Scrape Again". After the initial debug results load, click "Scrape Again" at the top of the results. If the preview still looks wrong, click "Scrape Again" a second time — Facebook sometimes needs two scrapes to fully process an image, especially when og:image:width and og:image:height are missing. Check the "When shared, this is what will be shown" preview at the top.
Step 3: Fix any errors shown in the debugger. The Sharing Debugger lists warnings and errors explicitly. Here are the most common ones and their fixes:
"Missing Properties: og:image" — No og:image meta tag found. Fix: add <meta property="og:image" content="https://..." />.
"Provided og:image is not big enough" — Image is under 200x200px. Fix: use an image at least 1200x630px.
"og:image could not be downloaded" — Image URL returns 404, redirect, or timeout. Fix: ensure the image URL is accessible and direct.
"Missing fb:app_id" — No Facebook App ID configured. This is safe to ignore — fb:app_id is optional and has no effect on link previews.
"The following required properties are missing: og:url" — No og:url tag found. Fix: add <meta property="og:url" content="https://..." />.
"Redirect Path: URL was redirected" — Page URL redirects. Fix: use the final (canonical) URL in your og:url tag.
"Response Code: 403 / 404" — Page not accessible. Fix: check server config, robots.txt, and firewall rules.
Step 4: Verify your HTML source. Open your page URL in a browser and view the raw page source. Confirm these tags exist in the <head>:
<meta property="og:title" content="Your Page Title" />
<meta property="og:description" content="A clear description of the page content." />
<meta property="og:image" content="https://example.com/images/preview.jpg" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:url" content="https://example.com/page/" />
<meta property="og:type" content="website" />Step 5: Check that the crawler isn't blocked. Facebook's crawler identifies itself as facebookexternalhit/1.1. Make sure your robots.txt does not disallow facebookexternalhit, your server firewall or WAF (Cloudflare, Sucuri, etc.) doesn't block this user agent, any authentication, IP restrictions, or geo-blocking don't prevent access, and the image URL is also accessible — if your image is on a CDN, check that CDN's robots.txt and access rules too.
Step 6: Clear cache programmatically (optional). For sites with many URLs, you can clear Facebook's cache via the Graph API. This is equivalent to clicking "Scrape Again" in the debugger. Useful for automating cache clears after deploys.
POST https://graph.facebook.com/
id={URL_TO_SCRAPE}&scrape=true&access_token={APP_TOKEN}Platform-Specific Notes
Cache duration: Facebook caches previews for approximately 30 days. There is no way to reduce this duration. The only way to force an update is to scrape again via the Sharing Debugger or Graph API.
HTTP vs. HTTPS: Facebook treats http://example.com/page and https://example.com/page as two different URLs with separate caches. If your site redirects HTTP to HTTPS, make sure your og:url uses the HTTPS version. Otherwise, Facebook may cache the HTTP version differently.
Already-shared posts don't update: Once a link is shared in a Facebook post, that post's preview is permanently locked to whatever was cached at the time of sharing. Re-scraping the URL updates the cache for future shares, but existing posts keep the old preview. The only fix for an existing post is to delete it and share the link again.
fb:app_id warning: The Sharing Debugger frequently warns about a missing fb:app_id. This is not required for link previews to work. It's used for Facebook Analytics integration. You can safely ignore this warning unless you specifically need app-level insights.
Instant Articles and Facebook in-app browser: If your site uses Instant Articles or needs to handle Facebook's in-app browser, the OG tags still apply for the preview card. The in-app browser loads your actual page, not the OG metadata.
Prevention Checklist
Follow this checklist to prevent Facebook link preview issues:
All pages have og:title, og:description, og:image, and og:url tags. og:image uses HTTPS, absolute URL, no redirects. og:image:width and og:image:height are declared. Image is at least 1200x630px. og:url matches the canonical HTTPS URL. robots.txt allows facebookexternalhit. Server responds within 3 seconds. OG tags are in static HTML, not JavaScript-rendered. After deployment, new/changed URLs are scraped via Sharing Debugger or Graph API. og:url uses HTTPS (matches redirect target).
FAQ
Click "Scrape Again" a second time. Facebook sometimes needs two scrapes: the first fetches the page and discovers the image URL, the second actually downloads and caches the image. If it still fails after two scrapes, the issue is with the image itself — check that the URL loads directly, returns a 200 status, and doesn't redirect.
No. The fb:app_id meta tag is optional and only used for Facebook Analytics integration. Link previews work without it. The warning in the Sharing Debugger is misleading — it implies it's required, but it isn't.
No. Once a post is published on Facebook, its link preview is frozen. Re-scraping the URL via the Sharing Debugger updates the cache for future shares, but the existing post's preview cannot be changed. You must delete the post and share the link again to get the updated preview.