Discord reads Open Graph, renders a wide embed when the message has room, and switches to a compact layout with a small square thumbnail when it does not. Both come from the same og:image, which is why the corner-safe rule matters more here than on any other platform.
What Discord reads
- og:title for the embed title, truncated around 256 characters.
- og:description for the body, capped at 2048 characters but visually clipped much earlier.
- og:image for the large embed image; some clients fall back to twitter:image.
- og:site_name for the small label above the title.
- og:type and og:url for the link target and embed type.
Why the image silently fails
- 01 The image returns a non-200 status to the unfurler, often because of a hotlink rule or a signed URL that expires.
- 02 The file is served with the wrong content type, so Discord refuses to decode it.
- 03 The image is under roughly 300 × 200, and the embed falls back to text.
- 04 The URL requires cookies or a challenge page, which the unfurler cannot complete.
- 05 The page itself returns a redirect chain that ends without tags.
The square thumbnail in compact mode
In compact mode Discord crops og:image to a square and places it on the right. A card designed with a wordmark on the far right puts that wordmark under the crop line. Keep the focal point within the centre 60% of the canvas and both layouts survive.
Beating the cache
Discord keys its embed cache on the full URL string. Appending any query parameter creates a new cache entry, which makes it the fastest way to test a fix. This only proves the tags are correct — for real shares you want the clean URL, so fix the tags before the first public post.
# Discord's unfurler identifies as Discordbot
curl -A "Mozilla/5.0 (compatible; Discordbot/2.0; +https://discordapp.com)" \
-s https://example.com/article | grep -E 'og:(title|image|description)' Getting both layouts right
Design at 1200 × 630, keep content inside the central safe area, and verify the square crop by literally cropping the file to a centre square before publishing. If the cropped version still reads as your brand, the embed is done.