🎨 Discord Embed Builder

Build Discord message embeds with a live preview GUI, an AI-powered IDEA chat agent, or raw JSON editor — then copy the output directly into webhook payloads or bot code.

🚀 Open the Builder

The full interactive builder is available at:

🎨 Open Discord Embed Builder →

Features:

  • ✅ Full Svelte 5 component — no external CDN dependencies
  • Three modes: GUI editor, IDEA chat agent, JSON editor
  • Split-screen layout — editor + preview side-by-side (50/50 on large screens)
  • Compact preview toggle — shrink preview to sidebar or full split
  • IDEA chat agent — describe your embed in natural language, get a generated embed
  • ✅ Live Discord-style preview (dark theme)
  • ✅ Multi-embed support (up to 10)
  • ✅ Accordion sections with collapse/expand
  • ✅ Select dropdown for preset templates
  • ✅ Image upload modal for thumbnail/image/footer/icon URLs
  • ✅ Color picker with presets + hex input + native color input
  • ✅ All 25 embed fields with character counters
  • ✅ Webhook URL input + “Test Send” button
  • ✅ Copy JSON / Download .json file
  • ✅ Reverse columns, hide username, verified badge toggles

💡 IDEA Chat Agent

The IDEA mode lets you describe what you want in plain English and generates an embed automatically.

How it works

  1. Click the IDEA button in the toolbar
  2. Type a description like: “Match starting, lobby !2a3f, 4/8 players, green color”
  3. Press Enter or click the send arrow
  4. The agent parses your intent and generates an embed
  5. Click “Apply to Editor” to load it into the GUI editor
  6. Refine in GUI mode or send directly via webhook

Supported intents

IntentTriggersAuto-generates
Match Starting”match”, “game start”, “lobby”, “join”, “queue”Title, lobby field, player count, mode, green color
Announcement”announce”, “news”, “update”, “patch”Title, description placeholder, blurple color
Event”event”, “tournament”, “weekend”, “double”, “season”Title, start/end/reward fields, yellow color
Service Alert”alert”, “down”, “issue”, “outage”, “maintenance”Title, description, red color, timestamp
Welcome”welcome”, “hello”, “new user”, “greet”Title, welcome message, green color

Quick prompts

Click any quick-prompt button to auto-fill the chat input:

  • 🎮 Match starting, green
  • 📢 Server announcement
  • 🎉 Weekend event, double XP
  • ⚠️ Service alert, red

Field extraction

The agent extracts fields from patterns like:

  • Name: Value (colon-separated)
  • Name - Value (dash-separated)

Example: “Match starting. Lobby: !2a3f. Players: 4/8. Mode: Free-for-all” generates three inline fields.

Color detection

Mention any of these colors in your text: green, red, blue, yellow, orange, purple, pink, teal, gray, white, black.


🖥️ Split-Screen Layout

The builder uses a side-by-side split layout on large screens:

ModeEditorPreview
Full split (default)50% width, scrollable50% width, scrollable
Compact preview (toggle)~60% widthFixed 384px sidebar
Preview hidden100% widthHidden

Layout controls

ButtonIconAction
Toggle preview👁 / 👁‍🗗Show or hide the preview pane
Compact preview▐▌Toggle between full split and compact sidebar
Reverse columnsSwap editor and preview positions

Both panes scroll independently with max-height: 80vh.


Quick Reference — All Embed Fields

Text Fields

FieldKeyMax LengthNotes
Message contentcontent2,000 charsOutside embed, supports markdown
Titletitle256 charsSupports markdown
Descriptiondescription4,096 charsFull markdown, links, code blocks
Field namefields[].name256 charsMax 25 fields per embed
Field valuefields[].value1,024 charsSupports markdown
Footer textfooter.text2,048 chars
Author nameauthor.name256 chars

URL / Image Fields

FieldKeyNotes
Author iconauthor.icon_urlImage URL (http/https)
Author URLauthor.urlClickable link on author name
Thumbnailthumbnail.urlSmall image top-right of embed
Imageimage.urlLarge image below embed body
Footer iconfooter.icon_urlSmall icon left of footer text

Visual / Other

FieldKeyTypeNotes
ColorcolorInteger or #RRGGBBLeft border accent color
TimestamptimestampISO 8601 stringe.g. 2026-01-15T12:00:00.000Z
Inline fieldsfields[].inlineBooleantrue = up to 3 fields per row

Interactive Elements — Complete Reference

Buttons

ButtonLocationAction
GUI / IDEA / JSONToolbar (mode toggle, join buttons)Switch between visual, chat, and JSON editor modes
ClearToolbar (↻ icon)Reset all fields to empty
CopyToolbar (📋 icon)Copy JSON to clipboard (auto-clears after 2s)
DownloadToolbar (↓ icon)Save embed as .json file
Color PickerToolbar (🎨 icon, toggle)Open/close color picker panel
PresetsDropdown menuLoad preset: Match Start, Announcement, Event, Alert
MoreDropdown menu (⋮)Reverse columns, hide username, verified badge
Add EmbedEmbed tab barAdd new embed (max 10)
Remove Embed✕ on embed tabDelete that embed
Add Field”New Field” buttonAdd field to active embed (max 25)
Remove Field🗑 per fieldDelete that field
Upload Image🔎 per URL inputOpen image upload modal
Send to DiscordFooter bar buttonPOST JSON to configured webhook URL
ApplyImage upload modalConfirm image URL selection
Apply to EditorIDEA chat (after generation)Load generated embed into GUI editor
Clear ChatIDEA chat headerReset chat history
Quick PromptsIDEA chat (below messages)Auto-fill chat input with example prompts

Select Dropdowns

SelectOptionsPurpose
Preset templatesMatch Starting, Announcement, Event, Service AlertLoad pre-configured embed layouts
Bot usernameFunday Bot, Matchmaker, Game AlertQuick-change bot identity
ModalTriggerInput Fields
Image Upload🔎 button on any URL inputImage URL text input + preview

Text Inputs

InputTypePlaceholder
Message contenttextareaMessage text outside the embed
Author nametextAuthor name
Author URLtexthttps://…
Author icon URLtexthttps://…
TitletextEmbed title
Title URLtexthttps://…
DescriptiontextareaEmbed description
Field name × NtextField name
Field value × NtextareaField value
Thumbnail URLtexthttps://…
Image URLtexthttps://…
Footer texttextFooter text
Footer icon URLtexthttps://…
Timestampdatetime-local
Color hextext (no #)41f097
Color nativecolor inputNative OS color picker
Webhook URLtexthttps://discord.com/api/webhooks/
JSON editortextarea (monospace)Full JSON payload
IDEA chat inputtextDescribe your embed…

Checkboxes

CheckboxDefaultPurpose
Inline (per field)uncheckedDisplay field inline (3 per row)

Accordion Sections (Collapsible)

Click any header to collapse/expand:

  • Author — name, URL, icon URL
  • Title — title text, title URL
  • Description — markdown body
  • Fields — up to 25 fields with name/value/inline/delete
  • Thumbnail — thumbnail URL
  • Image — main image URL
  • Footer — text, icon URL, timestamp

Color Picker

ElementTypeDetails
12 preset swatchesButtonsBlurple, Green, Yellow, Fuchsia, Red, etc.
Hex inputText (no #)0-6 character hex code
Native color input<input type="color">OS color picker
ResetButton (↩)Clear color
Badge indicatorVisual”Filled” badge shows on section headers when data present

JSON Output Structure

Single Embed

{
  "content": "Optional message text",
  "username": "Funday Bot",
  "avatar_url": "https://...",
  "embeds": [
    {
      "title": "Embed Title",
      "description": "Description with **markdown**",
      "url": "https://funday.gg",
      "color": 3066993,
      "timestamp": "2026-01-15T12:00:00.000Z",
      "author": {
        "name": "Author Name",
        "url": "https://...",
        "icon_url": "https://..."
      },
      "thumbnail": { "url": "https://..." },
      "image": { "url": "https://..." },
      "footer": {
        "text": "Footer text",
        "icon_url": "https://..."
      },
      "fields": [
        { "name": "Field 1", "value": "Value", "inline": true },
        { "name": "Field 2", "value": "Value", "inline": true }
      ]
    }
  ]
}

Discord Markdown

| Format | Syntax | Result | | :------------ | :--------------------- | :----------------- | ----------- | | Bold | **text** | text | | Italic | *text* or _text_ | text | | Underline | __text__ | text | | Strikethrough | ~~text~~ | text | | Code inline | `code` | code | | Code block | ```lang\ncode\n``` | Syntax highlighted | | Quote | > text | Blockquote | | Spoiler | \|\|text\|\| | | Hidden text | | Links | [text](https://...) | Clickable |


Send via Webhook — Code Examples

cURL

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"username":"Funday Bot","embeds":[{"title":"🎮 Match Starting","description":"A new match of **Sister Brawl** is ready!","color":3066993,"fields":[{"name":"Lobby","value":"!2a3f","inline":true},{"name":"Players","value":"4/8","inline":true}]}]}' \
  'YOUR_WEBHOOK_URL'

JavaScript

const payload = {
  username: "Funday Bot",
  embeds: [
    {
      title: "🎮 Match Starting",
      description: "A new match of **Sister Brawl** is ready!",
      color: 3066993,
      fields: [
        { name: "Lobby", value: "!2a3f", inline: true },
        { name: "Players", value: "4/8", inline: true },
      ],
      timestamp: new Date().toISOString(),
    },
  ],
}
await fetch("YOUR_WEBHOOK_URL", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify(payload),
})

Python

import requests
requests.post("YOUR_WEBHOOK_URL", json={
    "username": "Funday Bot",
    "embeds": [{
        "title": "🎮 Match Starting",
        "description": "A new match ready!",
        "color": 3066993,
        "fields": [
            {"name": "Lobby", "value": "!2a3f", "inline": True},
            {"name": "Players", "value": "4/8", "inline": True}
        ]
    }]
})