You paste a link into a Facebook post, a comment or a Page update and the card under it is wrong. Sometimes there is no picture at all, sometimes it shows a logo or a random image from the page, sometimes it still has last month's headline, and sometimes there is no preview card, just the bare link.
Facebook does not look at the page the way you do. It sends a crawler to read a small set of tags in the page's code, caches what it finds, and builds the card from that copy. So almost every broken preview comes down to one of four things: the tags are missing or wrong, the image does not meet Meta's size rules, Facebook is showing an old cached copy, or the crawler could not reach the page at all. The fix depends on which one you have.
Tell which case you're in
Match what you see to the likely cause, then jump to that section.
- No image on the first share of a brand-new link, but it appears later: the image had not been cached yet (see the image section).
- A small square thumbnail instead of a wide picture: the image is smaller than 600 x 315 pixels.
- A blank white box where the image should be: the image is gone, larger than 8 MB, or could not be fetched.
- The picture is cropped badly: the image is far from a 1.91:1 shape.
- Old title, old description or old picture after you changed the page: Facebook is using its cached copy.
- A random image, or the wrong title, from the page: there are no Open Graph tags, so Facebook guessed.
- No preview card at all, or the link cannot be posted: the crawler was blocked, or the link was flagged by Meta's content filtering.
First, see what Facebook actually read: the Sharing Debugger
Meta's own tool for this is the Sharing Debugger at developers.facebook.com/tools/debug/sharing. You need to be logged in to Facebook to use it. Type the page address into the box and click Debug. The results show the tags Facebook's crawler read from your page, plus any errors or warnings.
The same tool also forces a fresh read. Meta's documentation says that entering a URL into the Sharing Debugger triggers a new scrape, and that this is how you refresh content sooner than Facebook would on its own. At the time of writing, the results page has a Scrape Again button for this. If you are a developer, Meta documents the same thing as an API call: a POST request to /?id={your_url}&scrape=true with the URL percent-encoded.
Check three things in the results: whether og:title, og:image and og:url are present, whether the image URL it found is the one you expect, and whether there are any warnings. That tells you which of the sections below applies.
Cause 1: missing or wrong Open Graph tags
The preview card is built from Open Graph tags: meta tags in the page's head section, written like <meta property="og:title" content="Your title" />. The Open Graph protocol (ogp.me) lists four required properties: og:title, og:type, og:image and og:url. Meta's webmaster docs add og:description (a brief description shown below the title) and recommend og:locale. If the tags are missing, Meta says the crawler guesses the title, description and preview image, which is where random images come from.
What each tag should contain, according to Meta and ogp.me:
- og:title: the title of the page or article, without your site name or other branding.
- og:description: a short description, which Meta says is usually 2 to 4 sentences.
- og:image: the full address of the image you want in the card.
- og:url: the canonical address of the page, without session or tracking parameters. Facebook treats links that declare the same og:url as one item.
- og:type: defaults to website if you leave it out. Meta notes the type cannot be changed once the link has been used in a story.
- Use absolute URLs. Meta's FAQ says the debugger rejects relative addresses in og:url and og:image, so write https://example.com/image.jpg, not /image.jpg.
- Put the tags near the top of the page. Meta's crawler documentation says Open Graph properties must appear within the first 1 MB of the page or they will be cut off.
Cause 2: the image is too small, too big or not cached yet
Meta publishes clear numbers for link images. At the time of writing they are:
- Recommended: at least 1200 x 630 pixels for the best display on high-resolution devices.
- For a large preview: at least 600 x 315 pixels. Anything smaller (but above 200 x 200) shows as a small square.
- Minimum: 200 x 200 pixels.
- Maximum file size: 8 MB.
- Shape: as close to 1.91:1 as possible, so the whole image shows in Feed without cropping.
- Format: Meta lists image/jpeg, image/gif and image/png for og:image:type.
If a new link shows no image the first time it is shared, that is a documented caveat: Meta caches images asynchronously, so the first person to share new content may not see a rendered image. Two fixes from Meta's docs: run the URL through the Sharing Debugger before you share it, which pre-caches the image, and add og:image:width and og:image:height tags with the image's real size so the crawler can render it immediately instead of downloading and processing it first.
A blank white box usually means the image you pointed to is no longer there. Meta's FAQ says to keep old images on your server after you change og:image, because existing shares still point at them.
Cause 3: Facebook is showing an old cached copy
Facebook stores what it read. Meta's docs say the crawler refreshes link data about every 30 days on its own, so an edit can take that long to appear unless you force it. To update a preview properly:
- Change the og tags on the page itself.
- If you changed the picture, upload it under a new file name. Meta says images are cached by URL and will not update unless the URL changes.
- Put the page address into the Sharing Debugger and have it scrape again. New shares then use the updated data.
- Posts that are already published keep the old card. To update one, open the post, click the three dots in its upper-right corner and choose Refresh share attachment.
- If the title will not change no matter what, check engagement. Meta's FAQ says the title is locked once the link has had more than 50 interactions (comments, likes, shares and so on).
Cause 4: the crawler can't reach the page
If the debugger shows an error, or the tags it lists do not match your page, Facebook's crawler is probably being turned away or sent somewhere else. Meta identifies it with the user agent facebookexternalhit/1.1, and its documentation lists these requirements and pitfalls:
- robots.txt: a Disallow rule for Meta's crawlers blocks them. Meta notes crawlers may cache robots.txt for up to 24 hours, so a fix there can take a day to take effect.
- Firewalls and security plugins: Meta says to add its crawler to your allow list by user agent or, more securely, by IP address.
- Speed: the content must be crawlable within a few seconds, or Facebook may be unable to display it.
- Compression: your server must support gzip and deflate encodings.
- Partial requests: the server should either answer a Range request with all the required tags in that byte range or ignore the Range header.
- Redirects: the crawler follows redirects and uses the final page in the chain, and it also follows an og:url that points somewhere else. Make sure the final page has the tags you want. Since 3 February 2020 an og:url can only point to a different domain if that domain has allowed yours in Meta's Webmaster tool.
- Login walls: Meta's docs don't cover sign-in pages directly, but the crawler only sees what an anonymous visitor gets. If a logged-out visitor sees a sign-in screen, the card is built from that screen's tags. Put the og tags on the page the public sees, or serve them to Meta's crawler.
- Response code 0 in the debugger: Meta's FAQ says the crawler looks for an AAAA (IPv6) DNS record and returns code 0 if it is not found, so check your DNS records after moving servers.
No preview at all, and the debugger looks fine
If the tags are correct and the crawler can read them, but Facebook still will not show a preview or will not let the link be posted, Meta's FAQ gives one more cause: the link may have been flagged by its content filtering system. Meta says you can report this through its Help Site if you think it is a mistake. Clearing caches or changing tags will not fix a flagged link.
When it isn't your website
If you are sharing someone else's article or product page, you can't change its tags, but you still have some options. Run the link through the Sharing Debugger yourself; if Facebook simply has an old copy, a fresh scrape may fix the card for everyone's new shares. If your own post already went out with a bad card, use Refresh share attachment from the post's three-dot menu.
If the debugger shows missing tags, a tiny image or a crawler error, only the site owner can fix it. Send them the address and what the debugger reported; it points them straight at the problem. In the meantime, you can post your own photo or screenshot and put the link in the text, so the post still has a picture.
If you share lots of different links
If you keep sharing several profiles or pages and the cards are a mess, OneSol gives you a free page with one link for all of them, so there is one address to get right. It also covers forms that don't make people sign in, digital business cards with a QR code, and Send for sharing files by link up to 5 GB; payments through your own Stripe, PayPal, Razorpay or Square come with the paid Pro plan.