How to Fix Facebook Link Preview Image Issues: A Step-by-Step Guide
If you've ever shared a link on Facebook only to see the wrong image appear—or no image at all—you're not alone. Fixing the Facebook link preview image is one of the most common frustrations for website owners, developers, and marketers. The good news is that this problem almost always has a clear cause and a straightforward fix. This guide walks you through every step, from diagnosing the root issue to verifying your solution works correctly.
Why Facebook Link Preview Images Break in the First Place
Before jumping into fixes, it helps to understand what Facebook actually does when someone shares a URL. Facebook's crawler (called the Facebook Sharing Debugger bot) visits your page and reads specific HTML meta tags—primarily Open Graph tags—to determine what image, title, and description to show in the preview.
When the preview image is missing or wrong, it usually comes down to one of these root causes:
- Missing or incorrect Open Graph
og:imagetag — Facebook can't find an image to display - Image URL is not absolute — A relative path like
/images/banner.jpgwon't work; Facebook needs a full URL - Image dimensions are too small or too large — Facebook has specific size requirements
- Facebook's cache is stale — The page was updated but Facebook still shows the old preview
- Image is blocked by a firewall or bot protection — Facebook's crawler can't access the image file
- The image returns a non-200 HTTP status — A redirect or 404 on the image URL breaks the preview
- Missing or incorrect MIME type — Facebook expects standard image types like JPEG, PNG, or GIF
Understanding which of these applies to your situation is the first step to a fast resolution.
Step 1: Check Your Open Graph Tags
The foundation of any Facebook link preview is the Open Graph protocol. These are <meta> tags placed in the <head> section of your HTML that tell social platforms exactly what to display.
The minimum set of tags you need for a working Facebook preview looks like this:
<meta property="og:title" content="Your Page Title Here" />
<meta property="og:description" content="A compelling description of your page content." />
<meta property="og:image" content="https://www.yoursite.com/images/preview-image.jpg" />
<meta property="og:url" content="https://www.yoursite.com/your-page/" />
<meta property="og:type" content="website" />
A few critical things to check here:
Make Sure the Image URL is Absolute
This is one of the most common mistakes. The og:image value must be a complete, fully qualified URL including the protocol (https://), domain, and file path. Facebook's crawler does not resolve relative URLs.
Wrong:
<meta property="og:image" content="/images/banner.jpg" />
Correct:
<meta property="og:image" content="https://www.example.com/images/banner.jpg" />
Use the Right Image Dimensions
Facebook recommends an image size of 1200 x 630 pixels for the best display across all devices and contexts. The minimum size is 200 x 200 pixels, but images smaller than 600 x 315 pixels will appear in a much smaller format in the feed. Images larger than 8MB may be rejected entirely.
For best results:
- Recommended size: 1200 x 630 px
- Minimum size: 200 x 200 px
- Aspect ratio: 1.91:1 for large previews
- File format: JPG or PNG (avoid WebP if possible—Facebook support for it can be inconsistent)
- File size: Keep it under 8MB; ideally under 1MB for fast loading
Add the og:image:width and og:image:height Tags
While not strictly required, adding explicit dimension tags helps Facebook render the image faster without having to fetch and measure it:
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
Step 2: Verify Your Tags with the Social Share Preview Tool
Once you've added or updated your Open Graph tags, the quickest way to verify everything looks correct is to use the Social Share Preview tool on OpDeck. This tool fetches your page's Open Graph data and shows you exactly what Facebook (and other platforms) will display when someone shares your URL—including the image, title, and description preview.
This is particularly useful because it lets you catch issues before they go live, without waiting for Facebook's cache to update. You can see at a glance whether:
- The
og:imagetag is present and resolving correctly - The image dimensions are appropriate
- The title and description are pulling through properly
- Any tags are malformed or missing entirely
Simply enter your URL and the tool will parse all the relevant meta tags and render a visual preview. If the image doesn't show up in the OpDeck preview, it won't show up on Facebook either—which means you have a tag or image accessibility problem to fix before moving on.
Step 3: Test Whether Facebook Can Actually Access Your Image
Even if your og:image tag is perfectly formed, Facebook's crawler still needs to be able to fetch the image file itself. Several things can block this:
Check for Bot-Blocking Rules
If your site uses Cloudflare, a Web Application Firewall (WAF), or any bot protection service, it may be blocking Facebook's crawler. Facebook's scraper uses user agents like facebookexternalhit/1.1 and Facebookbot. Make sure these are whitelisted in your firewall rules.
In Cloudflare, for example, you'd create a firewall rule that allows requests matching the user agent string facebookexternalhit to bypass security challenges.
Verify the Image URL Returns a 200 Status
You can test this quickly with a curl command in your terminal:
curl -I "https://www.yoursite.com/images/preview-image.jpg" \
-A "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
The -A flag sets the user agent to mimic Facebook's crawler. You should see HTTP/2 200 (or HTTP/1.1 200 OK) in the response. If you see a 301, 302, 403, or 404, that's your problem.
- 301/302 redirect: Facebook may not follow all redirects for images. Update the
og:imagetag to point directly to the final image URL. - 403 Forbidden: The image is being blocked. Check your server configuration and firewall rules.
- 404 Not Found: The image file doesn't exist at that path. Double-check the filename and directory.
Check the Content-Type Header
While you're looking at the curl output, check the Content-Type header. It should be something like image/jpeg, image/png, or image/gif. If it's returning text/html or something unexpected, the server isn't serving the file correctly.
Step 4: Clear Facebook's Cache with the Sharing Debugger
This is the step most people skip, and it's often the reason the fix doesn't seem to take effect. Facebook aggressively caches link preview data. Even after you've corrected your Open Graph tags and confirmed your image is accessible, Facebook may continue showing the old (broken) preview for hours or even days.
To force Facebook to re-scrape your URL:
- Go to the Facebook Sharing Debugger at
developers.facebook.com/tools/debug/ - Enter your page URL in the input field
- Click "Debug"
- Review the results—Facebook will show you any warnings or errors it found
- Click "Scrape Again" to force a fresh crawl
Sometimes you need to click "Scrape Again" two or three times before the cache fully refreshes. The debugger will show you the timestamp of the last scrape and the current preview data, so you can confirm it's updated.
Pay attention to any warnings the debugger surfaces. Common ones include:
og:imageshould be at least 200x200px- Provided og:image is not big enough (minimum 200x200px required)
- Could not download image (indicates an access or URL problem)
Each warning usually comes with enough context to identify the specific fix needed.
Step 5: Platform-Specific Fixes
How you implement Open Graph tags depends on your CMS or tech stack. Here's how to handle the most common platforms:
WordPress
If you're using WordPress, the easiest solution is the Yoast SEO or Rank Math plugin. Both provide dedicated fields for setting the Facebook preview image on a per-post and per-page basis.
In Yoast SEO:
- Edit the post or page
- Scroll to the Yoast SEO meta box
- Click the "Social" tab
- Upload or enter the URL for your Facebook image
- Save the post
For site-wide defaults, go to SEO > Social > Facebook in the Yoast settings and set a default image.
If you're managing tags manually in a theme's functions.php or a custom plugin, make sure your og:image output uses get_the_post_thumbnail_url() with the full URL:
<meta property="og:image" content="<?php echo esc_url( get_the_post_thumbnail_url( get_the_ID(), 'large' ) ); ?>" />
Shopify
In Shopify, Open Graph tags are typically handled in your theme's theme.liquid or head.liquid file. Look for existing og:image tags and verify they're outputting absolute URLs. Most modern Shopify themes handle this automatically, but you may need to check that your product images meet Facebook's dimension requirements.
Next.js / React
For Next.js applications, use the next/head component or the newer metadata API (Next.js 13+):
// Using next/head (Pages Router)
import Head from 'next/head';
export default function MyPage() {
return (
<>
<Head>
<meta property="og:image" content="https://www.yoursite.com/og-image.jpg" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
</Head>
{/* page content */}
</>
);
}
// Using Metadata API (App Router, Next.js 13+)
export const metadata = {
openGraph: {
images: [
{
url: 'https://www.yoursite.com/og-image.jpg',
width: 1200,
height: 630,
},
],
},
};
Static HTML Sites
For plain HTML sites, simply add the tags directly to the <head> section of each page. If you're managing many pages, consider a templating system or build tool to inject these tags consistently.
Step 6: Handle Dynamic or JavaScript-Rendered Pages
If your site is a Single Page Application (SPA) built with React, Vue, or Angular, Facebook's crawler may not execute JavaScript when scraping your page. This means dynamically injected Open Graph tags won't be visible to the crawler—it only sees the initial HTML response.
Solutions for this include:
Server-Side Rendering (SSR): Render the page on the server so the HTML returned to Facebook's crawler already contains the correct meta tags. Next.js, Nuxt.js, and SvelteKit all support SSR natively.
Pre-rendering / Static Site Generation (SSG): Generate static HTML files at build time that include all necessary meta tags. This is the most reliable approach for ensuring crawlers see complete metadata.
Dynamic Rendering: Serve a pre-rendered version of the page specifically to crawlers while serving the full SPA to regular users. Tools like Rendertron or Prerender.io can handle this.
To verify what Facebook's crawler actually sees when it visits your page, use the curl command with Facebook's user agent string (shown in Step 3). The HTML returned in that response is exactly what Facebook will parse for your Open Graph tags.
Step 7: Validate Your Structured Data and Meta Tags Holistically
While you're fixing the Facebook preview image, it's worth doing a broader audit of your social meta tags to make sure everything is in order across platforms. A complete set of tags for maximum compatibility looks like this:
<!-- Open Graph (Facebook, LinkedIn, etc.) -->
<meta property="og:title" content="Your Page Title" />
<meta property="og:description" content="Your page description." />
<meta property="og:image" content="https://www.yoursite.com/images/og-image.jpg" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="Description of the image for accessibility" />
<meta property="og:url" content="https://www.yoursite.com/your-page/" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="Your Site Name" />
<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Your Page Title" />
<meta name="twitter:description" content="Your page description." />
<meta name="twitter:image" content="https://www.yoursite.com/images/og-image.jpg" />
The og:image:alt tag is often overlooked but is important both for accessibility and for Facebook's content policies.
Common Mistakes to Avoid Going Forward
Once you've fixed the immediate issue, here are a few practices to prevent it from happening again:
- Always use absolute URLs for
og:imagevalues—never relative paths - Create a dedicated OG image template for your site so every new page automatically gets a properly sized preview image
- Test before publishing using the Social Share Preview tool to catch issues before they reach your audience
- Keep images under 1MB to ensure fast loading for Facebook's crawler
- Avoid using the same image for every page—unique images per page improve click-through rates significantly
- Re-scrape after updates using Facebook's Sharing Debugger any time you change a page's preview image
Conclusion
Fixing the Facebook link preview image comes down to three things: correct Open Graph tags with an absolute image URL, an accessible image that meets Facebook's size requirements, and a forced cache refresh via the Sharing Debugger. Work through each step methodically and you'll have a working preview in most cases within minutes.
To make this process faster and more reliable, use the Social Share Preview tool on OpDeck to instantly audit your page's Open Graph tags and see exactly what your link preview will look like before sharing. It's a free, no-setup tool that can save you a lot of trial and error. Head to opdeck.co to run a check on your URLs and make sure every link you share looks exactly the way you intend.