Likely causes
- Image URL broken: returns a non-200 status (missing, moved, or wrong URL)
- Image behind auth: requires login, cookies, or is on a private server
- Image below 200 x 200px: Facebook’s minimum; anything smaller is ignored
- Image over 8 MB: rejected regardless of resolution
- Relative URL:
og:imagemust be a full URL, not a path like/images/og.jpg - Tags past the 60 KB mark: Facebook only parses the first ~60 KB of HTML
Diagnosing
1. Check the Sharing Debugger
Open the Sharing Debugger and enter your URL. Common warnings:
- “og:image could not be downloaded”: URL is inaccessible
- “og:image was not found”: tag is missing or past the 60 KB limit
- Dimension warnings: image is too small
2. Verify the image URL is reachable
curl -A "facebookexternalhit/1.1" -I https://example.com/your-image.jpgYou need a 200 OK with a valid Content-Type (e.g., image/jpeg). A redirect to a login page, 403, or 404 means the crawler can’t reach it.
3. Confirm absolute URL
<!-- Correct -->
<meta property="og:image" content="https://example.com/images/og.jpg">
<!-- Wrong - Facebook can't resolve this -->
<meta property="og:image" content="/images/og.jpg">
4. Check dimensions and file size
- Minimum: 200 x 200px (ignored below this)
- Recommended: 1200 x 630px
- Max file size: 8 MB
5. Check tag placement
If your <head> has large inline CSS or JS, the OG tags may be pushed past the 60 KB parsing limit:
curl -A "facebookexternalhit/1.1" https://example.com/page | head -c 61440 | grep "og:image"No result? Your tags are too far down in the document.
The fix
- Use an absolute HTTPS URL for
og:image - Make the image publicly accessible, with no auth or IP restrictions
- Use at least 600 x 315px (ideally 1200 x 630)
- Keep file size under 8 MB
- Place meta tags early in
<head>, before large inline content - Sharing Debugger, “Scrape Again” to verify