Documentation / Embed Builder / Overview
On this page
Overview Who can use it The Embed Builder page Form fields Post to channel Message content Color Author block Title + Title URL Description Fields Image + Thumbnail Footer block Live preview Saving an embed Same name overwrites Loading a saved embed Deleting a saved embed Posting to Discord JSON export JSON import Discord limits Character & count limits Saving vs. posting Limits & Edge Cases

Embed Builder

How to design a Discord embed in the web panel, preview it live, post it to a channel, save it for reuse, and move embeds in and out as JSON.

Overview

The Embed Builder is a utility in the guild dashboard that lets you design a Discord embed — the rich, colored message card Discord bots can post — without writing any JSON by hand. You fill out a form that matches Discord's embed specification, see a live preview of exactly what Discord will render, and then either post the embed straight to one of your server's channels or save it under a name so you can load it again later.

The page lives at Embed Builder inside the Utility section of the guild dashboard sidebar. The whole feature is free — there is no Premium gate.

Who can use it

The Embed Builder is a privileged utility. Only the following can open the page:

Moderators and support team members do not see the Utility section and cannot reach the Embed Builder. See Dashboard Roles for how these roles relate.

The Embed Builder page

The page is split into four areas, stacked vertically:

  1. Builder form (left) — the fields you fill out to design the embed.
  2. Live preview (right) — a Discord-style render of the embed that updates as you type.
  3. Saved embeds (bottom left) — the named embeds you have saved for this server.
  4. JSON (bottom right) — a textarea for copy/pasting the embed as JSON.

A row of action buttons sits at the bottom of the builder form: Clear, Import JSON, Export JSON, Save embed, and Post to Discord.

Form fields

The form fields mirror Discord's embed specification one-to-one. Every field is optional except the channel picker, which is only required when you post. Leaving a field blank means that part of the embed is simply omitted — Mokito never sends empty blocks to Discord.

Post to channel

A searchable channel picker. Start typing a channel name and the list filters to matches from your server's text and announcement channels. You can also paste a channel ID directly. This is the channel the embed will be posted to when you click Post to Discord.

Only text and announcement channels appear. Forum channels use a different posting flow and are intentionally excluded from the picker. If your channel list is out of date, refresh channels from the guild Bot Profile page first.

Message content

An optional text field (max 2000 characters) for the message body sent above the embed. Use this for a ping, an intro line, or any text you want shown outside the embed card itself. If you leave it blank, only the embed is posted — no message body.

Color

A color picker plus a hex input, kept in sync. Pick a color visually or type a 3- or 6-digit hex code (with or without a leading #). The color becomes the thin vertical bar on the left edge of the embed on Discord. If you clear the hex field entirely, Discord uses its default blurple (#5865F2).

Author block

The author block sits at the very top of the embed. It has three fields:

If you supply only an icon or only a URL, the author block still renders with whichever parts you provided.

Title + Title URL

The title is the embed's headline (max 256 characters). The optional Title URL turns the title into a clickable link. Both are optional — an embed with only a description and no title is perfectly valid.

Description

The main body text of the embed (max 4096 characters). Discord renders basic markdown here — bold, italics, links, code blocks, lists. This is where most of your content goes.

Fields

Fields are name/value pairs shown in the body of the embed, below the description. The form starts with no fields; click Add field to add one. Each field row has:

You can add up to 25 fields. Inline fields are grouped up to 3 per row, matching how Discord lays them out. Non-inline fields each take a full row.

A field with only a name or only a value still renders. The empty side shows as blank. To drop a field entirely, click its remove button.

Image + Thumbnail

Two image URL fields:

Both expect a direct image URL (https). Unsupported or broken URLs are hidden gracefully — the embed still posts, just without that image.

The footer sits at the bottom of the embed. It has three fields:

Setting a timestamp without footer text still shows the timestamp line in the footer.

Live preview

The right-hand panel shows a Discord-styled render of the embed that updates as you type. It uses the same embed styles Discord itself uses, so what you see in the preview is what Discord will render when you post. The preview updates on every keystroke and field change.

The preview shows:

If the embed is completely empty, the preview area is blank. Add a title, description, or field to see it render.

Saving an embed

Click Save embed to keep a copy of the current embed for later. A modal asks for a name (1–100 characters). The embed is saved to this server's saved-embeds list, along with the channel you had picked.

Saved embeds appear in the Saved embeds grid at the bottom of the page, most recently updated first. Each card shows the embed name, a "updated …" time, and the channel (if one was remembered).

Same name overwrites

If you save an embed with a name that already exists in this server, the existing embed is overwritten with the new content. This is intentional — it lets you iterate on a saved embed without collecting stale duplicates. There is no "duplicate name" error.

Loading a saved embed

Click Load on any saved-embed card to drop that embed back into the builder form. The form fields, color, fields, footer, and remembered channel are all restored. The JSON textarea is also populated so you can see the underlying JSON.

Deleting a saved embed

Click the trash button on a saved-embed card to delete it. A confirmation modal appears before the delete is applied. Deleting a saved embed does not delete any messages you already posted to Discord — it only removes the saved copy from this server's list.

Deleting a saved embed cannot be undone. The saved copy is removed permanently. If you want to keep the content, load it into the builder first, export it as JSON, then delete the saved copy.

Posting to Discord

Click Post to Discord to send the current embed to the channel you picked. Mokito posts the message as the bot, in the chosen channel, in your server. On success, a toast appears with an Open in Discord link that jumps straight to the posted message.

If Discord rejects the message (for example, the channel was deleted, the bot lacks permission, or a URL is malformed), the actual error is shown in the toast so you know what to fix.

Posting does not save. Posting sends the embed to Discord and nothing else. If you want to keep a copy in the saved-embeds list, click Save embed separately.

JSON export

Click Export JSON in the builder to produce a JSON representation of the current form. The JSON is placed in the JSON textarea at the bottom of the page and copied to your clipboard. The shape is Discord's native message payload:

{
  "content": "Optional message text above the embed",
  "channel_id": "1234567890123456789",
  "embeds": [
    {
      "title": "Embed title",
      "url": "https://example.com",
      "description": "Main body text.",
      "color": 5793266,
      "author": { "name": "Author", "icon_url": "https://…" },
      "footer": { "text": "Footer text" },
      "image": { "url": "https://…" },
      "thumbnail": { "url": "https://…" },
      "fields": [
        { "name": "Field 1", "value": "Value 1", "inline": true }
      ],
      "timestamp": "2026-06-26T12:00:00+00:00"
    }
  ]
}

The channel_id key is Mokito's addition — Discord's message payload does not include it, but Mokito keeps it so a saved embed remembers which channel you were targeting. The color value is a 24-bit integer (the hex value converted to decimal), which is how Discord represents embed colors on the wire.

JSON import

You can also go the other way: paste JSON into the JSON textarea and click Apply to form. The builder reads the JSON and fills in every form field, adds the right number of field rows, sets the color, restores the channel, and re-renders the preview. The import accepts either the full Discord-shape payload (above) or a flat form shape — Mokito handles both.

Use JSON to move embeds between servers. Export from one server, copy the JSON, switch to another server, paste it in, and apply. Saved embeds are per-server, but JSON is portable.

Discord limits

Mokito enforces all of Discord's documented embed limits. The form fields have matching maxlength attributes, and the server validates again before posting or saving. If an embed is too long, you get a clear error telling you the current and maximum character counts.

Character & count limits

PartLimit
Message content (above the embed)2000 characters
Embed title256 characters
Embed description4096 characters
Field name256 characters
Field value1024 characters
Footer text2048 characters
Author name256 characters
Number of fields25 per embed
Total embed characters6000 combined

The 6000-character total is the sum of title, description, field names, field values, footer text, and author name. Discord silently truncates beyond this; Mokito refuses to post instead, so you know exactly how far over you are.

Saving vs. posting

The two actions are fully independent:

You can save without posting, post without saving, or do both. A common workflow is to build an embed, save it, then post it — that way the saved copy stays available for next time.

Limits & Edge Cases