Likely causes
- Cached old image: Facebook caches previews for ~30 days. You updated the image, but Facebook is still serving the old one.
- Multiple
og:imagetags: Facebook uses the first one it finds. If a CMS plugin or theme injects its ownog:imagebefore yours, that one wins. - No
og:imagetag: without one, Facebook runs a heuristic and picks whatever image it finds on the page. Usually a logo, icon, or ad. - Duplicate tags from plugins: WordPress SEO plugins (Yoast, Rank Math, All in One SEO) sometimes output their own OG tags alongside a theme’s, creating duplicates.
Diagnosing
1. Check the Sharing Debugger
Open the Sharing Debugger and enter your URL. Look at the “og:image” field, which shows exactly which image Facebook is using.
2. View raw HTML source
Check the server-rendered HTML (not browser inspector) for all og:image tags:
curl -A "facebookexternalhit/1.1" https://yoursite.com/page | grep -i "og:image"Multiple og:image tags? Facebook uses the first one. Remove or reorder the duplicates.
3. Check for plugin conflicts
On WordPress, multiple plugins often output competing OG tags:
- SEO plugins (Yoast, Rank Math, All in One SEO)
- Social sharing plugins
- Theme built-in OG tags
- Page builder plugins
Pick one source of OG tags and disable the rest.
The fix
- Make sure a single
og:imagetag with the correct URL appears first in your HTML - Clear the cache: Sharing Debugger, click “Scrape Again” two or three times
- Add
og:image:widthandog:image:heightso Facebook doesn’t have to guess:
<meta property="og:image" content="https://example.com/correct-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
Preventing this
- One source of truth for OG tags: one plugin or one template, not multiple
- Include
og:image:widthandog:image:height - After every image change, scrape the URL in the Sharing Debugger to warm the cache