Free tool — no login required

Discord Embed Builder

Build a Discord embed visually with live preview. Set title, color, fields, images, and footer — copy the webhook-ready JSON and paste it into your bot or webhook.

Sits side by side with adjacent inline fields.
Sits side by side with adjacent inline fields.
Discord preview
Welcome to the server!
Read the rules, pick your roles, and say hi in #general 👋
📋 Rules
Read them in #rules
🎮 Channels
Browse the categories
VibeBot • Auto-generated
Webhook JSON — paste in your bot or POST to a webhook URL
embed.jsonjson
{
  "embeds": [
    {
      "title": "Welcome to the server!",
      "description": "Read the rules, pick your roles, and say hi in #general 👋",
      "color": 5793266,
      "footer": {
        "text": "VibeBot • Auto-generated"
      },
      "fields": [
        {
          "name": "📋 Rules",
          "value": "Read them in #rules",
          "inline": true
        },
        {
          "name": "🎮 Channels",
          "value": "Browse the categories",
          "inline": true
        }
      ]
    }
  ]
}

Want a bot that sends these embeds on a schedule?

Announcements, reminders, and auto-posts — describe it, we write the code.

See what you can build

FAQ

How do I send the JSON to a Discord webhook?

POST the JSON to your webhook URL with Content-Type: application/json. From a terminal: curl -X POST -H "Content-Type: application/json" -d @embed.json YOUR_WEBHOOK_URL. From code: fetch(url, { method: "POST", headers, body: JSON.stringify(json) }). The webhook URL comes from your channel's Integrations → Webhooks settings.

What's the difference between embed.color as a hex string and as a number?

Discord's API expects an INTEGER for embed.color (e.g., 5793266 for blurple), NOT a hex string like "#5865F2". This builder converts your hex picker selection to decimal automatically. discord.js's EmbedBuilder.setColor() accepts either; the raw API does not.

Why isn't my image showing up?

Three common causes: (1) URL is not publicly accessible — Discord can't fetch images from localhost or private storage. (2) URL doesn't end in a recognizable image extension (.png/.jpg/.gif/.webp). (3) The host blocks Discord's image proxy via CORS or User-Agent rules. Test the URL by pasting it into a browser; if you can see the image, Discord usually can too.

How many fields can I add to an embed?

Discord caps embeds at 25 fields per embed, with field name max 256 chars and field value max 1024 chars. Total embed size (title + description + all fields + footer + author) max 6000 chars. The builder enforces these limits as you type.

How do "inline" fields work?

Inline fields sit side-by-side instead of stacking vertically. Up to 3 inline fields fit per row on desktop, fewer on mobile. Useful for displaying paired info (Name | Value, Stats grid, key-value pairs). Mix inline and non-inline fields for layout control — non-inline fields force a line break.

Want this embed in a working bot?

Build a Discord bot that sends embeds like this on schedule, in response to commands, or when events happen. No code, deploy in 30 seconds.

Build my Discord bot