OG Image Not Showing on Discord? 7 Fixes That Work

Discord link previews not showing your image? Here are 7 proven fixes for broken Discord embeds — including cache clearing, image size requirements, and SSL issues.

1. Discord has a strict image size limit: 8 MB

Discord's bot (Discordapp.com/channels, not your browser) fetches OG images itself and enforces an 8 MB file size limit. Images over 8 MB silently fail — no embed, no error. Keep your OG images under 2 MB to be safe.

Compress your PNG/JPEG before deploying:

# Check current OG image size
curl -sI "https://yourdomain.com/og/page.png" | grep content-length

# Compress with ImageMagick (target under 1MB)
convert og.png -quality 85 -strip og-compressed.png

2. Discord cached the old embed — paste in a new message

Discord caches embeds per-URL. There's no manual "clear cache" button like LinkedIn's Post Inspector. The workaround is to add a cache-busting query parameter to your URL:

# Add a query param to force Discord to re-scrape
https://yourdomain.com/blog/my-post?v=2

# Or use a timestamp
https://yourdomain.com/blog/my-post?t=1711193400

This is only for testing — don't share the cache-busted URL publicly in production. After confirming the embed works, share the clean URL.

3. SSL certificate errors block Discord's fetcher

Discord's embed fetcher is strict about SSL. If your domain has an expired, self-signed, or misconfigured certificate, Discord silently skips the embed entirely.

Verify your SSL certificate:

curl -vI "https://yourdomain.com/og/page.png" 2>&1 | grep "SSL certificate"
# Should see: SSL certificate verify ok

4. Embeds suppressed by angle brackets in Discord

In Discord, wrapping a URL in angle brackets <https://yourdomain.com> suppresses the embed. This is by design — Discord uses it to share links without previews. Remove the angle brackets to restore the embed.

5. Missing or incomplete OG tags

Discord requires at minimum og:title and og:image to generate a rich embed. Without them, it shows only a plain link.

<meta property="og:title"       content="Your Page Title" />
<meta property="og:description" content="A short description." />
<meta property="og:image"       content="https://yourdomain.com/og/page.png" />
<meta property="og:url"         content="https://yourdomain.com/your-page" />

<!-- Discord also reads Twitter Card tags as fallback -->
<meta name="twitter:card"  content="summary_large_image" />
<meta name="twitter:title" content="Your Page Title" />
<meta name="twitter:image" content="https://yourdomain.com/og/page.png" />

6. og:image URL is not accessible from Discord's servers

Discord fetches OG images from its own servers. If your image is behind authentication, a VPN, or IP allowlist (e.g., only your office IP), Discord's fetcher can't access it.

Test accessibility from an external IP:

# Test with curl from your server (simulates an external request)
curl -I "https://yourdomain.com/og/page.png"
# Expected: HTTP/2 200, Content-Type: image/png

7. Server returned 5xx or slow response

Discord's embed timeout is aggressive — typically under 5 seconds. If your OG image or page takes too long to respond, Discord drops the embed silently. This commonly happens with:

  • Dynamic OG image generation on cold start (serverless functions)
  • Large uncompressed images that take time to transfer
  • 5xx errors from the server

Fix: Cache generated OG images at the CDN edge, or pre-generate them at build time and serve them as static assets.

Discord embed quick checklist

  • OG image file size is under 8 MB (preferably under 2 MB)
  • og:image URL is absolute (https://...)
  • URL is NOT wrapped in angle brackets <> when pasting
  • SSL certificate is valid
  • og:title and og:image are present
  • Image loads in under 5 seconds from a clean connection
  • Embeds are not disabled in the channel settings

Verify your Discord OG embed

Paste your URL into OGFixer to preview exactly how your link will appear in a Discord message — including the embed image, title, and description — before sharing it with your community.