Embed Maker
Build a Discord embed with a live preview, copy the JSON for your own bot, or send it straight to a webhook. Supports Components V2 containers and buttons, which the older builders do not.
Message
Text outside the embeds. Mentions here ping people; mentions inside an embed do not.
Who it appears to be from
Applies when the message is sent through a webhook. Copied JSON carries the keys either way.
Embeds1/10
180 / 6,000Markdown works here: **bold**, *italic*, __underline__, ~~strike~~, `code`, > quotes, lists, and [links](https://example.com). The preview shows exactly what Discord will.
Discord renders no markdown in a footer or an author name. Asterisks there stay asterisks.
Fields2/25Drag the handle to reorder.
Buttons
Link buttons, for the whole message. These require Components V2 - a classic embed cannot carry them.
Preview
How the message will look in a channel.
Server rules
Read these before posting. Breaking them gets you a timeout, not a warning.
Be decent
No harassment, slurs or witch-hunts.
Stay on topic
Off-topic chat belongs in #general.
180 / 6,000 characters across 1 embed
Output
Classic embeds work everywhere. Components V2 adds containers and buttons.
{
"embeds": [
{
"color": 5793266,
"title": "Server rules",
"description": "Read these before posting. Breaking them gets you a timeout, not a warning.",
"fields": [
{
"name": "Be decent",
"value": "No harassment, slurs or witch-hunts.",
"inline": true
},
{
"name": "Stay on topic",
"value": "Off-topic chat belongs in #general.",
"inline": true
}
]
}
]
}Send to a webhook
Posts straight to the channel. The URL stays in your browser and never reaches us.
Treat a webhook URL like a password: anyone holding it can post to that channel. Get one from Channel Settings β Integrations β Webhooks.
Embeds, and what replaces them
An embed is the bordered card a bot or webhook posts instead of plain text: a coloured stripe down the left, a title, a description, up to 25 fields, and images. It is what most rule channels, announcements and bot replies are made of.
Discord has since added Components V2, a newer layout system with containers, sections, media galleries and, most importantly, buttons. A classic embed cannot carry a button at all. Switch the output mode above and this tool emits Components V2 instead, using the same renderer the discords.ai bot posts its own messages with.
One trade-off to know: setting the Components V2 flag disables content, embeds, poll and stickers on that message. The tool handles the conversion, but it means a message is one or the other, never both.
The limits that actually bite
Discord enforces a limit per field and a combined ceiling of 6000 characters across the title, description, every field name and value, the footer and the author. Exceed any one of them and the entire message is rejected with a 400 that names nothing useful. The counter under the preview tracks the combined total as you type, so you find out before you press send rather than after.
The other one people hit: a field with a name but no value, or a value but no name, is rejected outright. Leave both blank and it is simply ignored.
Sending it
Copy the JSON into your own bot, or paste a webhook URL and send it straight to a channel. Create a webhook under Channel Settings β Integrations β Webhooks. The request goes from your browser directly to Discord. The URL is never sent to us and nothing is stored. Treat it like a password anyway: anyone who has it can post to that channel until you delete it.
Mentions behave differently inside an embed. @everyone in the message text above the embed pings; the same text inside the embed renders as a mention but notifies nobody.