Discord text formatting: the complete syntax guide (2026)
Discord quietly supports a compact flavor of markdown — enough to bold a warning, spoiler a plot twist, drop a syntax-highlighted code block, or quote someone cleanly. None of it lives in a toolbar. You type the symbols inline and Discord renders them the moment you hit send. This guide is the full reference: every mark, what it does, and the two places the syntax trips people up.
The complete syntax reference
Here is every text style Discord understands, with the exact characters to type:
- Bold —
**bold** - Italic —
*italic*(a single_italic_works too) - Bold italic —
***both*** - Underline —
__underline__(two underscores each side) - Strikethrough —
~~strike~~ - Big header —
# Headingon its own line - Medium header —
## Heading - Small header —
### Heading - Subtext —
-# small grey line - Block quote —
> quoted line - Multiline quote —
>>>then everything after it is quoted - Inline code —
`code`(single backticks) - Code block — three backticks to open and close (add a language name to highlight)
- Spoiler —
||hidden|| - Bulleted list — start lines with
-or* - Numbered list — start lines with
1. - Masked link —
[text](url)— but read the caveat below first
Bold, italic, and the underline gotcha
The asterisk styles nest predictably: * on each side is italic, ** is bold, and *** is bold italic. The confusion is underscores. A single _ on each side is italic (identical result to a single asterisk), while a double __ is underline — a style plain markdown does not even have. Because the difference between italic and underline is one underscore, this is the single most common thing people get wrong mid-message. When in doubt: one underscore leans the text, two underline it.
Strikethrough is straightforward: ~~text~~. Note it is two tildes, unlike WhatsApp, which uses a single tilde.
Headers, subtext, and quotes
Discord added real headers a while back, and they are per-line: put # at the start of a line for a large header, ## for medium, and ### for small. They only work at the beginning of a line, and there is no header level below three. The newer -# prefix produces subtext — small grey text that is perfect for captions or fine print under an announcement.
Quotes come in two forms. A single > at the start of a line quotes that one line. Typing >>> starts a multiline quote block that swallows everything after it in the message, which is handy for pasting a long excerpt without prefixing every line.
Code: inline and fenced blocks
Wrap a few words in single backticks for inline code — great for a command or a file name. For anything longer, fence it in a block using three backticks on their own line before and after the code. Add a language name right after the opening backticks — such as js, python, diff, or css — and Discord applies syntax highlighting. The diff language is a favorite for changelogs because lines starting with a plus turn green and minus lines turn red.
Spoilers and lists
Spoilers hide content behind a click-to-reveal blur. Wrap the text in double pipes: ||the killer was the butler||. It works inline inside a sentence or around a whole block, so you can spoiler a single word or a full paragraph.
Lists behave like standard markdown. Start lines with - (or * ) for bullets, and 1. for numbered lists; Discord auto-numbers, so you can leave every line as 1. and it will count up. Indent with spaces to create sub-lists.
The masked-link caveat (the important one)
This is the trap that catches everyone. Masked links — the [text](url) syntax that shows friendly text over a hidden URL — only render inside bot and webhook embeds, not in messages you type by hand. Paste [our site](https://example.com) into a normal chat and Discord shows the raw brackets and parentheses, not a clickable label. In regular messages, just paste the bare URL and Discord auto-links it reliably. Save masked links for bots and embed builders.
Two more limits worth knowing: messages cap at 2,000 characters, and stacking Unicode "bold text generator" characters is a bad idea on Discord — they break into boxes on many Windows and Android clients and are announced one letter at a time by screen readers. Native markdown renders correctly for everyone.
Generate it without memorizing any of this
If you would rather not keep this reference open, the Discord text formatter gives you a visual editor: write or paste your message, click the styles you want, and Copy hands you the exact Discord markdown, ready to send. It also strips the invisible characters that make AI-drafted messages look machine-written.
Every chat app speaks its own dialect, so the same words need different symbols per platform. If you also post to Slack, Reddit, or WhatsApp, each has its own formatter that emits that app's exact markup — no more guessing whether bold is one asterisk or two.