Markdown for Discord: Complete Formatting Guide
February 8, 2026 · 9 min read
Discord uses a modified version of Markdown for message formatting, and it's one of the platform's best features — once you know how to use it. Instead of clicking tiny format buttons, you type a few symbols and your message transforms into styled text, code blocks, spoiler tags, and more.
This guide covers every Markdown feature Discord supports, including some hidden tricks that most users don't know about.
Basic Text Formatting
Discord supports the standard emphasis syntax you'd expect from Markdown:
*italic* → italic
_italic_ → italic
**bold** → bold
__underline__ → underline (Discord-specific!)
***bold italic*** → bold italic
~~strikethrough~~ → strikethrough__text__) produce underline in Discord, not bold. This is different from standard Markdown where __text__ means bold. Most other platforms don't support underline in Markdown at all.You can combine these for even more emphasis:
__*underline italic*__
__**underline bold**__
__***underline bold italic***__
~~**strikethrough bold**~~Headers
Discord added header support in 2023. You can use #, ##, and ### for three levels of headings — but only at the start of a message or after a blank line:
# Large Header
## Medium Header
### Small HeaderHeaders only work in messages that are at least a certain length — Discord may ignore them in very short messages. They also don't work inside code blocks or inline. Make sure there's a space between the # and the text.
Lists
Discord supports both unordered and ordered lists:
- Item one
- Item two
- Item three
1. First thing
2. Second thing
3. Third thingLists render cleanly in Discord and are great for organizing information in server announcements or rule channels.
Code Formatting
This is where Discord's Markdown really shines. There are two types:
Inline Code
Wrap text in single backticks for inline code:
Use `npm install` to install packages.This renders with a dark background and monospace font — perfect for mentioning commands, filenames, or variable names in conversation.
Code Blocks
For multi-line code, use triple backticks:
```
function hello() {
console.log("Hello!");
}
```Syntax Highlighting
Add a language name after the opening backticks for syntax-highlighted code. Discord supports dozens of languages:
```python
def greet(name):
return f"Hello, {name}!"
```
```javascript
const greet = (name) => `Hello, ${name}!`;
```
```css
.button {
background: linear-gradient(to right, #8b5cf6, #ec4899);
border-radius: 8px;
}
```Common language identifiers include: js, python, java, cpp, css, html, bash, json, sql, rust, go, and yaml.
```diff for showing changes with red/green highlighting. Lines starting with + appear green and lines starting with - appear red.```diff
- old code that was removed
+ new code that was added
```Spoiler Tags
Hide text behind a spoiler tag using double pipes. Readers must click to reveal:
The ending was ||absolutely wild||.Spoiler tags work on images too — just add || around the image description when uploading, or rename your file to start with SPOILER_.
You can also spoiler entire code blocks by wrapping the block in spoiler tags, though this is less commonly used.
Blockquotes
Prefix a line with > to create a blockquote. Great for quoting someone or highlighting important information:
> This is a blockquote.
> It can span multiple lines.
>>> This is a multi-line blockquote.
Everything after >>> is quoted,
even without the > prefix on each line.The >>> syntax is Discord-specific — it quotes everything that follows in the message, not just the next line.
Masked Links
Discord supports standard Markdown links to replace a URL with custom text:
[Click here](https://example.com)When someone hovers over the link, Discord shows the actual URL so users can verify where it goes before clicking. This is a security feature — the URL is always visible on hover.
Timestamps
While not technically Markdown, Discord's timestamp feature is worth knowing. Use the format <t:UNIX_TIMESTAMP:STYLE> to display time in every user's local timezone:
<t:1770000000:F> → Full date and time
<t:1770000000:R> → Relative ("in 3 hours")
<t:1770000000:D> → Date only
<t:1770000000:T> → Time onlyTimestamps automatically adjust to each viewer's timezone — no more "what time is that in my zone?" confusion. Use an online Unix timestamp converter to get the numbers.
What Discord Doesn't Support
A few standard Markdown features are missing or limited in Discord:
- Tables — Not supported. Use code blocks to fake them, or share a screenshot.
- Images in Markdown — You can't embed images with
. Upload images directly instead. - Horizontal rules —
---doesn't render as a divider in Discord messages. - HTML — No raw HTML support. Markdown only.
- Footnotes — Not available in Discord's Markdown implementation.
Formatting Tips for Server Admins
If you run a Discord server, good Markdown formatting makes your rules, announcements, and info channels much more readable:
- Use headers (
#) to organize long messages into scannable sections. - Use blockquotes to highlight rules or important notices.
- Use code blocks for commands your users need to copy.
- Use numbered lists for step-by-step instructions.
- Use spoiler tags for optional/sensitive content.
If you draft server announcements in a full Markdown editor and need to adapt the formatting for Discord, tools like MarkdownFTW let you preview how your Markdown will look across different platforms including Discord.
Quick Reference Cheat Sheet
*italic* __underline__
**bold** ~~strikethrough~~
***bold italic*** ||spoiler||
`inline code` > blockquote
# Heading >>> multi-line quote
```language [link text](url)
code block
```For a complete Markdown reference beyond Discord, check out our Markdown syntax guide.
Try it yourself
Draft your Discord messages in MarkdownFTW with live preview, then paste them into Discord.
Open the Editor →