Skip to main content

How it works

An embed script is a series of parameters. Each one is wrapped in braces, uses a colon to separate the name from its content, and is joined to the next one with $v.
Anywhere a command accepts both plain text and embed code, your script has to begin with {embed} — otherwise confine treats the whole thing as plain text.

Simple parameters

These take a single value.

Colors

Hex works in three forms: #5865f2, 0x5865f2, or bare 5865f2. You can also use a name: red, blue, green, purple, orange, gold, yellow, white, or black.

Multi-part parameters

These take several values separated by &&.
Name, then optionally an icon URL and a link.
Name and value, both required. Add the word inline at the end of the value to sit fields side by side.
Up to 25 fields per embed.
Style, label, then a URL for link buttons or a custom ID for the rest. Add disabled last to grey it out.
Styles: link, blurple, green, grey (or gray), and red. Anything unrecognized falls back to grey.Buttons wrap automatically into rows of five.
Confine only accepts URLs from a fixed set of hosts. Anything else is silently dropped — the image, icon, or link button simply won’t appear.
Allowed hosts: cdn.discordapp.com · media.discordapp.net · images-ext-1.discordapp.net · images-ext-2.discordapp.net · last.fm · www.last.fm · lastfm.freetls.fastly.net · lastfm-img1.akamaized.net · lastfm-img2.akamaized.net
The simplest way to get a usable image link: upload it to any Discord channel, then copy the message link. That produces a cdn.discordapp.com URL confine accepts.

A full example

Common questions

Press Shift + Enter while typing your message in Discord.
Confine validates scripts before saving. Usually this means every parameter was malformed — check that each one opens with {, closes with }, and that they’re joined by $v with nothing stray in between.
No. Both are structural, so a literal $v splits your script and a stray } closes the parameter early.