Preview Image Not Showing — How to Fix og:image Not Displaying
Your URL unfurl appears but shows no image — or the wrong image. This is one of the most common link-sharing problems, and it almost always has a fixable root cause. Nine times out of ten it's a missing og:image, a relative URL, an image that's inaccessible to crawlers, or a size below the platform's minimum.
This guide is the complete fix checklist for every reason your og:image won't display, the exact platform-by-platform fixes, advanced troubleshooting for the less-obvious causes, and how to test your URL unfurl image before you send another broken card.
→ Check why your image isn't showing with TryUnfurl
Why Preview Images Fail
Before the checklist, it helps to know what's actually happening. When a platform unfurls your URL, it:
- Fetches your page's HTML.
- Reads
og:imagefrom the<head>. - Follows that URL to download the image.
- Validates the image dimensions and format.
- Renders the card — or falls back to text-only if anything failed.
A preview image fails when any one of those five steps goes wrong: the tag is missing, the URL is malformed, the image can't be fetched, the dimensions are too small, or the format is unsupported. Your job is to figure out which step is broken, and the fix checklist below is ordered to catch the most common causes first.
Fix Checklist
Work through this list in order. Most issues are caught within the first three steps.
1. Check that og:image exists in your HTML
View your page source (Ctrl+U or Cmd+U) and search for og:image. If it's not there, add it:
<meta property="og:image" content="https://yourdomain.com/og-image.jpg" />
2. Check the image URL is absolute HTTPS
Relative URLs like /images/og.jpg will not work. It must be a full URL:
<!-- Wrong -->
<meta property="og:image" content="/images/og.jpg" />
<!-- Correct -->
<meta property="og:image" content="https://yourdomain.com/images/og.jpg" />
HTTP URLs are also blocked on most modern platforms — always use HTTPS.
3. Verify the image loads publicly
Open the exact image URL in a private/incognito browser window. If the image doesn't load there, crawlers can't fetch it either. Common reasons it fails:
- The image returns a 404 error (file not found or moved).
- The image is behind authentication.
- The server returns a 403 (forbidden) for bot traffic.
- A signed CDN URL has expired.
- Hotlink protection blocks the crawler's
Referer.
4. Test Your URL Unfurl Results with TryUnfurl
Paste the URL into TryUnfurl. You'll see whether og:image is detected, the full image URL, the dimensions, whether the image loads, and a rendered URL unfurl card for every major platform. Most image issues are identified in this single step.
5. Check image dimensions
Images that are too small are silently ignored by most platforms.
| Platform | Minimum to display | Recommended |
|---|---|---|
| 200 × 200 px | 1200 × 630 px | |
| Twitter/X | 300 × 157 px | 1200 × 628 px |
| 1200 × 627 px | 1200 × 627 px | |
| Slack | 500 × 262 px | 1200 × 630 px |
| Discord | 300 × 157 px | 1200 × 630 px |
| iMessage | 300 × 157 px | 1200 × 630 px |
| 300 × 200 px | 1200 × 630 px | |
| Telegram | 200 × 200 px | 1200 × 630 px |
| Microsoft Teams | 200 × 200 px | 1200 × 630 px |
The safest universal size is 1200 × 630 px.
6. Declare image dimensions in your tags
Some platforms won't display an image unless dimensions are explicitly declared:
<meta property="og:image" content="https://yourdomain.com/og-image.jpg" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="Descriptive alt text" />
7. Check robots.txt
If your image files are disallowed in robots.txt, crawlers won't fetch them. Check that your image path isn't blocked:
# Bad — blocks all images
Disallow: /images/
# Fine — only blocks a private area
Disallow: /private/
8. Check your image format
- JPG and PNG work universally.
- WebP has limited support — some platforms skip WebP images.
- GIF — avoid for preview images; use static images only.
- SVG — not supported for
og:imageon most platforms.
9. Check file size
Images over 8 MB may time out or be skipped when crawlers fetch them. Optimise your image and keep it under 1 MB where possible — smaller images also mean faster URL unfurl previews.
10. Clear the platform cache
If you've fixed your image but the old broken state is still showing, the platform has cached the failed result. Force a refresh:
- Facebook — use the Sharing Debugger and click Scrape Again.
- Twitter/X — use the Card Validator.
- LinkedIn — use the Post Inspector and click Regenerate.
- Slack / Discord — delete and re-share the link (or add
?v=2for Discord). - WhatsApp / iMessage / Telegram / Teams — append a query-string cache-buster (
?v=2) when re-sharing.
See how to refresh a link preview for the full per-platform cache-clearing workflow.
Platform-Specific Image Requirements
LinkedIn requires a minimum of 1200 × 627 px to display the large preview-card format. Images below this will show as a tiny thumbnail or no image at all. This is stricter than other platforms.
Twitter / X
For summary_large_image cards, ensure twitter:card is explicitly set to summary_large_image — without it, Twitter may default to a small square card regardless of image size.
Facebook requires og:image to be at least 200 × 200 px but recommends 1200 × 630 px. Images must have a public, stable URL — ensure you're not using CDN URLs that rotate or expire.
iMessage
iOS crops wide images to a square thumbnail in compact thread views. Keep the subject of the image in the centre 800 × 400 px so the crop still works.
WhatsApp and Telegram
Both require HTTPS image URLs, both prefer JPEG/PNG over WebP, and both cache aggressively — so test before you send.
Advanced Troubleshooting
If the checklist above doesn't reveal the cause, these are the sneakier edge cases:
- Signed URL expiry. Your
og:imageis a short-lived signed CDN link that expired after the platform first cached it. Use permanent image URLs. - Content-Type mismatch. Your image URL returns
Content-Type: text/htmlinstead ofimage/jpeg— some crawlers reject it. Check the server headers. - CDN serving different variants. Image CDNs (Cloudinary, Imgix) sometimes serve different formats based on user-agent. Test with platform UAs specifically.
- CORS or hotlink protection. Your image host requires a specific
RefererorOrigin. Allowlist platform crawlers. - Rate limiting on image requests. Aggressive rate limits on image URLs can cause platform crawlers to receive 429s.
- Duplicate
og:imagetags. A theme + plugin combo injects two tags; the platform picks the wrong one. - Canonical vs AMP mismatch. Platforms unfurl the canonical URL; make sure both versions have the right
og:image. - Image dimensions declared incorrectly. If you declare
og:image:width/og:image:heightthat don't match the actual file, some platforms reject the image.
Testing Your URL Unfurl Image
Paste your URL into TryUnfurl. You'll see:
- Whether
og:imageis present. - The detected image URL.
- The detected dimensions.
- Whether the image loads successfully.
- A rendered URL unfurl preview card for every major platform — so you can see exactly where the image is working and where it's being skipped.
For campaign launches or content migrations, the bulk URL unfurl checker runs up to 100 URLs in one pass and flags every image that's missing, too small, or unreachable.
→ Test your URL unfurl image now · → Bulk-check up to 100 URLs
Frequently Asked Questions
Why does my og:image load in my browser but not in the URL unfurl?
Your image URL is accessible with your browser cookies or a matching Referer, but platform crawlers don't have those. Test the image URL in a private/incognito window with no cookies, or with cURL using the platform's user-agent.
How small is too small for og:image?
Below 200 × 200 px, most platforms silently skip the image. Below 1200 × 627 px, LinkedIn downgrades to a small thumbnail. For reliable large cards across every platform, use 1200 × 630 px.
Why does the image show on Facebook but not LinkedIn?
LinkedIn is stricter about minimum dimensions — it requires 1200 × 627 px. Facebook accepts images as small as 200 × 200 px.
How do I test URL unfurl image without posting?
Paste the URL into TryUnfurl. It renders the preview card for every major platform and shows the detected og:image details — no posting required.
Can I use a dynamically generated og:image?
Yes — many sites use CDN templates (Cloudinary, Imgix, Vercel OG) to generate per-page images at build time or request time. Just make sure the image URL is deterministic (same URL always returns the same image) or the platform cache will eventually break.
Why did my og:image work yesterday and break today?
Most common causes: the image URL changed, a signed URL expired, a CDN rotation altered the path, or a new WAF rule blocks platform crawlers.