Troubleshooting · 6 min read

OG image not showing? The 12-point checklist

Fix a missing or stale Open Graph image: check the raw HTML, absolute URL, image response, crop, duplicate tags, crawler access, and platform caches in order.

Updated

The short answer

Open the page source and confirm og:image is in the server-rendered HTML with an absolute HTTPS URL. Then open that image URL in a private window: it must return 200, the right content type, and be at least 600 x 315. If both are correct, the page is probably cached by the platform. Force a re-scrape in the Facebook Sharing Debugger or LinkedIn Post Inspector, or rename the image and update og:image.

First check
Raw HTML, not the DOM
Image URL
Absolute, HTTPS, public
Expected status
HTTP 200
Minimum size
600 x 315
Common cause
Platform cache
Fix
New filename or re-scrape

A missing preview is almost always one of five things: the tags are not in the HTML the crawler receives, the image URL is wrong, the image is unreachable, the platform cached an old version, or two sets of tags are fighting. Work through the checks in order. Each one eliminates a layer instead of guessing.

1. Check the raw HTML, not the browser DOM

Right-click the page and choose View Page Source, or run curl -sL https://example.com/page | grep -i og:image. If the tag appears in DevTools but not in the source, it is being injected by JavaScript. Many social crawlers do not execute JavaScript, so they never see it.

What a crawler sees
curl -sL https://example.com/blog/post | grep -iE 'og:|twitter:'

If that command prints nothing, the problem is upstream of every platform. Fix the server rendering first: use the framework's metadata API, a CMS plugin that renders on the server, or a static tag in the head.

2. Confirm the image URL is absolute and public

The tag should contain a full URL starting with https://. A relative path such as /og.png is resolved inconsistently. A localhost URL is only reachable from your machine. A signed URL may expire before the crawler fetches it.

Correct
<meta property="og:image" content="https://example.com/og/post.png" />

3. Open the image URL in a private window

Paste the exact og:image URL into a private browser window with no session. It should render the image, not a login page, not a 404, and not a redirect loop. Check the response headers as well: the status should be 200 and the content type should be image/png, image/jpeg, or image/webp.

Check status, type, and size
curl -sI https://example.com/og/post.png | grep -iE 'HTTP/|content-type|content-length'
  • 403 or 401: the image is behind authentication, a firewall, or hotlink protection. Allow the social crawlers or move the image to a public bucket.
  • 404: the path is wrong or the file was never deployed. Check case sensitivity; /OG.png and /og.png are different on most servers.
  • 302 or 307: the crawler may follow a redirect, but some platforms do not. Point the tag at the final URL.
  • 200 but `text/html`: the URL is returning an error page, not an image. Open it and look.

4. Check the dimensions and file size

A tiny image can be rejected or displayed as a small thumbnail. Aim for at least 600 x 315 for a large card, ideally 1200 x 630. Confirm the dimensions in an image editor or with identify from ImageMagick. If the file is several megabytes, compress it; some scrapers time out or fall back to no image.

ImageMagick
identify https://example.com/og/post.png
# post.png PNG 1200x630 1200x630+0+0 8-bit sRGB 184KB

5. Look for duplicate tags

A CMS plugin, a theme, and a hand-written snippet can all emit og:image. When a page has two different images, the platform may pick the first, the last, or the one it parsed most recently. Search the source for every occurrence and keep one source of truth.

Count the tags
curl -sL https://example.com/blog/post | grep -c 'property="og:image"'

If the count is greater than one, disable the duplicate. In WordPress, that usually means turning off the social module in one plugin or removing the theme's hand-written tags. In a custom app, check the layout, the page, and any SEO component that runs on both.

6. Check the crop, not just the file

The image may be present and still look wrong because the platform cropped the headline out. A square image in a wide card loses the top and bottom. A 1.91:1 image with the text at the far left can lose it to a square crop. This is a design failure, not a tag failure: move the content into the middle 80 percent and export a new file.

7. Clear the platform cache

Platforms cache previews aggressively. If the tags and image are correct but the old preview persists, the cache is the problem. The fix is either a forced re-scrape or a new image URL.

PlatformRefresh methodNotes
FacebookSharing Debugger: paste the URL, then click Scrape AgainThe most reliable cache refresh
LinkedInPost Inspector: paste the URL and inspectLinkedIn caches separately from Facebook
XPaste the URL into a new post draftThe composer preview is the practical check
SlackRe-paste the URL, or add a query stringWorkspace-level unfurl settings can block previews
DiscordRe-paste the URL, or change the filenameEmbeds are cached by URL
TelegramUse @WebpageBot with the URLThe bot reports the current preview
WhatsAppRe-send the link in a new chatCaches per client and per device

If a platform still refuses to refresh, publish the image under a new filename (post-v2.png) and update og:image. That is the only refresh that works everywhere, including clients with no debugger.

8. Check crawler access

A robots.txt rule that blocks the page or the image can prevent a preview. Some platforms respect robots directives for unfurling; others fetch anyway. Check both the page and the image path. Also check X-Robots-Tag headers and any CDN bot rules that block unknown user agents.

robots.txt should not block the image
User-agent: *
Allow: /
Allow: /og/
Disallow: /admin/

9. Check the page's canonical and URL

If the page is served at several URLs, the preview may be built for a different one. Use the canonical URL in og:url and share that URL. A tracking parameter can create a separate cache entry that still points at the right page but has never been scraped.

10. Check the image itself

  • Transparency: some platforms composite it onto black or white. Export a solid background.
  • Colour profile: use sRGB. CMYK images can fail or shift.
  • Corrupt file: open it in a second viewer. A file that renders in one browser can fail in a scraper.
  • Animated GIF: support is inconsistent. Use a static image.
  • SVG: many social crawlers do not render it. Export a PNG or JPG.

11. Test the exact URL you shared

It is easy to test the canonical URL and share a variant with a query string, a trailing slash, or a different subdomain. Paste the exact URL that appears in the post, not the one in your address bar after a redirect. If the site redirects http to https or www to apex, test the final URL.

12. If everything looks right, wait

Platforms can take hours to refresh a preview, and some clients cache for weeks. If the debugger shows the correct image and the live composer still shows the old one, you have done the work. Change the filename if the old card is actively harmful, or accept the delay.

Frequently asked questions

Why is my Open Graph image not showing?

Check four things in order: the tag is in the server-rendered HTML, the image URL is absolute and public, the image returns HTTP 200 with the right content type, and the platform cache has been refreshed. One of those four explains almost every missing preview.

Why does Facebook show the old OG image?

Facebook caches previews by URL. Replacing the file at the same path does not invalidate the cache. Use the Sharing Debugger to re-scrape, or publish the image under a new filename and update og:image.

Why is my OG image cropped?

Each platform uses its own container. A square image in a wide card, or a 1.91:1 image in a square container, gets cropped from the centre. Keep the headline and logo inside the middle 80 percent and at least 64 pixels from the edges.

Does LinkedIn use og:image or twitter:image?

LinkedIn uses Open Graph tags, primarily og:image, og:title, and og:description. It does not rely on twitter:image. Use the LinkedIn Post Inspector to see exactly what it scraped.

Why is my OG image not updating on X?

X caches card data. Paste the URL into a fresh post draft to see the current card. If the old image persists, change the image filename and update og:image, then try again.

Does og:image need to be HTTPS?

In practice, yes. HTTPS is required or strongly preferred by every major platform, and some will refuse an HTTP image. Use an absolute HTTPS URL with a valid certificate.

Can an OG image be too large?

Yes. Facebook accepts up to 8 MB and X up to 5 MB, but large files load slowly and can time out in chat clients or scrapers. Keep the file under 1 MB and ideally under 300 KB.

Why does Slack show no preview?

Slack may block unfurls at the workspace level, or the page may be behind a login. Check the workspace's link preview setting, confirm the page is public, and re-paste the URL. A Slack unfurl also uses the page's Open Graph tags, not a separate image.

Sources and further reading

Written and maintained by GxAditya

The person who builds ogimg.in. Last updated . 6 min read.

About the project

Free, no account

Make the image, then copy the tags

Start from a template or a blank canvas. Export a 1200 x 630 PNG, JPEG, or WebP, and copy the Open Graph tags from the preview panel.

No account. No upload. No watermark.

Ship the link. The preview follows.

Start from a blank canvas or a template, and leave with a card that looks like it was art-directed — because you did.