Discord Markdown: Bold, Italic, Code & Spoiler Syntax

Complete formatting guide for Discord messages — what works, what’s different, and what’s missing

Quick Answer

Discord uses a modified subset of Markdown for message formatting. Most inline syntax works the same — **bold**, *italic*, ~~strikethrough~~, and code blocks. Discord adds three features that standard Markdown does not have:

  • ||spoiler text|| — hides text behind a click-to-reveal overlay
  • __underline__ — renders as underline, not bold (the opposite of standard Markdown)
  • -# small text — subtext that renders smaller than normal

What does not work: images (![alt](url)), tables, horizontal rules, and heading levels beyond ###.

Text Formatting

Bold

This text is bold

**This text is bold**

Italic

This text is italic

*This text is italic*
_This also works_

Bold Italic

Bold and italic combined

***Bold and italic combined***

Underline

In standard Markdown, __text__ is bold. In Discord, it renders as underline. This is one of the biggest differences.

This text is underlined

__This text is underlined__

Strikethrough

This text is crossed out

~~This text is crossed out~~

Spoiler

Unique to Discord. Text is hidden behind a dark overlay until the reader clicks on it.

This is a spoiler

||This is a spoiler||

Combining Formats

Discord lets you stack formatting. The order of markers matters — the outermost pair determines the primary style.

SyntaxResult
***bold italic***bold italic
__*underline italic*__underline italic
__**underline bold**__underline bold
__***underline bold italic***__underline bold italic
~~__***everything***__~~everything

Code Formatting

Inline Code

Wrap text in single backticks to display it in a monospace font without formatting.

Use console.log() for debugging

Use `console.log()` for debugging

Multi-Line Code Blocks

Use triple backticks for multi-line code. Add a language name on the same line as the opening backticks to enable syntax highlighting.

function greet(name) {
  return `Hello, ${name}!`;
}
```js
function greet(name) {
  return `Hello, ${name}!`;
}
```

Popular language tags: js, python, css, html, json, bash, diff, yaml, sql. Without a language tag, the block renders as plain monospace text with no highlighting.

Block Elements

Headers

Discord supports three header levels. The # must be at the start of a line, followed by a space.

Big Header

Medium Header

Small Header

# Big Header
## Medium Header
### Small Header

Levels #### through ###### do not work in Discord — they render as plain text with the hash symbols visible.

Blockquotes

Use > for a single-line quote or >>> to quote everything that follows in the message.

This is a single-line quote
> This is a single-line quote

>>> This quotes everything
that follows in the message
including this line

Lists

Unordered lists use - or *. Ordered lists use 1. numbering. Indent with spaces for nested items.

  • First item
  • Second item
  1. Step one
  2. Step two
- First item
- Second item

1. Step one
2. Step two

Subtext

A Discord-only feature. Use -# at the start of a line to render smaller, muted text.

This line appears smaller

-# This line appears smaller

Discord vs Standard Markdown

Discord’s implementation differs from standard Markdown (CommonMark) and GitHub Flavored Markdown (GFM) in several ways:

FeatureStandard MarkdownDiscord
Bold**text****text** ✅ Same
Italic*text**text* ✅ Same
UnderlineNo native syntax__text__ ✅ Unique
Strikethrough~~text~~~~text~~ ✅ Same
SpoilerNone||text|| ✅ Unique
Headers# to ####### to ### only
Code blocks`````` ✅ Same
Links[text](url)[text](url) ✅
Images![alt](url)❌ Not supported
TablesPipe syntax❌ Not supported
Lists- and 1.✅ Same
Blockquotes>> + >>> (multi-line)
SubtextNone-# ✅ Unique

If you write Markdown that needs to work both in Discord and on GitHub or in a standard viewer, stick to the features marked “Same” and avoid __underline__ (which is bold elsewhere), spoiler tags, and subtext.

Common Mistakes

Forgetting the space after # for headers

#Header without a space renders as plain text in Discord. Always type # Header with a space between the hash and the text.

Using __ for bold instead of underline

In standard Markdown and GitHub, __text__ is bold. In Discord, it is underline. If you copy Markdown from a README and paste it into Discord, every __bold__ becomes underlined instead. Use **text** for bold in Discord.

Missing one of the || for spoilers

You need pipes on both sides: ||spoiler||. A single pipe (|spoiler|) does nothing — it shows the text and the pipes as literal characters.

Putting the language tag on a separate line in code blocks

The language name must be on the same line as the opening triple backticks. A line break between ``` and js disables syntax highlighting.

SyntaxResult
```js (same line)✅ Highlighted
``` then js on next line❌ No highlighting

FAQ

Does Discord use Markdown?

Yes. Discord uses a subset of Markdown for message formatting. It supports bold (**text**), italic (*text*), strikethrough (~~text~~), inline code, and code blocks with syntax highlighting. Discord also adds its own extensions: spoiler tags (||text||), underline (__text__), headers (#, ##, ###), and subtext (-#). Not all standard Markdown features work — images and tables are not supported in messages.

How do I make spoiler text in Discord?

Wrap text in double pipes: ||spoiler text||. The text appears hidden behind a dark overlay and users click to reveal it. Spoiler tags work on text, links, and even images. You can also mark an uploaded image as a spoiler by checking the “Mark as Spoiler” checkbox before sending.

Can I use Markdown tables in Discord?

No. Discord does not render Markdown tables. The pipe characters show as literal text. For tabular data in Discord, use code blocks with monospace alignment, or share a screenshot or a link to the formatted table. For example, format your table in a Markdown table and preview it with MDViewer, then share a screenshot.

Preview Your Markdown with MDViewer

MDViewer is a native macOS app for reading and previewing Markdown files. Double-click any .md file in Finder and see it rendered instantly — tables, code blocks, Mermaid diagrams, and more. Lite is free; Pro adds editing, Git history, and PDF export.

Download MDViewer

Requires macOS 13.0 or later. Intel and Apple Silicon.