Caching & Invalidation

How Discord caches embed data and how to force a refresh

Cache duration

Discord caches embed data for an unspecified period, typically 20 minutes to several hours. There’s no documented TTL and no public invalidation tool.

Forcing a refresh

Query parameter

Most reliable approach: add or change a query parameter.

https://example.com/page?v=2

Discord caches by exact URL, so this triggers a fresh crawl. The old URL’s cache remains stale.

Edit or re-post

Editing a message with a link may trigger a re-fetch. Deleting and re-pasting also works, though it may still hit the URL-level cache.

Change the image URL

If the stale data is the image specifically, change the og:image URL itself, not just the file at that URL. Discord’s CDN caches images separately from metadata.

Two separate caches

Discord maintains separate caches for metadata (title, description, embed structure) and images (proxied through Discord’s CDN). They expire independently, so you can end up with updated text but an old image, or vice versa. Changing the og:image URL is the only reliable way to force an image update without waiting.

Common problems

  • Tags updated but old embed showing: wait for expiry or use a query parameter
  • Different embeds in different servers: cached at different times, showing different versions
  • Image updated but old one still showing: CDN cached the image separately; change the og:image URL
  • Embed disappeared: your server probably returned an error during re-crawl, and Discord cached that