Discord Preview Not Updating — Complete URL Unfurl Fix Guide
You updated your page's title, image, or description — but when you paste the link in Discord, it still shows the old embed. Or the embed shows the wrong image, no image at all, or nothing.
This is one of the most common URL unfurl frustrations. This guide covers exactly why Discord previews get stuck, how to check URL metadata before you even try to fix the cache, every method for forcing Discord to refresh, how Discord URL unfurl differs from iMessage URL unfurl, and the advanced edge cases that trip up even experienced server owners.
→ Verify your metadata with TryUnfurl first
Understanding URL Unfurl: How Link Previews Work
Every time you paste a link into Discord, Slack, iMessage, or any modern chat app, the platform runs the same pipeline:
- Crawler fetches the URL with a platform-specific user-agent (Discord's is
Discordbot/2.0). - The HTML head is parsed — Open Graph tags first, Twitter Card tags as fallback, HTML
<title>and<meta description>as a last resort. - The image URL is downloaded to generate a thumbnail.
- An embed card is rendered in the channel.
- The result is cached against the URL so re-shares don't re-hit your server.
That last step is where most "Discord preview not updating" problems live. The crawler did its job correctly at the moment of the first share. It just hasn't been asked to do it again. Understanding that the URL unfurl is cached — not broken — is the key to the fix.
Why Discord Embeds Get Stuck
When you paste a URL into Discord, Discord's crawler fetches the page metadata and generates an embed card. That result is then cached per URL. The next time the same URL is shared, Discord serves the cached version — it doesn't re-fetch the page.
Discord doesn't provide a public cache-clearing tool, so the embed won't update automatically just because you changed your page.
Before assuming it's a caching issue, first confirm your metadata is actually correct. If the tags on your page are wrong, forcing Discord to refresh will just give you a fresh embed showing wrong data.
How to Check URL Metadata Before Sharing
Fixing a Discord URL unfurl starts with knowing what Discord is actually reading. You have three ways to check URL metadata:
- Use TryUnfurl — paste the URL and you'll see the detected
og:title,og:description,og:image, and a rendered Discord-style embed card. Live fetch, no internal cache, no login. - View page source —
Ctrl+U/Cmd+Option+Uin your browser, then search forog:. Every Open Graph tag appears exactly as the server rendered it. - cURL from the terminal — a quick command-line how-to-check-URL-metadata recipe:
curl -sL -A "Discordbot/2.0" https://example.com/your-page \
| grep -iE '<meta (property|name)="(og|twitter)'
If the tags look right in all three places but Discord still shows old data, you're in a caching problem and the fix below is what you need. If the tags are wrong or missing, fix those first.
How to Fix Discord Preview Not Updating
Method 1 — Add a cache-busting query parameter (fastest)
Append a small query string to the URL when sharing:
https://example.com/page?v=2
Discord treats this as a new, unseen URL and fetches fresh metadata. This is the most reliable immediate fix. Increment the number each time you need to force another refresh. If your server respects query strings when generating OG tags, you're done.
Method 2 — Wait for the cache to expire
Discord's embed cache typically expires within a few hours to around 24 hours. If the link isn't time-sensitive, simply wait and re-share.
Method 3 — Share in a fresh message
Delete the original message containing the link and paste it again in a new message. This doesn't bypass the cache for the same URL on its own, but combined with Method 1 it guarantees a fresh fetch.
Method 4 — Clear any intermediate CDN cache
If TryUnfurl shows your new tags but Discord still shows old ones after the query-string bust, there's a CDN serving stale HTML. Clear your CDN cache (Cloudflare, Fastly, CloudFront, Vercel, Netlify) before trying again.
Discord Embed Troubleshooting Table
| Symptom | Likely cause | Fix |
|---|---|---|
| Old embed still showing after page update | Cached embed | Add ?v=2 to URL or wait for cache to expire |
| No embed appears at all | Missing og:title or og:description |
Add Open Graph tags to the page |
| Embed shows but no image | og:image missing, wrong URL, or too small |
Use absolute HTTPS image URL, min 300 × 157 px |
| Image appears cropped or tiny | Wrong image dimensions | Use 1200 × 630 px image |
| Embed worked before, now broken | og:image URL changed or returning 404 |
Fix the image URL and cache-bust with ?v=2 |
| Embed works in browser but not Discord | JavaScript-rendered meta tags | Use server-side rendering — Discord's crawler doesn't execute JS |
| Title shows but image doesn't | Image blocked or too large | Open image URL directly in private browser to test |
| Embed suppressed intentionally | User wrapped URL in < > |
Remove the angle brackets when sharing |
What Discord Reads
Discord generates embeds from these metadata sources, in priority order:
og:titlefor the embed titleog:descriptionfor the embed descriptionog:imagefor the embed imagetwitter:cardandtwitter:imageas fallbackog:site_namefor the site labelog:urlfor the canonical link
Discord does not execute JavaScript when fetching pages. Meta tags must be present in the initial HTML response — not injected by React, Vue, or other client-side frameworks.
Discord Image Requirements
| Requirement | Value |
|---|---|
| Minimum size | 300 × 157 px |
| Recommended size | 1200 × 630 px |
| URL type | Absolute HTTPS only |
| Must be public | Yes — not behind login or blocked by robots.txt |
Preview URL Unfurl Issues on Discord and iMessage
Discord and iMessage look similar to end users — a compact preview card with a title, description, and thumbnail. But the URL unfurl mechanics under the hood are different, and so are the fixes.
How preview URL unfurl on Discord and iMessage compares
| Aspect | Discord | iMessage |
|---|---|---|
| Crawler user-agent | Discordbot/2.0 |
facebookexternalhit/1.1 (yes, really — Apple reuses it) |
| Cache-clear mechanism | ?v=2 query string, or wait |
Delete and re-send the message |
| JavaScript execution | No | No |
| Minimum image | 300 × 157 px | 300 × 300 px |
| Blank/text-only fallback | Yes | Yes |
Responds to <URL> suppression |
Yes (shows no embed) | Partial |
Both platforms rely on Open Graph tags, both cache aggressively, and both have no public cache-clearing tool. The practical playbook for either:
- Check URL metadata first with TryUnfurl — confirms the tags are correct.
- If tags are right and preview is stale — query-string cache-bust on Discord, delete-and-re-send on iMessage.
- If tags are wrong — fix Open Graph in the page, deploy, clear your CDN, then retry.
Full iMessage-specific guidance lives in our iMessage link preview fix guide.
Advanced Discord URL Unfurl Issues
- Bot accounts bypass some caches — if you're using a Discord bot that posts links programmatically, it may see different cache behavior than a human user.
- Signed URL expiry on
og:image— if your image URL is a short-lived signed CDN link, Discord's cached thumbnail may break later. - Rate-limited crawlers — Discordbot may be blocked or rate-limited by your WAF. Check server logs for 403s or 429s from
Discordbot/2.0. - Redirect chains — keep redirects to 1–2 hops. Long chains cause Discordbot to give up.
- Embed suppression — angle brackets around a URL (
<https://example.com>) tell Discord to skip the embed. Sometimes this is pasted accidentally.
Check Your Metadata First
Before trying cache-busting tricks, confirm the issue is caching and not a broken metadata implementation. Paste your URL into TryUnfurl to see exactly what Discord's crawler will read from your page — and if it's a multi-URL audit, use the bulk URL unfurl checker to run up to 100 URLs in one pass.
→ Check your Discord embed metadata now
Frequently Asked Questions
Why isn't my Discord embed updating after I fixed my Open Graph tags?
Discord caches URL unfurl results per URL. Fixing your tags doesn't retroactively update cached embeds. Add ?v=2 (or any query string) to the URL when you re-share, and Discord will treat it as a new URL and fetch fresh metadata.
How long does Discord's embed cache last?
Typically a few hours to about 24 hours, though it can vary. For time-sensitive shares, use a query-string cache-buster rather than waiting.
Does Discord read Twitter Card tags?
Yes, as a fallback. Discord reads Open Graph first, then Twitter Cards. For reliable URL unfurl previews, set Open Graph tags explicitly.
Can I test my Discord URL unfurl without pasting it in a server?
Yes — TryUnfurl renders a Discord-style embed card using the same Open Graph tags Discordbot would read. No server posting required.
How do I preview URL unfurl on Discord and iMessage at the same time?
TryUnfurl renders both platforms (plus Facebook, LinkedIn, Twitter/X, Slack) side by side from a single URL input.
Related Guides
- Slack Link Preview Wrong — same caching problems, different platform
- iMessage Link Preview Not Working — the iMessage equivalent
- Why Link Previews Break — the 7 root causes behind all broken previews
- How to Refresh a Link Preview — step-by-step cache-clearing on every platform
- Preview Image Not Showing — full fix checklist for missing
og:image - Link Preview & Unfurling Guide — complete reference for all platforms and metadata standards