Minimum requirements
Discord needs at least og:title or og:description to generate an embed. No special card-type tag is required, but if both are missing, the URL shows as plain text.
Diagnosis checklist
- Check for
og:titleandog:description: view page source and confirm at leastog:titleexists - Check server-side rendering:
curlthe URL and verify meta tags are in the HTML, not injected by JS - Check
robots.txt: a blanketDisallow: /blocks Discordbot - Check response time: Discord has a ~5-second timeout:
bash time curl -A "Mozilla/5.0 (compatible; Discordbot/2.0; +https://discordapp.com)" https://yoursite.com/page - Check SSL: valid HTTPS required; self-signed or expired certs break embeds
- Check Content-Type: must be
text/html; JSON or other types won’t generate embeds - Check the URL: unusual characters or very long query strings can cause issues
Client-side rendering
Discordbot doesn’t run JavaScript. If your app (React, Vue, Angular, etc.) renders OG tags client-side, you need SSR, pre-rendering, or static meta tags in your HTML template.
User-level settings
The viewer may have disabled link previews. Under User Settings > Text & Images, “Show embeds and preview website URLs pasted into chat” must be enabled. This is a per-user setting, and there’s nothing you can control.
Testing
curl -A "Mozilla/5.0 (compatible; Discordbot/2.0; +https://discordapp.com)" https://yoursite.com/page | grep -i "og:title"If the tag shows up and the response is fast, paste the URL in Discord with ?v=2 appended to bypass cache and confirm the embed renders.