If you paste a link to your website in a Discord channel, a small card appears automatically: title, description, and an image. You didn’t have to ...
For further actions, you may consider blocking this person and/or reporting abuse
A great addition to the DEVengers discord server that I do not have time to build yet lmao. Though, nice UI! :)
Thanks!
The requirement that Open Graph tags are present in server-rendered HTML is an easy detail to miss. A practical deployment check is to fetch the initial HTML in CI and assert the title, description, and image tags before testing Discord-specific components. That catches client-only metadata regressions before a link preview is shared.
Yes good ideas to integrate CI !
One detail worth emphasizing is that the fallback preview should be treated as a first-class experience, not just a safety net. Even if the custom embed payload is valid, different clients or rendering failures can leave users seeing only the standard Open Graph card. I’d validate both paths in CI: confirm the server-rendered metadata is complete, then check that the custom payload stays within Discord’s schema and size limits. That way, richer previews improve the experience without making the basic link preview fragile. Progressive enhancement feels like the right principle here; custom rendering should add value, while the underlying metadata remains dependable.
The 3,000-byte limit on the external JSON is a useful detail. Do you measure the encoded byte length during the build, especially for translated titles or emoji? A payload can look short while its UTF-8 size tells a different story.
You can do that Yes!
Great write-up on Discord Component Embeds!
Moving from standard OG cards to rich interactive component embeds (Type 17 Container with buttons and Media Gallery) makes link previews look so much more native on Discord.
A couple of thoughts/questions:
Cache Busting: Using ?v=2 for cache invalidation is super helpful during testing! Does Discord respect standard HTTP cache headers (like Cache-Control: no-cache), or is ?v=N query params the only reliable way?
Media Gallery vs Thumbnail: Totally agree on choosing Media Gallery over Thumbnail—the full-width banner view looks way better for blog articles.
Thanks for sharing the payload structure and common pitfalls (especially the 10-second timeout limit)!
Thank you for reading the post! Happy to read your feedback!
I don't know if the Cache-Control bypass the cache of Discord (behind it's Cloudflare). Need to be tested 😁
I really like the idea of bringing more of the web’s SEO mindset into Discord. It’s easy to forget that Discord content can be useful beyond the people already inside a server, especially when communities are discussing very specific topics.
The practical side of this is what caught my attention. Small improvements to how links, previews, titles, and metadata are handled can make a big difference in how content is discovered and shared.
I also like that this approach doesn’t try to turn Discord into a traditional website. It’s more about making the content that already exists there easier for people (and search engines) to understand.
Definitely an interesting intersection between community platforms and the open web.
Yes! Thanks for read my post!