Lotamyst / Discord Tools / Discord Embed Builder

Discord Embed Builder

Design an embed visually, watch a pixel-faithful preview update live, then copy the JSON or fire it straight at a webhook.

Author
0 / 256
Body
0 / 256
0 / 4,096
Fields 0 / 25

Fields need both a name and a value to be sent — incomplete ones still preview, but are left out of the JSON. Inline fields sit up to three per row.

Media

Direct https image links work best; some hosts block hotlinking so the preview may stay blank even if Discord can load it.

Footer
0 / 2,048
Live preview
Lotamyst Webhook APP
Your embed appears here — start typing on the left…
0 / 6,000 total characters
Embed JSON
Add content to generate the JSON…

Empty keys are omitted — this is exactly the {"embeds":[…]} payload a bot or webhook expects.

Send via webhook

🔒 Used for this one request only — never stored, never logged, and sent nowhere except directly to Discord from your browser.

Discord applies these per message, not per webhook — so one webhook can post as several different-looking bots. Leave both blank to use whatever the webhook was created with.

0 / 2,000

Sending happens browser → Discord directly. Some ad-blockers / privacy extensions block requests to discord.com — if it fails instantly, allow this page or copy the JSON instead.

Saved embeds

Saves the whole form as a reusable template (max 20, stored in your browser). Webhook URLs are never saved.

    How to use

    1. Build it — every part is optional; fill in what you want and the preview updates as you type. Description and field values render Discord markdown.
    2. Watch the meters — Discord hard-rejects embeds over its limits, so a meter turning red means the send will fail until you trim.
    3. Ship it — copy the JSON for your bot code, or paste a webhook URL and send it straight into a channel.

    Where do I get a webhook URL? In Discord: Server Settings → Integrations → Webhooks → New Webhook, pick a channel, then Copy Webhook URL. You need the Manage Webhooks permission. Treat the URL like a password — anyone who has it can post to that channel.

    Discord embed limits

    PartLimit
    Title256 characters
    Description4,096 characters
    Fields25 fields — name 256, value 1,024 each
    Author name256 characters
    Footer text2,048 characters
    Everything combined6,000 characters per message (across all embeds)
    Message content2,000 characters (separate from the 6,000)

    The meters on this page track all of these live, including the combined 6,000 total.

    About this tool

    Embeds are the rich cards bots and webhooks post — a colored side bar, structured fields, images and a footer. Hand-writing the JSON means guessing what it will look like and tripping over limits; this builder shows you exactly what Discord will render while you type, in a faithful dark-mode preview down to the inline-field grid and the 80px thumbnail.

    Everything runs in your browser. The webhook send is a single direct POST from your browser to Discord with Content-Type: application/json — no middleman server, and the webhook URL is never stored.

    FAQ

    Is my webhook URL stored anywhere?

    No. It lives only in the input box on your screen and is used for the single POST request your browser makes directly to Discord. It is never saved, logged, or sent to any other server — reloading the page wipes it.

    Why did sending my embed fail?

    Common causes: the webhook was deleted or the URL is wrong (Discord answers 401/404), a limit was exceeded (400 — check for red meters), you're rate-limited (429 — wait a moment), or a browser extension / ad-blocker blocked the request to discord.com before it even left your machine.

    Can I send more than one embed at once?

    This builder produces one embed, but a webhook message accepts up to 10. Copy the JSON and duplicate the object inside the embeds array — the 6,000-character total then applies across all of them combined.

    Which parts of an embed support markdown?

    The description and field values support full markdown including masked [text](url) links. Titles and field names render basic formatting like bold and italic. Author names and footer text are always plain text.

    Why doesn't my image show in the preview?

    It must be a direct https:// link to an image file, and some hosts block embedding on other sites. attachment://file.png references are kept in the JSON but only work from bot code that uploads the file alongside.

    Related tools