Forgeby Vorla

Discord Embed Builder

free, no account and nothing to install.

build an embed next to a preview that looks like Discord, then copy the JSON or send it straight to a webhook. the role colour helper scores any colour on Discord’s dark, light and midnight themes.

Tool mode
Author

0 / 256

Body

0 / 256

0 / 4,096

Fields 0 / 25

a field needs both a name and a value to get sent. half-filled ones still show in the preview, but i leave them 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 can stay blank even when Discord can load it fine.

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 some content and the JSON shows up here.

i leave empty keys out. this is exactly the {"embeds":[…]} payload a bot or webhook expects.

Send via webhook

i only use this for this one request. it’s never stored or logged, and it goes nowhere except straight to Discord from your browser.

Discord applies these per message, not per webhook, so one webhook can post as a few different looking bots. leave both blank to use whatever the webhook was made with.

0 / 2,000

it sends straight from your browser to Discord. some ad blockers and privacy extensions block requests to discord.com, so if it fails straight away, allow this page or copy the JSON instead.

Saved embeds

save the whole form as a template you can load again. webhook URLs are never saved.

  • nothing saved yet. build an embed, give it a label, then save it.

Discord embed limits

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

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 make, then copy the whole list. each row shows its worst score across the three themes, so you can spot a role that reads badly 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 flat out rejects embeds over its limits, so if a meter goes past its limit, sending fails until you cut it down.
  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, anyone who has it can post in that channel.

embeds are the cards bots and webhooks post, with a coloured side bar, fields, images and a footer. writing the JSON by hand means guessing what it’ll look like and running into limits. this builder shows you exactly what Discord will show while you type, down to the inline field grid and the 80px thumbnail. it all runs in your browser. the webhook send is one direct POST from your browser to Discord with Content-Type: application/json, no server in the middle, and the webhook URL is never stored.

How Discord picks which colour a name gets

a member’s name takes the colour of their highest role that has one. roles left on the default colour get skipped, so an Admin role at the top of the list with no colour set falls through to whatever coloured role is below it. position decides this, not permissions, so drag the role up or down in Server Settings, Roles to change which colour wins.

Discord stores the colour as a 24-bit integer, not a string, which is why the API, audit logs and most bots show #E74C3C as 15158332. the one value that acts weird is #000000. it turns into 0, and Discord reads 0 as no colour at all, so a role set to pure black counts as uncoloured and gets skipped like any other default role.

Why no role colour passes AA on both themes

dark theme puts the name on #313338 in chat and #2b2d31 in the member list. light theme uses #ffffff and #f2f3f5. those backgrounds are so far apart that one colour can’t get 4.5:1 against both. score the chat panes alone and the maths caps the worse of the two ratios at 3.56:1. count each theme’s member list too (that’s what the scores in the table above do) and the cap drops to 3.37:1, 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 colours above, only #E74C3C gets close to that best case, 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, so it’s bright and clear for most of your server and close to invisible for anyone on light theme. the realistic 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 the lightness until the two scores are as even as they can get, and leaves hue and saturation alone so the colour still looks like the one you picked.

Gradient and holographic role styles

Enhanced Role Styles is a Server Boost perk on its own: 3 boosts put on that perk, with no Boost Level needed. a gradient role takes two stops and blends them across the name. Holographic is one fixed preset you can’t recolour.

the thing to check is the fallback. wherever the style doesn’t show, the name falls back to a flat colour, so a gradient where both stops fail contrast fails there too. the gradient mode above scores both stops and shows the worse one, because that’s the number that tells you what your members will actually read.

Questions

Is my webhook URL stored anywhere?

No. The URL only lives in the input box on your screen and gets used for the one POST request your browser makes straight to Discord. It’s never saved, logged or sent to any other server, and reloading the page wipes it.

Why did sending my embed fail?

Usually one of these: the webhook was deleted or the URL is wrong (Discord answers 401 or 404), something went over a limit (400, so look for a meter over its limit), you’re rate limited (429, so wait a moment), or a browser extension or ad blocker stopped the request to discord.com before it left your machine.

Can I send more than one embed at once?

This builder makes one embed, but a webhook message takes up to 10. Copy the JSON and duplicate the object inside the embeds array. The 6,000-character total then counts across all of them together.

Which parts of an embed support markdown?

The description and field values take full markdown, masked [text](url) links included. Titles and field names show 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 has to be a direct https:// link to an image file, and some hosts block their images on other sites. attachment://file.png links stay in the JSON but only work from bot code that uploads the file with it.

How do I change a role’s colour in Discord?

Server Settings, Roles, pick the role, then set the colour under Display. On mobile it’s the same path 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 and not as a hex code.

Why does my role colour vanish in Discord’s light theme?

Light theme puts the same name on #FFFFFF instead of dark theme’s #313338. A colour pale enough to glow on dark theme has almost no contrast on white, and a colour 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 colours?

Enhanced Role Styles is a Server Boost perk on its own: someone with Manage Server puts 3 boosts on that perk. It isn’t tied to a Boost Level, so 3 boosts is all it needs. Gradient and Holographic then show up next to the solid colour picker in the role Display tab.

What are the best Discord role colours?

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

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

No. Score the chat panes alone and the maths caps the worse of the two ratios at 3.56:1. Count the member list backgrounds too and the cap is 3.37:1, at a relative luminance of about 0.230. 4.5:1 on both can’t happen, so aim for 4.5:1 on your main theme and above 3:1 on the other.

Does a role’s colour affect anything besides the name?

It colours 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 colour and falls through to the next coloured role.