Discord embed not showing or not updating
Discord fetches the page once, reads the tags in the server HTML and caches the embed for about 30 minutes. It never runs your JavaScript.
Last updated
Quick fix
Check the page with the meta tag checker.
Serve the tags in the HTML, with a 2xx response that finishes within 10 seconds.
Add twitter:card summary_large_image for a large image.
Test in Discord’s Embed Debugger or post with ?v=2.
Why the Discord embed is missing or old
The tags come from JavaScript. Discord executes no code, so tags added after load are never seen.
The response isn’t a 2xx. Redirects are fine up to 5, but the final answer must be 2xx with
text/html.The fetch is too slow. The whole fetch, including measuring images and video, must finish within 10 seconds.
Bot protection blocks Discordbot. Pages are fetched with
Discordbot/2.0in the user agent.Discord cached the old embed. Previews are cached for about 30 minutes.
How to fix it
Read the tags with the meta tag checker.
Render
og:title,og:descriptionandog:imageon the server.Add
og:image:widthandog:image:heightso Discord doesn’t have to fetch the image to measure it.Set
twitter:cardtosummary_large_imageif you want the large image below the text.Allow Discordbot through your CDN, then test in the Embed Debugger or post the URL with
?v=2.
Tags Discord reads
og:titleortwitter:title, trimmed at 70 bytesog:descriptionortwitter:description, trimmed at 350 bytesog:site_nameshown above the titleog:imageortwitter:image; two or more og:image tags make a gallery of up to 4theme-colorfor the accent bar, as #RRGGBB or #RRGGBBAAtwitter:cardandog:typefor the layout
Image size rules
Formats: PNG, GIF, JPG, WebP and AVIF
Declare og:image:width and og:image:height
Up to 4 images per link
Whole fetch within 10 seconds and 50 MB
Not verified: Discord doesn’t publish a minimum or recommended pixel size. 1200 x 630 px is a safe choice.
How to force a refresh
Discord caches previews for about 30 minutes. To see changes now, share the URL with a new query string such as ?v=2, or check it in the Embed Debugger. The refresh tool shows the step for every app.
Sources
FAQ
Why does Discord show a small image instead of a large one?
Without layout tags Discord shows text with a small image. Set twitter:card to summary_large_image for the large layout.
How long does Discord cache embeds?
About 30 minutes, according to Discord’s developer docs. Use a new query string to test changes.
Does Discord run JavaScript when it builds an embed?
No. Discord executes no code, so the tags must be in the HTML your server sends.
Check your page, then refresh the preview
Paste your URL into the free checker to see the exact tags each app reads. Once the tags are right, use the refresh tool to clear the old preview.
Related guides
Slack link preview not working or not updating
Slack unfurls links with a bot that reads oEmbed, Open Graph and Twitter Card tags. Results are cached across Slack for about 30 minutes.
X (Twitter) card not showing or not updating
X builds the card from twitter: tags, falling back to og: tags. There is no longer a validator that refreshes the cache, so the fix is good tags plus a fresh URL.
WhatsApp link preview not working or not showing
WhatsApp has strict limits: the head must sit in the first 300 KB of HTML and the image must be under 600 KB. Miss one and you get a small preview or none.