Why this happens
Discord's unfurler fetches og:image when a link is pasted into a channel. The embed
image is skipped when:
og:imageis a relative URL — Discord needs a fullhttps://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:titleorog:descriptionis 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).
Run the free Open Graph Checker to see which tags are missing, invalid, or too small.
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
- Set
og:imageto a public, absolute HTTPS URL —https://yourdomain.com/og.jpg. - Keep the image under a few megabytes; a compressed 1200×630 JPEG is usually well within limits.
- Include the full core set:
og:title,og:description,og:image, andog:url. - Optionally add
<meta name="theme-color" content="#…">— Discord uses this to colour the embed sidebar. - Re-share the link (or append
?v=2to 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.