๐ŸŽจ 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 columnsโ‡„Swap 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#

FormatSyntaxResult
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> textBlockquote
Spoiler`||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}
        ]
    }]
})