Discord preview not showing an image

Discord's unfurler needs a public, absolute og:image and the core Open Graph tags. It skips images behind auth or that are too large, and it caches results.

Why this happens

Discord's unfurler fetches og:image when a link is pasted into a channel. The embed image is skipped when:

  • og:image is a relative URL — Discord needs a full https:// address
  • The image is behind authentication or a private network — Discord's servers cannot reach it
  • The image is too large — very heavy files (typically above 8 MB) are skipped
  • The core OG tags are incomplete — Discord usually won't show an embed at all if og:title or og:description is missing alongside the image
  • The page returns an error status or a redirect Discord chooses not to follow

Discord caches embeds per URL. If a link was shared before the fix, it will show the old (or missing) embed until the cache expires or you share the link again after a cache bust (for example, appending a query parameter).

Check your Open Graph tags

Run the free Open Graph Checker to see which tags are missing, invalid, or too small.

Open Graph Checker

How to check

Paste your URL into the Open Graph Checker. Confirm that og:image is present with an absolute https:// URL, that the image actually loads publicly, and that og:title and og:description are both set.

How to fix

  1. Set og:image to a public, absolute HTTPS URLhttps://yourdomain.com/og.jpg.
  2. Keep the image under a few megabytes; a compressed 1200×630 JPEG is usually well within limits.
  3. Include the full core set: og:title, og:description, og:image, and og:url.
  4. Optionally add <meta name="theme-color" content="#…"> — Discord uses this to colour the embed sidebar.
  5. Re-share the link (or append ?v=2 to bust the cache) to get a fresh embed.

Example

A page's og:image points to an image on an internal staging server: https://staging.internal/preview.jpg. Discord's crawler cannot reach that host, so no image appears in the embed. Moving the image to the public production CDN and updating the tag to https://cdn.yourdomain.com/preview.jpg makes the full embed render when the link is re-shared.

Want to maintain this across every route?

Linkraft is coming soon. Use the free tools today, and join the waitlist for route-level fixes, monitoring, and reports.

By joining the waitlist, you agree to receive launch updates from Linkraft. You can unsubscribe at any time.

No spam. Just launch updates and useful resources about metadata, schema, and link previews.