Open Graph image not showing? Find which part is failing

Updated · Check Before Publish

When a shared link shows no picture, the cause is almost always one of six things, and it pays to check them in order: the og:image tag is missing or malformed, the image URL is relative or wrong, the URL doesn't return an image, the image is too small, the app's crawler can't reach it, or the app is showing an old cached preview. Each step only matters once the one before it passes.

The first five can be checked from outside in one go. Paste the page address and the checker reads your Open Graph and Twitter tags, fetches the og:image, and reports its status, file type, file size and real pixel size, with a preview of the card.

Opens the Open Graph Checker and runs it. Free, no account. The address is not stored and never goes into the URL bar.

1. The tag is missing, misspelled or added too late

The tag must be in the page's <head>, in the HTML the server sends:

<meta property="og:image" content="https://www.example.com/images/share.jpg">

Note property, not name. Link-preview crawlers generally read the HTML without running JavaScript, so a tag inserted by script after the page loads may never be seen, even though it shows up in your browser's inspector. If the checker says there is no og:image but you can see one in the inspector, that's the reason.

2. The image URL is relative or wrong

Use a full, absolute https:// URL. /images/share.jpg works in a browser but not reliably in a preview crawler. Also check for typos, a staging domain, or a URL that includes a size suffix the CMS no longer generates.

3. The URL doesn't return an image

Open the image URL on its own. It must answer 200 with an image file (JPEG, PNG, WebP or GIF). Common failures: a 404 after the image was renamed, a redirect to a login page, or the site's 404 page returned with an HTML content type. The checker reports each of these, and flags images over 5 MB, which many apps refuse.

4. The image is too small or the wrong shape

Very small images are dropped or shown as a tiny thumbnail. The checker treats anything under 200 pixels on a side as a problem to fix, and asks you to review images that are narrower than 600 pixels or far from the roughly 1.91:1 landscape shape most apps use. 1200 × 630 pixels is a common target. Each app crops differently, so a portrait photo usually ends up as a narrow horizontal slice.

5. The app's crawler is turned away

Bot protection, a firewall rule, a login wall, country blocking or a robots.txt rule can stop Facebook's, LinkedIn's or Slack's crawler from reading the page or the image even though it opens fine for you. If our checker is refused (for example with a 403), the apps may be too. If our checker gets through, that's a good sign, but each app fetches from its own servers with its own identity, so it isn't proof.

6. The app is showing an old preview

Apps cache previews, sometimes for a long time. If the checker shows the right image and the app still shows the old one (or none), it's the cache:

  • Facebook: the Sharing Debugger (requires a Facebook login) has a Scrape Again button.
  • LinkedIn: Post Inspector (requires a LinkedIn login) refetches the page when you inspect it.
  • X: the old Card Validator was retired. X reads twitter:card and falls back to your og: tags for the title, description and image; summary_large_image asks for the large card.
  • WhatsApp, Slack, iMessage, Discord: no public refresh tool. A new preview usually appears once the app fetches the page again, which can take time. Sharing a slightly different URL (for example with a query string) is a common way to see the new version sooner.

How to confirm the fix

Run the check again until the image loads with a sensible size and the tags pass, then share the link once somewhere private (a message to yourself) in the app you care about. That last step matters: we can show what your page declares and whether the image works, but not how each app will render it on the day.

If the image is fine but a script or stylesheet is broken on the same page, see Mixed content.

Fixed this one? Before you send people to the page, run the full pre-publish check for everything else: indexing signals, link preview, broken links, alt text, structured data and HTTPS in one pass.