Skip to main content
All articles
· Updated February 15, 2026

Complete Guide to Discord Embed Formatting

Master Discord embed builder techniques: fields, colors, images, footers, timestamps, and character limits. Includes practical examples and best practices.

discord apiembedsformattingtutorialembed tutorialdiscord embed 2026webhook builder
Complete Guide to Discord Embed Formatting

What Are Discord Embeds?

Discord embeds are rich message components that display formatted content with colors, images, fields, and structured layouts. Unlike plain text messages, embeds let you create visually organized information blocks that stand out in chat.

Embeds are commonly used for:

  • Bot responses and notifications
  • Status dashboards and monitoring alerts
  • News feeds and content aggregation
  • Game stats and leaderboards
  • Documentation and help commands

This guide covers every embed property, character limits, and practical formatting techniques.

Basic Embed Structure

A minimal embed requires just a description or title:

{
  "embeds": [{
    "title": "Hello World",
    "description": "This is a basic embed.",
    "color": 5814783
  }]
}

The embeds array can contain up to 10 embed objects per message.

Embed Properties Reference

Title and Description

The title appears as bold text at the top, while the description provides the main content:

{
  "embeds": [{
    "title": "Server Maintenance Notice",
    "description": "The server will be offline for maintenance on March 25th from 2:00 AM to 4:00 AM UTC.\n\nExpected downtime: 2 hours",
    "color": 16776960
  }]
}

Limits:

  • Title: 256 characters
  • Description: 4096 characters

Use \n for line breaks in the description.

Color

The color property sets the left border color. It accepts a decimal integer:

{
  "embeds": [{
    "title": "Status: Online",
    "color": 5763719
  }]
}

Common colors:

  • Red: 15548997 (#ED4245)
  • Green: 5763719 (#57F287)
  • Blue: 3447003 (#3498DB)
  • Discord Blurple: 5793266 (#5865F2)
  • Yellow: 16776960 (#FFFF00)
  • Orange: 15105570 (#E67E22)
  • Purple: 10181046 (#9B59B6)

Convert hex colors to decimal: parseInt("5865F2", 16) returns 5793266.

URL

Make the title clickable by adding a URL:

{
  "embeds": [{
    "title": "Read the Documentation",
    "url": "https://discord.com/developers/docs",
    "description": "Click the title to view the full API reference.",
    "color": 5793266
  }]
}

The URL must be a valid HTTP/HTTPS link.

Timestamp

Add an ISO 8601 timestamp to display a formatted date/time in the footer:

{
  "embeds": [{
    "title": "Deployment Complete",
    "description": "Version 2.4.1 deployed successfully.",
    "color": 5763719,
    "timestamp": "2025-03-22T14:30:00.000Z"
  }]
}

Discord automatically formats the timestamp based on the user’s locale and timezone. In JavaScript: new Date().toISOString().

The footer appears at the bottom with optional icon:

{
  "embeds": [{
    "title": "System Alert",
    "description": "High CPU usage detected.",
    "footer": {
      "text": "Monitoring Bot v1.2",
      "icon_url": "https://example.com/bot-icon.png"
    },
    "timestamp": "2025-03-22T14:30:00.000Z"
  }]
}

Limits:

  • Footer text: 2048 characters
  • Icon URL must be a valid image URL (HTTPS recommended)

Author

The author section displays above the title:

{
  "embeds": [{
    "author": {
      "name": "GitHub",
      "url": "https://github.com",
      "icon_url": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png"
    },
    "title": "New Pull Request",
    "description": "User @johndoe opened PR #42: Fix authentication bug"
  }]
}

Limits:

  • Author name: 256 characters

Fields

Fields create a grid layout for structured data. Each field has a name, value, and optional inline property:

{
  "embeds": [{
    "title": "Server Statistics",
    "color": 5793266,
    "fields": [
      {
        "name": "Total Members",
        "value": "1,234",
        "inline": true
      },
      {
        "name": "Online Now",
        "value": "567",
        "inline": true
      },
      {
        "name": "Active Today",
        "value": "892",
        "inline": true
      },
      {
        "name": "Top Channel",
        "value": "#general (4,521 messages)",
        "inline": false
      }
    ]
  }]
}

Limits:

  • Maximum 25 fields per embed
  • Field name: 256 characters
  • Field value: 1024 characters

Inline behavior:

  • inline: true places fields side-by-side (up to 3 per row)
  • inline: false creates a full-width field
  • Mix inline and non-inline fields to create custom layouts

Images

Add a large image below the description:

{
  "embeds": [{
    "title": "New Artwork",
    "description": "Check out this amazing fan art!",
    "image": {
      "url": "https://example.com/artwork.png"
    },
    "color": 10181046
  }]
}

The image scales to fit the embed width (max 400px wide).

Thumbnail

Add a small image in the top-right corner:

{
  "embeds": [{
    "title": "User Profile",
    "description": "Level 42 Warrior",
    "thumbnail": {
      "url": "https://example.com/avatar.png"
    },
    "color": 15105570
  }]
}

Thumbnails display at 80x80 pixels.

Video

Embeds can include video URLs, but this only works for auto-embedded links (YouTube, Twitch, etc.). Webhooks cannot directly embed arbitrary videos.

{
  "embeds": [{
    "title": "Tutorial Video",
    "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  }]
}

Discord will auto-embed the video player if the URL is supported.

Complete Example: Rich Embed

Here’s a full-featured embed using multiple properties:

{
  "embeds": [{
    "author": {
      "name": "Weather Bot",
      "icon_url": "https://example.com/weather-icon.png"
    },
    "title": "Weather Forecast - San Francisco",
    "url": "https://weather.example.com/san-francisco",
    "description": "Partly cloudy with a chance of rain in the evening.",
    "color": 3447003,
    "fields": [
      {
        "name": "Temperature",
        "value": "18°C / 64°F",
        "inline": true
      },
      {
        "name": "Humidity",
        "value": "65%",
        "inline": true
      },
      {
        "name": "Wind Speed",
        "value": "12 km/h NW",
        "inline": true
      },
      {
        "name": "UV Index",
        "value": "Moderate (5)",
        "inline": true
      },
      {
        "name": "Precipitation",
        "value": "30% chance",
        "inline": true
      },
      {
        "name": "Visibility",
        "value": "10 km",
        "inline": true
      }
    ],
    "thumbnail": {
      "url": "https://example.com/partly-cloudy.png"
    },
    "footer": {
      "text": "Data from OpenWeatherMap",
      "icon_url": "https://example.com/owm-icon.png"
    },
    "timestamp": "2025-03-22T14:30:00.000Z"
  }]
}

Character Limits Summary

Discord enforces strict limits on embed content:

PropertyLimit
Title256 characters
Description4096 characters
Fields (total)25 fields
Field name256 characters
Field value1024 characters
Footer text2048 characters
Author name256 characters
Total characters6000 characters

The total character count includes all text across title, description, field names, field values, footer, and author name.

Multiple Embeds

Send up to 10 embeds in a single message:

{
  "embeds": [
    {
      "title": "Embed 1",
      "description": "First embed content",
      "color": 15548997
    },
    {
      "title": "Embed 2",
      "description": "Second embed content",
      "color": 5763719
    }
  ]
}

This is useful for:

  • Paginated data (e.g., multiple search results)
  • Grouped information (e.g., separate embeds for different categories)
  • Visual separation of unrelated content

Common Formatting Techniques

Markdown in Embeds

Embed descriptions and field values support Discord markdown:

{
  "embeds": [{
    "description": "**Bold text**\n*Italic text*\n__Underline__\n~~Strikethrough~~\n`Code`\n```Code block```\n[Link](https://example.com)"
  }]
}

Empty Field Values

Discord requires non-empty field values. Use a zero-width space for “blank” fields:

{
  "fields": [
    {
      "name": "Section Divider",
      "value": "\u200b",
      "inline": false
    }
  ]
}

Progress Bars

Create visual progress bars using Unicode block characters:

{
  "fields": [
    {
      "name": "Download Progress",
      "value": "█████████░░░░░░░ 60%",
      "inline": false
    }
  ]
}

Tables

Use code blocks with monospace formatting for aligned tables:

{
  "description": "```\nName        | Score\n------------|------\nAlice       |   95\nBob         |   87\nCharlie     |   92\n```"
}

Best Practices

Keep it concise: Users skim embeds. Put the most important information in the title and first few fields.

Use color meaningfully: Green for success, red for errors, yellow for warnings. Consistent color coding improves readability.

Optimize field layout: Use inline fields for compact data (stats, metrics). Use full-width fields for longer text.

Test on mobile: Embeds render differently on mobile. Inline fields stack vertically on small screens.

Avoid walls of text: Break long descriptions into fields or multiple embeds.

Include timestamps: For time-sensitive information (alerts, logs, events), always add a timestamp.

Troubleshooting

Embed not appearing: Check that your JSON is valid and the webhook URL is correct. Use a JSON validator.

Images not loading: Ensure image URLs are publicly accessible and use HTTPS. Discord blocks HTTP images.

Character limit exceeded: Discord silently truncates embeds that exceed 6000 total characters. Validate your content length.

Fields not inline: Inline fields require exactly 3 or fewer fields in a row. The 4th field wraps to a new line.

Next Steps

Now you understand every aspect of Discord embed formatting. To design complex embeds visually without writing JSON by hand, try our free Discord Webhook Builder. Build your embed layout, preview it in real-time, then export the JSON for use in your applications.

Beyond embeds, discord-webhook.com also supports polls for gathering community feedback, scheduled messages for timed announcements, and interactive buttons with actions that let users assign roles and submit forms — all configurable through the visual builder.