Discord embed checker: test your link preview
Discord builds an embed by fetching the page you paste and reading the tags in its HTML. This page covers what it reads and why an embed goes missing or stays out of date.
Paste a URL. Check My OG reads your tags, downloads the og:image and og:video files, draws the Discord embed and flags a video over Discord's 50 MB limit.
What Discord needs
Discord makes one GET request for the shared URL and parses the HTML that comes back. It runs no code, so tags that a script adds after load are never seen. Discord's docs list these conditions for a preview to appear:
- a 2xx response, served as
text/htmlorapplication/xhtml+xmland not as a download - no more than 5 redirects
- at most 50 MB returned
- the whole fetch, including measuring your image and video, done within 10 seconds
A page with no og: or twitter: tags gets no embed at all, only the link. Check My OG device-tested this on 24 Oct 2026 on the Mac and iOS clients, with a page that had only a <title> and a meta description. Discord's docs say otherwise: they list the <title> and meta description, used as a pair, as a fallback when there are no title and description tags. If you rely on that fallback, test your own page in Discord.
A minimal set that gives a large-image embed:
<meta property="og:site_name" content="Example">
<meta property="og:title" content="Page title">
<meta property="og:description" content="One or two sentences.">
<meta property="og:image" content="https://example.com/card.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="What the image shows">
<meta name="theme-color" content="#5865F2">
<meta name="twitter:card" content="summary_large_image">
| Tag | What Discord does with it |
|---|---|
og:title | The title. Trimmed past 70 bytes (not characters) or 3 lines. |
og:description | Plain text; HTML in it shows literally. Trimmed past 350 bytes or 20 lines. |
og:site_name | Shown above the title. Over 256 characters: no preview at all. |
og:image | PNG, GIF, JPEG, WebP or AVIF. Two to four og:image tags make a gallery. |
og:image:width, og:image:height | Optional. Without them Discord downloads the image to measure it. |
og:image:alt | Alt text. Over 4,096 characters: no preview at all. |
twitter:card | Picks the layout (see below). |
theme-color | The accent color. #RRGGBB or #RRGGBBAA only. |
og:video | An MP4, WebM or MOV file over https. |
Width, height, type and alt tags attach only to og:image and twitter:image. Discord doesn't read them for og:image:secure_url, og:image:url or twitter:image:src, so declare dimensions on the plain tag. A relative image URL must start with /. Any URL over 2,048 characters means no preview.
Discord og:video embeds
Discord plays og:video in an inline player with a play button. It does not autoplay. Check My OG tested this on 24 Oct 2026 on the Mac and iOS clients with a direct MP4. Discord's docs add:
- Point
og:videoat the video file itself, not a player page. og:imageis required and becomes the preview frame.- If Discord can't measure the file and no dimensions are declared, it drops the video and shows a plain link preview.
The docs also ask for og:type set to video.other or twitter:card set to player. In Check My OG's device test the video played on a plain og:type website page without either. The snippet follows the docs:
<meta property="og:type" content="video.other">
<meta property="og:video" content="https://example.com/clip.mp4">
<meta property="og:video:type" content="video/mp4">
<meta property="og:video:width" content="1280">
<meta property="og:video:height" content="720">
<meta property="og:image" content="https://example.com/clip-first-frame.jpg">
An MP4 meant to autoplay in iMessage too has more rules. The og:video guide and the iMessage guide cover them.
How the embed looks
The tags you set decide the layout:
| Tags | Embed |
|---|---|
| Title, description, one image, no layout tag | Text with a small image |
twitter:card = summary_large_image | Text with a large image below it |
twitter:card = photo, or a URL straight to an image file | The image alone, no description |
A video file plus og:type video.other or twitter:card player | Inline player with og:image as the frame, no description |
Two or more og:image tags | A gallery of up to 4 images |
og:type = rich | Description rendered as Discord markdown, small thumbnail |
Discord embed not showing: problems and fixes
| What you see | Fix |
|---|---|
| Only the link, no embed, everywhere | Put the og: tags in the HTML your server sends, not in a script. Make sure the page answers 2xx as text/html within 10 seconds and 5 redirects. |
| Embed shows for others but not for you | Check the viewer's setting "Show embeds and preview website links pasted into the chat" under User Settings, Chat. With it off, links don't preview. |
| No embed in one channel | The sender needs the Embed Links permission there. Links sent without it aren't embedded. |
| No embed for one link | A link wrapped in < > doesn't embed. In a message with more than 5 links, the later ones get no preview. |
| Small image beside the text | Add twitter:card = summary_large_image. |
| A plain card where the video should be | Point og:video at an MP4, WebM or MOV file over https, set og:image, and add og:video:width and og:video:height. Keep the file under 50 MB. |
| Color missing or wrong | Use a 6 or 8 digit hex value in theme-color. Short hex such as #fff and color names don't fit Discord's documented format. |
Check My OG fetches your page as Twitterbot and facebookexternalhit, not as Discord, and it doesn't check theme-color or the 10-second limit. To see Discord's own read of a URL, use Discord's Embed Debugger, which shows the tags it picked up and the layout it chose.
Clear a cached Discord embed
Discord caches a preview for about 30 minutes. Until then, sharing the same URL again shows the old card, even after you change the tags. To see the change now:
- Share the URL with a new query string, such as
?v=2. - Look the URL up in the Embed Debugger.
- When you replace the og:image or og:video file, give the new file a new URL too.
Check My OG reads your page as it is now, so you can confirm the fix before you share the link again. For the same problem in other apps, see the Slack and LinkedIn guides.
Questions
Why is my Discord embed not showing?
Most often the page has no og: or twitter: tags in the HTML the server sends. Discord runs no JavaScript, needs a 2xx text/html response, and gives up after 5 redirects or 10 seconds. If the embed shows for other people but not in one place, check the viewer's embed setting, the sender's Embed Links permission in that channel, and whether the link was wrapped in angle brackets.
How do I change the color of a Discord embed?
Add a theme-color meta tag, such as #5865F2. Discord uses it as the embed's accent color. Its docs accept only 6 or 8 digit hex values (#RRGGBB or #RRGGBBAA).
Why does my Discord embed show a small image?
With a title, description and one image but no layout tag, Discord puts a small image beside the text. Add twitter:card set to summary_large_image to get a large image below the text.
How long does Discord cache a link preview?
About 30 minutes. Until then, sharing the same URL again shows the old embed. Share it with a new query string such as ?v=2, or look the URL up in Discord's Embed Debugger.
Does Discord play og:video?
Yes. It shows an inline player with a play button and does not autoplay. Point og:video straight at an MP4, WebM or MOV file over https, set og:image as the preview frame, and keep the file under 50 MB.
Sources
- Discord Developer Docs: Link Previews (fetch rules, tags, layouts, limits, video, theme-color, caching)
- Discord Developer Docs: Permissions (Embed Links)
- Discord Support: File Attachments FAQ (the "Show embeds" setting)
- Discord Support: How do I disable auto-embed? (angle brackets)
- Check My OG support.json (device tests on the Mac and iOS clients, 24 Oct 2026)