Vorla
Get Launcher

Discord Embed Builder

Design an embed against a faithful preview, then copy the JSON or fire it straight at a webhook. The role color helper scores any color on Discord's dark, light and midnight themes.

Tool mode
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 when Discord can load it.

Footer

0 / 2,048

Live preview

Vorla WebhookAPP

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 to Discord directly. Some ad blockers and privacy extensions block requests to discord.com. If it fails instantly, allow this page or copy the JSON instead.

Saved embeds

Keep the whole form as a reusable template. Webhook URLs are never saved.

  • Nothing saved yet. Build an embed, add a label, then save it.

Discord embed limits

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

PartLimit
Title256 characters
Description4,096 characters
Fields25 fields, name 256 and 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

Build a role hierarchy

Name the roles you plan to create, then copy the whole list. Each row carries its worst score across the three themes, so a role that reads badly is obvious before anyone joins.

  • Dark 3.31 · Light 3.44 · Midnight 5.09 worst 3.31:1
  • Dark 4.44 · Light 2.57 · Midnight 6.82 worst 2.57:1
  • Dark 4.01 · Light 2.84 · Midnight 6.16 worst 2.84:1
  • Dark 5.28 · Light 2.16 · Midnight 8.12 worst 2.16:1
Role palette, scored on Discord dark, light and midnight
Built with vorla.dev/discord/embed-builder/

Owner      #E74C3C   worst 3.31:1  (AA large only)
Admin      #E67E22   worst 2.57:1  (Fail)
Moderator  #3498DB   worst 2.84:1  (Fail)
Member     #99AAB5   worst 2.16:1  (Fail)

How it works

How to use the builder

  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 past its limit 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, since anyone who has it can post to that channel.

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, 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, with no middleman server, and the webhook URL is never stored.

How Discord picks which color a name gets

A member's name takes the color of their highest role that has one. Roles left on the default color are skipped entirely, so an Admin role sitting at the top of the list with no color set falls through to whatever colored role is below it. Position decides this, not permissions: drag the role up or down in Server Settings, Roles to change which color wins.

Discord stores the color as a 24-bit integer rather than a string, which is why the API, audit logs and most bots report #E74C3C as 15158332. The one value that behaves oddly is #000000: it maps to 0, and Discord reads 0 as no color at all, so a role set to pure black is treated as uncolored and gets skipped like any other default role.

Why no role color passes AA on both themes

Dark theme renders the name on #313338 in chat and #2b2d31 in the member list. Light theme uses #ffffff and #f2f3f5. Those backgrounds are far enough apart that a single color cannot clear 4.5:1 against both. Score the chat panes alone and the arithmetic caps the worse of the two ratios at 3.56:1. Count each theme's member list as well, which is what the scores in the table above do, and the cap drops to 3.37:1, sitting at a relative luminance of about 0.230. Anything lighter gains on dark and loses on light at the same rate.

Of the twelve popular role colors above, only #E74C3C lands near that optimum, at 3.31:1 on dark and 3.44:1 on light. #F1C40F scores 7.61:1 on dark and 1.50:1 on light: bright and confident for most of your server, and near-invisible for the members using light theme. So the workable target is 4.5:1 on the theme your members actually use, and above 3:1 on the other. Balance both themes does exactly that. It moves lightness until the two scores are as even as they can be, leaving hue and saturation alone so the color still looks like the one you picked.

Gradient and holographic role styles

Enhanced Role Styles are a Server Boost perk bought on its own: 3 boosts applied to that perk, with no Boost Level requirement attached. A gradient role takes two stops and blends them across the name. Holographic is a single fixed preset that cannot be recolored.

The thing worth checking is the fallback. Where the style is not rendered, the name falls back to a flat color, so a gradient whose stops both fail contrast fails there too. The gradient mode above scores both stops and reports the worse of them, which is the number that actually describes what your members will read.

Questions

Is my webhook URL stored anywhere?

No. The URL 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, and 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 or 404), a limit was exceeded (400, so check for a meter over its limit), you are rate limited (429, so wait a moment), or a browser extension or ad blocker blocked the request to discord.com before it 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.

How do I change a role's color in Discord?

Server Settings, Roles, pick the role, then set the color under Display. It is the same path on mobile from the server name menu. Discord stores the value as a 24-bit integer, which is why bots and audit logs show #E74C3C as 15158332 rather than as a hex code.

Why does my role color vanish in Discord's light theme?

Light theme puts the same name on #FFFFFF instead of dark theme's #313338. A color pale enough to glow on dark theme has almost no contrast on white, and a color dark enough to read on white looks muddy on dark. Check the light column here before you save.

How do I get gradient or holographic role colors?

Enhanced Role Styles are a Server Boost perk bought on its own: someone with Manage Server applies 3 boosts to that perk. It is not tied to a Boost Level, so 3 boosts is the whole requirement. Gradient and Holographic then appear beside the solid color picker in the role Display tab.

What are the best Discord role colors?

The ones that stay legible on whichever theme your members actually use and stay above 3:1 on the other. Of the twelve popular role colors on this page, #E74C3C is the most balanced at 3.31:1 on dark and 3.44:1 on light. #F1C40F and #FFFFFF are excellent on dark and effectively invisible on light.

Can a role color pass AA contrast on both dark and light theme?

No. Score the chat panes alone and the arithmetic caps the worse of the two ratios at 3.56:1; count the member list backgrounds as well and the cap is 3.37:1, reached at a relative luminance of about 0.230. 4.5:1 on both is impossible, so aim for 4.5:1 on your primary theme and above 3:1 on the other.

Does a role's color affect anything besides the name?

It tints the name in the member list, above messages, in mentions and in the role pill in Server Settings. It has no effect on permissions, on who can see the role, or on channel access. Setting a role to #000000 does nothing at all, because Discord reads 0 as no color and falls through to the next colored role.