Discord formatting cheat sheet
Everything Discord's markdown can do, in one page. The formatter tool will wrap text in any of this for you.
Discord uses its own dialect of Markdown. You type markers around your text, and when the message sends, each reader's client renders the formatting and hides the markers. The formatting lives in the message, not in the characters, which is why editing a message can remove it and why copying the text out gives you plain letters.
Text styling
| Effect | Type this | Notes |
|---|---|---|
| Italic | *text* or _text_ | Single marker either side |
| Bold | **text** | |
| Bold italic | ***text*** | Three asterisks |
| Underline | __text__ | Two underscores, not asterisks |
| Underline bold | __**text**__ | Markers nest |
| Strikethrough | ~~text~~ | |
| Spoiler | ||text|| | Hidden until clicked |
| Inline code | `text` | Single backticks; disables other formatting inside |
Structure
Headers and subtext were added relatively recently and are the fastest way to make a long rules or information post scannable. All of them need a space after the marker.
| Effect | Type this | Notes |
|---|---|---|
| Big header | # Heading | Largest |
| Medium header | ## Heading | |
| Small header | ### Heading | |
| Subtext | -# Small print | Smaller and dimmed |
| Quote | > quoted line | One line only |
| Block quote | >>> quoted | Everything after it is quoted |
| Bulleted list | - item or * item | Indent two spaces to nest |
| Numbered list | 1. item | Numbering is automatic |
| Masked link | [text](https://example.com) | Works for bots and webhooks; ordinary user messages show the raw URL |
Code blocks
Three backticks on their own line above and below your text produce a code block. Add a language name directly after the opening backticks for syntax highlighting.
Code blocks are also the only reliable way to post an ASCII banner, because they force a monospace font and preserve alignment. Without one, the rows shear apart.
Coloured text
Discord has no syntax for colouring a word inside a sentence. The only supported route is a code
block tagged ansi, which makes Discord interpret the escape codes that terminals have
used for decades. Inside such a block, an invisible escape character followed by a code switches
the colour on, and [0m switches it off again.
The formatter tool generates these with the escape character already in place, which matters because you cannot type it on a keyboard.
| Code | Text colour | Code | Background |
|---|---|---|---|
30 | Grey | 40 | Dark blue |
31 | Red | 41 | Orange |
32 | Green | 42 | Grey |
33 | Yellow | 44 | Light grey |
34 | Blue | 45 | Indigo |
35 | Pink | 46 | Silver |
36 | Cyan | 47 | White |
37 | White | 1 | Bold, combined with a colour |
Colour support is not universal. ANSI rendering has been inconsistent across Discord's mobile clients. On a client that does not support it, your text still appears — just in plain monospace without the colour. Test in your own server before using it for an announcement people need to read.
Timestamps
One of Discord's most useful and least known features. A timestamp tag displays in each reader's own time zone and local format, which removes every "wait, is that your 8pm or mine?" reply from an event announcement.
The syntax is <t:UNIX:FORMAT>, where UNIX is the Unix epoch seconds for your
moment and FORMAT is one letter.
| Format | Shows |
|---|---|
t | Short time, such as 16:20 |
T | Long time, with seconds |
d | Short date |
D | Long date, such as 25 July 2026 |
f | Date and time — the default if you omit the format |
F | Day of week, date and time |
R | Relative, such as "in 3 hours" — counts down live |
Escaping
To show a marker instead of applying it, put a backslash in front of it. Typing a backslash before an asterisk displays the asterisk. This works for asterisks, underscores, tildes, backticks and vertical bars.
To escape a whole passage at once, put it in an inline code span or a code block, both of which render their contents literally.
Where markdown does not work
Markdown applies to message content only. These fields are never parsed for it, so markers typed into them stay as literal characters:
- Your username and server nickname
- Channel names and category names
- The server name and description
- Role names
- Status and custom status text
For those, formatting has to be built into the characters themselves. That is what the Unicode tools on this site are for — a bold nickname or circled letters in a channel name work because the characters are already styled, with no markdown involved. Circled letters are particularly useful in channel names, since Discord lowercases your input and replaces spaces with hyphens but leaves those characters alone.
Quick reference
- Formatting lives in the message, so it can be edited away and does not survive being copied elsewhere.
- Markers nest, except inside code blocks.
- Headers, subtext and lists all need a space after the marker.
- Colour only works inside an
ansicode block. - Names and channels need Unicode characters, not markdown.
Tools mentioned in this guide
-
**𝙳𝚒𝚜𝚌𝚘𝚛𝚍**
Discord Text Formatter
Markdown syntax for bold, spoilers, headers and coloured code blocks.
-
𝗕𝗼𝗹𝗱 𝘁𝗲𝘅𝘁
Bold Text Generator
Heavy sans-serif letters that survive a paste into any plain-text field.
-
𝗔𝗦𝗖𝗜𝗜 𝗮𝗿𝘁
ASCII Banner Generator
Words built from blocks of characters, for terminals and code comments.
-
Č̶̵̶̩̟̫̦͓̹́ͫ̎͋ų̶̸̫͈͓̦̹͗̓ͫͤ̄͗r̴̸̢̭͍̩̦̍ͨͯ͛ͭͣs̵̷̡̨̧̬̞̺̑̎ͯͪ͗e̶̵̪̤͓̾̉ͪͣ͐d̸̵̦̗͍̹̗͔́̈ͯ
Cursed Text Generator
Glitched zalgo text with an intensity dial, from a light haze to unreadable.
-
Ⓑⓤⓑⓑⓛⓔ ⓣⓔⓧⓣ
Bubble Text Generator
Every letter sealed inside its own circle, hollow or filled.
-
S̶t̶r̶i̶k̶e̶t̶h̶r̶o̶u̶g̶h̶
Strikethrough Text Generator
A line drawn through your words, plus underline and slash variants.