Discord Embed Builder
Design rich embeds • Live preview • Copy webhook JSON or send it
Live preview
Webhook JSON
Send to a webhook
🔒Your webhook URL is used only for this send — it is never saved, never leaves your browser except to Discord, and never appears in the JSON above.
From a visual form to valid webhook JSON
A Discord embed is a structured card with strict fields and limits, posted by a webhook or bot as JSON. Here is how the anatomy, the live preview, the JSON output, and the send step fit together — all in your browser.
Every part of a rich embed card
An embed is the rich, colored card a bot or webhook posts instead of plain text. It has a colored side bar, an author row with icon, a title and description, up to 25 inline or stacked fields, a small thumbnail, a large image, and a footer with timestamp.
This builder exposes each of those as a simple form control, so you compose the card without hand-writing a single brace. Fields you leave blank are dropped from the output, which keeps the payload valid and avoids the empty-object errors that break a webhook post.
See it exactly as your server will
The preview on the right redraws on every keystroke, matching Discord's own spacing, colors, and truncation. What you see is what your channel sees — including how a long title wraps and where the side bar color lands.
Because the preview mirrors Discord's real limits, you catch overflow before you post: a description past 4096 characters or a 26th field shows up here first. No round-trip to a test channel, no deleted messages cleaning up after a failed send.
The JSON a webhook or bot expects
The Webhook JSON panel always mirrors your embed as a valid payload. Copy it into discord.js, discord.py, or a raw REST call — the color is emitted as the decimal integer Discord expects, not a hex string, and empty parts are dropped so the payload never breaks.
This makes the tool a fast scaffold for bot developers: design visually, copy the embeds array, and paste it straight into your command handler. The output stays in sync with the preview, so the card you approved is the card your code sends.
Send to a channel without leaking the URL
To post right now, paste a webhook URL into the Send box and click once — the embed lands in that channel. The webhook URL is held in the page's memory only while the tab is open.
It is never written to storage, never included in the copied JSON, and never sent anywhere except directly to Discord's API on the send you trigger. Everything else runs locally with no account and no logging, so designing an embed leaks nothing.
Frequently Asked Questions
What is a Discord embed?
An embed is the rich, colored card a bot or webhook can post instead of plain text — with a title, description, colored side bar, fields, thumbnail, image, and footer. This builder gives you a visual form and a live preview, then outputs the exact JSON a webhook or bot expects.
How do I get a Discord webhook URL?
In your Discord server open Server Settings → Integrations → Webhooks → New Webhook, pick a channel, and click Copy Webhook URL. You need the Manage Webhooks permission. Paste that URL into the Send box here to post your embed straight to that channel.
Is my webhook URL stored anywhere?
No. The webhook URL is held only in the page's memory while the tab is open. It is never written to localStorage, never included in the copied JSON, and never sent anywhere except directly to Discord when you click Send. Close the tab and it is gone.
Can I use this embed JSON with a bot like discord.js or discord.py?
Yes. Click Copy JSON and drop the embeds array into any bot library — discord.js, discord.py, or a raw REST call. The color is emitted as the decimal integer Discord expects, and empty fields are omitted so the payload stays valid.
What are the Discord embed limits (character count and field count)?
Discord caps a single embed at 256 characters for the title, 4096 for the description, 25 fields (256-char name, 1024-char value each), 2048 for the footer, and 6000 characters total across one message's embeds. This builder mirrors the live preview so you can spot when a long description would overflow before you send.