Guide

Component embed vs Open Graph in Discord

Open Graph supplies title, description, image, and theme-color when Discord cannot render a component embed. A component embed is richer HTML-adjacent JSON Discordbot reads from the same URL. You should always send OG tags, even on a perfect embed, because older clients and failed crawls fall back.

What each is for

OG answers “what is this link?” A component embed answers “what can I do?” — Buy, Docs, RSVP. Tinycord writes both on GET /p/{slug}.

If the JSON is invalid, over 40 nodes, or blocked by a WAF, users still see a respectable OG card instead of nothing.

Which one should you ship?

Both. Keep complete Open Graph tags on every page, then add a component embed where a button helps: launches, pricing, docs, events, and waitlists.

You can compare them side by side on the Tinycord homepage: paste a URL and switch between the plain link tile and the card with buttons.

Common questions

Does Discord still use Open Graph tags?
Yes. Open Graph title, description, image, and theme-color are the fallback whenever Discord does not render a component embed for a link.
Can an Open Graph preview have buttons?
No. Open Graph only describes the page. Clickable link buttons need a Discord component embed on the same URL.

Try it on your own page

Or browse the examples gallery.

Create a card