Why Does Discord Show the Wrong Image for My Website Link?
Discord fetches a page when someone shares its link to build a preview. Check the page’s Open Graph metadata and crawler access to find why the image is wrong.
Discord can show the wrong image because its link preview is built from information Discordbot collects after someone shares the URL. Start by inspecting the HTML served for that exact URL, especially the og:image value in the page’s <head>, then check whether Discordbot can fetch the page and image.
Discord says it does not continuously crawl websites on its own: preview generation starts when someone shares a link in a message. Discord also says a linked image or video may be saved temporarily and delivered from Discord’s servers. It does not publish a cache lifetime or promise an immediate refresh. Discord’s link preview and Discordbot guidance
1. Check the metadata for the exact URL
Open the page source for the exact URL people share, and inspect the document’s <head>. The Open Graph protocol defines og:title, og:type, og:image, and og:url as its basic properties. The image value should be the absolute URL of the intended preview image.
<head>
<meta property="og:title" content="Product guide">
<meta property="og:type" content="website">
<meta property="og:url" content="https://example.com/guides/product">
<meta property="og:image" content="https://example.com/images/product-guide.jpg">
<meta property="og:image:alt" content="A preview of the product guide">
</head>
Replace the example domain, path, title, and image with values for your site. Serve the metadata in the HTML response for the page; the protocol specifies these values in the document head. The specification also defines optional image properties including secure URL, MIME type, width, height, and alt text. It describes the protocol, not every detail of Discord’s parser. Open Graph protocol documentation
og:image: does it point to the image you want rather than a logo, default image, or stale asset?og:url: does it correspond to the page URL being shared?og:titleandog:type: are they for this page rather than another route or a site-wide default?- Is the metadata in the response for the specific route? Checking only the home page will not catch route-specific metadata errors.
2. Confirm the image URL and page response are accessible
Open the og:image URL directly in a browser. Confirm it returns the intended image, not an error page, redirect to an unrelated asset, or an outdated file. If your site has access controls, review whether they prevent the page or image from being fetched.
If you manage the server, inspect access logs around the time someone shares the link. Discord documents a Discordbot user-agent pattern, which can help identify fetches. User-agent text can be faked, so do not treat it as identity proof for security-sensitive allowlisting. Discord recommends checking request IP addresses against its current published IP ranges; consult its article for the current list because ranges can change.
Use these checks to distinguish a bad metadata value from a fetch problem:
- Request the exact page URL and verify the returned HTML contains the intended Open Graph fields.
- Request the exact image URL and confirm that it serves the intended image.
- Review server or CDN access controls and logs for the page and image requests.
- If you allowlist Discordbot, validate IP addresses against Discord’s current published ranges rather than relying on the user-agent alone.
3. Correct the metadata, then check the preview again
Update the route’s Open Graph values and ensure the image URL serves the intended asset. Share the URL again as a practical check. Discord documents that linked media may be saved for a while, but does not document a precise cache duration or guarantee that reposting, editing a message, or changing the URL forces an immediate refresh. If the preview still shows an old image after your page and image are correct, the available official guidance does not specify when Discord’s saved copy will be replaced.
4. Separate a website preview issue from a Discord image outage
If one website link has the wrong thumbnail, focus first on that page’s metadata and whether the crawler can reach the page and image. If images fail broadly across Discord, investigate media connectivity instead. Discord’s separate connection troubleshooting recommends checking DNS and whether an ISP, router setting, antivirus, or family-safety filter blocks Discord image services. Its article gives provider examples, but those are not a universal diagnosis. Discord’s image and connection troubleshooting
Or skip the browser setup
If you need to inspect what a page renders, ScreenshotNeo is a website screenshot API and MCP server for developers. It can capture a page as PNG, JPEG, WebP, or PDF. Its API accepts one GET request with a URL; the returned screenshot can help you inspect the rendered page while you separately verify the Open Graph values in the HTML source.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com/guides/product -o shot.webp
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://example.com/guides/product"},
timeout=90,
)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({
access_key: 'YOUR_API_KEY',
url: 'https://example.com/guides/product'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
await Bun.write('shot.webp', res);
Replace YOUR_API_KEY with your key. See the ScreenshotNeo API documentation for request options. Cookie banners, popups, and chat widgets are removed before capture; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers report the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000 screenshots. ScreenshotNeo is at screenshotneo.com.
Sign up for 1,000 free screenshots a month with no card.
Troubleshooting
| Symptom | Likely cause | What to check or change |
|---|---|---|
| The preview shows the site logo or another page’s image | The route has a default or incorrect og:image. |
Inspect the exact route’s returned HTML and set its intended absolute image URL. |
| The source looks correct, but the image URL opens the wrong asset | The asset path, redirect, or deployed file is wrong or stale. | Open the image URL directly and correct the path or deployed asset. |
| Your logs show no apparent crawler request | The request may not have reached the origin, or the log window may be wrong. A user-agent string alone also cannot prove identity. | Check relevant server/CDN logs and access rules around the share. Follow Discord’s guidance to verify IPs against its current ranges if identity matters. |
| The corrected link still shows an old image | Discord may be serving a temporarily saved copy of linked media. | Confirm page and image responses are correct. Discord does not specify a cache TTL or guarantee an instant refresh. |
| Images from many Discord links fail | A DNS, ISP, router, antivirus, or family-safety filter may interfere with image delivery. | Follow Discord’s general image and connection troubleshooting; this broader symptom differs from one page selecting the wrong thumbnail. |
Performance, reliability, and cost notes
- Metadata is the direct fix: an image capture can show how a page renders, but it does not replace checking the HTML metadata that describes the link preview.
- Keep the image URL dependable: use a URL that serves the intended asset and review access controls for both page and image.
- Do not assume immediate cache invalidation: Discord says linked media may be saved temporarily, without a documented duration or guaranteed refresh procedure.
- ScreenshotNeo costs: free includes 1,000 shots per month with no card; Starter is $5 for 3,000, Growth $15 for 15,000, Pro $39 for 60,000, Scale $99 for 250,000, and Business $249 for 1,000,000. Yearly billing gives two months free; every feature is on every plan.
FAQ
Does Discord continuously scan my site?
No. Discord says it fetches page information when someone shares a URL in a message; it does not continuously crawl websites on its own.
Does reposting guarantee a new thumbnail?
No such guarantee appears in the cited Discord guidance. Reposting is a practical check after correcting metadata, but Discord does not document it as a cache purge.
Should I allow requests based only on the Discordbot user-agent?
No. Discord says user-agent strings can be faked and recommends validating IP addresses against its current published ranges for security-sensitive verification.
Will a screenshot tell me what Discord’s crawler received?
A screenshot shows rendered page content. To confirm the metadata Discord may use, inspect the HTML response for the shared URL and check the exact og:image value.


