
Fix it in this order
Look at the source
Open the post, view source, and search for
og:imageandog:title. Two different values mean two plugins are writing tags. Keep one.Check the image itself
Open the og:image address in a private window. It must load without login, over https, and not be a lazy-load placeholder or a tiny thumbnail.
Check the size
Use 1200 by 630 pixels. Images below about 600 pixels wide get a small side thumbnail; below 200 by 200 they may be ignored.
Check access
Security plugins, firewalls and hotlink protection sometimes block Facebook's crawler. Its user agent contains
facebookexternalhit; make sure it receives your page and image.Scrape again
Paste the address into the Sharing Debugger and press Scrape Again. Facebook caches previews for a long time and will not notice your fix otherwise.
Purge your own cache
If your page cache still serves old tags, Facebook scrapes the old version. Purge, then scrape again.
Facebook showing wrong image: symptom, cause, fix
| Symptom | Cause | Fix |
|---|---|---|
| The site logo appears instead of the post image | A theme or share plugin prints a default og:image after the SEO plugin's tag | Turn off the second source; keep one og:image |
| A small square thumbnail beside the text | Image under about 600 pixels wide | Serve a 1200 by 630 crop |
| No image at all | Image under 200 by 200, relative URL, or blocked from the crawler | Absolute https URL to a large image; allow facebookexternalhit |
| Yesterday's image after you changed it | Facebook's cached card | Scrape Again in the debugger, twice if needed |
| The right image in the debugger, the wrong one when shared | The debugger scraped the fresh page; readers shared a cached one earlier | Purge your page cache, scrape again, share a fresh test post |
| A random photo from the body | No og:image tag, so the crawler guessed | Add one og:image tag |
| A grey box or a transparent image | Lazy-load placeholder or a PNG with transparency | Point og:image at the real file; flatten transparency onto a background |
A worked diagnosis
The site is invented; the fault is the usual one. A post at https://example.com/town-clock/ shares with the site logo instead of the clock photo. View source shows two image tags: the SEO plugin's og:image pointing at town-clock-1200x630.jpg on line 31, and a second og:image pointing at logo-300x200.png on line 58, printed by the share plugin's social meta option. The debugger lists both and previews the logo.
Turning off the share plugin's social meta removed the second tag. The page cache still held the old HTML, so the debugger kept showing two tags until the post URL was purged. One Scrape Again then listed a single image; a second Scrape Again a minute later rendered it, since the image is sometimes fetched on the second pass. A fresh test share from a personal account showed the clock. Two commands confirm what the crawler sees without waiting for the debugger.
curl -s -A "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)" https://example.com/town-clock/ | grep -i "og:image"
# expect exactly one line
curl -s -o /dev/null -w "%{http_code} %{content_type} %{size_download}\n" \
-A "facebookexternalhit/1.1" https://example.com/wp-content/uploads/2026/09/town-clock-1200x630.jpg
# expect: 200 image/jpeg and a size in the tens or hundreds of KBThe refresh sequence
- Fix the tag or the image.
- Purge the page cache and the CDN for the post URL; open the post in a private window and view source.
- Open the network's sharing debugger for Facebook, paste the URL, press Scrape Again, and read the list of tags it fetched.
- If the image is still missing from the preview, wait a minute and press Scrape Again once more.
- Run the LinkedIn Post Inspector on the same URL, and draft a test post on X to see its card.
- Share the post once from a test account on each network and look at the card that appears.
Wrong text, right image
If the title or description is wrong, the same duplicate-tag problem is likely, or the post has a social title set in your SEO plugin that you forgot. When no og:description exists, Facebook may take text from the page itself, often the first paragraph or a cookie notice.
Posts shared before the fix
Scraping again updates future shares and usually refreshes the card on existing posts over time. Posts that were shared long ago may keep their original image. You cannot change a card another person already posted, only what the network fetches next.
Other networks
LinkedIn has its own cache and its own tool, the Post Inspector. X reads twitter card tags first and falls back to Open Graph. After fixing tags, refresh each network separately. The tag set itself is described in Open Graph tags in WordPress, and the crop that survives every network's card is in choosing an Open Graph image size.
What goes wrong
- Scraping before purging. The debugger fetches your cached page and caches the old tags again, now with a fresh timestamp. Purge first.
- Fixing the image but not the width and height tags. Old
og:image:widthvalues that no longer match the file can leave the card laid out for the wrong shape until the next scrape. - Blocking the crawler while testing. A rate-limiting rule that challenges unknown bots returns a challenge page to facebookexternalhit, and the card shows the challenge page's title.
- Trusting a preview from the composer alone. The composer shows the network's cached card. The debugger shows what it just fetched. Use both.
- Assuming the wrong image is always a tag fault. An image replaced on a CDN under the same filename keeps the old bytes at the edge; purge the image URL too. A card that arrives with a different image from the one you set is also the starting point of share preview integrity, which covers what a reader can and cannot trust in a preview.
Check it worked
- The crawler-agent curl above prints exactly one og:image line, and the image request returns 200 with an image content type.
- The debugger lists one image, one title and one description that match your source, with no crawler error.
- The preview in the debugger shows the large card, not a side thumbnail.
- A fresh test share on Facebook, LinkedIn and X shows the intended image.
- The post's page cache and CDN entries were purged after the last tag change, and the debugger's fetch time is later than that purge.
This guide belongs to the Open Graph and link preview guides. If you are working through the same setup, Twitter cards on X: tags and testing and adding Open Graph tags in WordPress are the usual next questions.
Sources
- Meta for Developers, Images in link shares (Internet Archive copy, June 2025)
- The Open Graph protocol
- Meta for Developers, A Guide to Sharing for Webmasters (Internet Archive copy, May 2025)
- Meta for Developers, Sharing Debugger (Internet Archive copy, January 2026)
Questions
How do I make Facebook update the image?
Fix the og:image tag, purge your page cache, then use Scrape Again in the Sharing Debugger.
Why does Facebook pick a random image from my page?
The page has no usable og:image, so Facebook guesses. Add one image tag of at least 1200 by 630.
Why does the debugger show a different image to my page source?
It is showing Facebook's cached copy. Press Scrape Again; if it still differs, your page cache served an older version.
Why does Facebook show my logo instead of the post image?
A second og:image tag, usually from a theme or share plugin default, is printed after the SEO plugin's tag. View source, find both, and turn off the source you do not want.
How long does Facebook cache a link preview?
Long enough that you should never wait for it to expire. Scrape Again in the debugger refreshes the cache at once for future shares; cards on posts already published may update later or keep the old image.
Hannah Voss, Editor. Checks every guide against a working WordPress install and the networks' current documentation. Last reviewed September 2026.
Related reading
- Adding Open Graph tags in WordPressAdd Open Graph tags to WordPress with an SEO plugin or theme code: the four required tags, image tags, per-post overrides, and how to avoid duplicate tags.7 min read
- Open Graph image size: 1200 by 630 and the safe zoneThe right Open Graph image size is 1200 by 630 pixels at a 1.91:1 ratio. Minimums, file limits, formats, and a centre safe zone for square crops.6 min read
- How to create a Facebook app IDCreate a Facebook app ID for share counts, the fb:app_id tag and sharing plugins: the dashboard steps, the settings that matter, and vanishing like buttons.5 min read
- Content Credentials on shared images: what survives a shareWhat C2PA Content Credentials are, why WordPress image sizes and social uploads often strip them, and how to keep provenance on the images you share.6 min read