Free tool · no signup · runs in your browser

Discord Embed Builder

Design a message with up to 10 embeds, see it exactly as Discord draws it, and stay inside every character limit as you type. Copy the JSON or code, or send it to a webhook straight from your browser.

Start from a template

Message

0/2,000

Plain text above the embeds. Markdown works here too.

Embeds

169/6,000
Embed 1 of 1
22/256
95/4,096

Markdown: **bold** *italic* __underline__ ~~strike~~ `code` > quote [text](https://…) # heading -# subtext

Fields3/25
Field 1
5/256
6/1,024
Field 2
5/256
6/1,024
Field 3
4/256
5/1,024
21/2,048

Plain text: Discord does not render markdown here.

Send to a webhook

Channel settings, Integrations, Webhooks, Copy Webhook URL. Not saved anywhere.

Runs in your browser and posts straight to discord.com. Nothing is sent to Conferbot; the webhook URL is never stored.

{
  "embeds": [
    {
      "title": "Welcome to the server!",
      "description": "Glad you made it. Three things to do first:\n> Read the rules, pick your roles, then say **hi**.",
      "color": 5763719,
      "fields": [
        {
          "name": "Rules",
          "value": "#rules",
          "inline": true
        },
        {
          "name": "Roles",
          "value": "#roles",
          "inline": true
        },
        {
          "name": "Help",
          "value": "#help",
          "inline": true
        }
      ],
      "footer": {
        "text": "You are member #1,024"
      }
    }
  ]
}

How the embed limits add up

Every text part of an embed has its own ceiling: 256 characters for the title, the author name and each field name, 4,096 for the description, 1,024 for a field value and 2,048 for the footer. A single embed can hold 25 fields, and a message can carry 10 embeds next to up to 2,000 characters of content.

The limit that catches people is the shared one. Titles, descriptions, field names and values, footers and author names across all embeds in the message must total 6,000 characters or fewer. Links, image URLs, the colour and the timestamp do not count. The meter on the Embeds panel tracks that total, and the send button stays locked while anything is over, so Discord never has to bounce the request.

How Discord lays out inline fields

Fields marked inline share a row: three across on desktop, two when the embed has a thumbnail, because the thumbnail claims the right column. A field with inline off always takes a full row and starts a new one after it. The preview uses the same 12-column grid as the desktop client, so a table of stats that lines up here lines up in the channel. Discord requires both a name and a value; to leave one visually empty, type a zero-width space (​) instead of nothing.

What markdown works where

Descriptions and field values accept the full set: bold, italics, underline, strikethrough, spoilers, inline code and fenced code blocks, quotes with > or >>>, lists, headings with # to ###, small subtext with -#, and masked links written as [text](https://…). Titles and field names take the inline styles but not links (the title links through its own URL field). Footer text and the author name are plain text.

Mentions such as <@user-id> render inside an embed but do not notify anyone, so put a ping in the message content when it matters. Dates are best written as <t:unix:R> so every member sees their own timezone; the Discord timestamp generator writes them for you.

Sending through a webhook

A webhook is the fastest way to post an embed without running a bot. Its URL contains a token, so treat it like a password. The builder posts with wait=true, which makes Discord return the created message instead of an empty 204, and reports failures in plain terms: a 404 or 401 means the webhook was deleted or the URL is cut short, a 400 lists the exact JSON path that broke a rule, and a 429 tells you how many seconds to wait. Webhooks in forum channels need a post title or a thread ID. The override username must be 1-80 characters and may not contain "discord" or "clyde".

For codes not covered here, see the Discord API error reference and the Discord rate limits. If your messages post but the bot never answers, work through why a Discord bot stops responding. When you want a bot that replies to members rather than one-way posts, a hosted Discord chatbot or a ready-made Discord bot template is the shorter path.

Frequently asked questions

What are the Discord embed character limits?

A title can be 256 characters, a description 4,096, a field name 256 and a field value 1,024. Footer text allows 2,048 and the author name 256. On top of those, everything in all embeds of one message must add up to 6,000 characters or fewer. URLs, image links and the colour do not count toward that total. The counters above turn amber near each limit and red past it.

How many embeds and fields can one Discord message have?

Up to 10 embeds per message and up to 25 fields per embed, with message content of up to 2,000 characters alongside them. In practice the shared 6,000-character budget runs out first: ten embeds with long descriptions will not fit in one message. Split long announcements into several messages, or move detail behind a link in the title.

Why are my inline fields not showing side by side?

Discord places at most three inline fields on a row, and only two when the embed has a thumbnail, because the thumbnail takes the right-hand column. Any field with inline turned off breaks the row and takes the full width. On phones the Discord app may stack fields. To push a field onto a new row, put a non-inline field with a zero-width space before it.

How do I send a Discord embed without a bot?

Use a webhook. In the channel settings open Integrations, create a webhook and copy its URL. Paste it into the Send panel above and the message goes straight from your browser to Discord. Webhooks can post embeds, override the display name and avatar, and post into threads, but they cannot read messages or reply to commands. For that you need a bot.

Why does Discord answer 400 Invalid Form Body?

Code 50035 means part of the JSON broke a rule, and the response names the exact path, such as embeds.0.fields.2.value. The usual causes are a field with an empty name or value, a limit that was exceeded, an image URL that is not http or https, or a forum channel webhook called without thread_name. This builder translates each path into plain English.

Is it safe to paste my webhook URL here?

The URL is used only for the request your browser sends directly to discord.com, the same call curl would make. It is not sent to Conferbot and it is not saved; only the draft message is kept in this browser. Anyone holding the URL can post to your channel, so if it leaks, delete the webhook in Server Settings and create a new one.

Related

Want the bot to write the embeds?

Conferbot answers your Discord members around the clock and hands hard questions to your team. Free plan, no card.