Discord Text Formatter
- Runs on your device
- Nothing uploaded
- Free, no sign-up
- Discord's formatting guide
Type, select, format
Blank page? Try a sample:
Check the preview, then copy
you
Click a spoiler in the preview to reveal it, the way Discord does.
- Click the message box and paste (Ctrl+V, or Cmd+V on a Mac; on a phone, press and hold, then Paste).
- Send it. If any part shows raw symbols, the troubleshooting list below has the usual reasons.
Discord formatting cheat sheet
Everything Discord's message box understands, as of October 2026. The left column is what you type; Discord hides the symbols once the message is sent. The formatter above writes all of these for you, and Discord's own Markdown Text 101 page covers the same ground.
| You type | You get | Watch out for |
|---|---|---|
**bold** | bold | |
*italic* or _italic_ | italic | Stars must touch the words |
__underline__ | underline | Two underscores, not one |
~~strikethrough~~ | ||
||spoiler|| | A dark block until clicked | |
`inline code` | inline code | Nothing inside is formatted |
```jscode``` | A code block | Language word goes right after the backticks |
# Header | Header | Also ## and ###, at the start of a line |
-# small text | small grey text | Start of a line only |
> quote | One quoted line | Space after the > is required |
>>> quote | Quotes the rest of the message | Cannot be ended early |
- item or * item | A bullet list | Indent with spaces to nest |
1. item | A numbered list | |
[text](https://example.com) | A link that shows only the text | http:// or https:// only |
\*not italic\* | *not italic* | Backslash shows the next symbol as typed |
Stacking styles
Markers combine. Open them in any order and close them in reverse, like nested brackets. Three stars is bold and italic at once, and Discord's own help page uses __***text***__ for underlined bold italics. A few that people ask for:
||**Boss is weak to fire**||is a bold spoiler.~~__old price__~~is crossed out and underlined.# **Rules** ~~v1~~is a header with inline styles. Headers, small text, quotes and list items all accept the inline styles inside them.> -# posted by the mod teamis small text inside a quote.
The one thing that does not stack is code. Inside backticks or a code block, stars, bars and underscores are shown exactly as typed, which is also the quickest way to show someone the syntax.
Why your formatting shows up as symbols
- The line has to start with it.
#,-#,>,>>>,-and1.only count at the start of a line. Mid-sentence they are plain characters. - No space after the symbol.
#Title,-#noteand>quotestay as typed. Each needs a space before the text. - Too many #. There are three header sizes.
####is not a smaller header; it shows as four hash signs. - Loose stars. Single-star italics need the stars touching the words, so
2 * 3 * 4stays math. A line that starts with*and a space becomes a bullet instead. - Underscores inside a word.
file_name_hereis not italic. Underscore italics only start and end at word edges, so code-ish names survive. - It is inside code. Anything between backticks is left alone, including spoiler bars.
- Quotes do not nest.
> > textis one quote that starts with a literal >. And>>>runs to the end of the message, so put it last. - It is not a message. Usernames, server nicknames, channel names and role names never render formatting.
- The message is too long. Discord stops you at 2,000 characters, or 4,000 with Nitro. The counter above tracks it.
To show a symbol on purpose, put a backslash in front of it: \*, \_, \|\|, or \# at the start of a line. The "Show the symbols as typed" box does this to the whole message.
Worked example: a game night post
We loaded the sample above and wrote it the way most announcements start: #Game night is Friday and -#hosted by the mod team on the next line. The preview showed both lines as plain text with the symbols visible. Adding one space after # and after -# fixed both: a big header with a grey credit line under it.
The rest of the sample shows the common pieces in one post:
# Game night is Friday
-# hosted by the mod team, bring snacks
**When:** 8 PM Eastern, voice channel *Lounge*
## Rules
- Be on time
- Spectators stay muted
> The prize is a ||month of Nitro||
Bold labels keep the details scannable, the two-space indent nests "Spectators stay muted" under the first rule, and the spoiler inside the quote keeps the prize hidden until someone clicks. The full sample in the tool, with its code block, is 393 characters, well under the 2,000 limit. For the start time itself, a Discord timestamp beats "8 PM Eastern", since it shows in each reader's own zone.
What this preview can't show
- Mentions, channel links, custom emoji,
:shortcodes:and<t:>timestamps show as plain text here. Discord fills those in from your server. - Code blocks are not colored. Discord highlights common languages when you add the language word, such as
jsorpy. - Discord's own font is not loaded, so lines wrap at slightly different points.
- The renderer follows the same rule set Discord's formatting is modeled on, and we tested the common cases. Strange nestings, like a spoiler that opens in one style and closes in another, may come out differently in Discord.
- The character count is close but not exact for some emoji, which Discord can count differently.
Building out the rest of the server? The emoji maker and sticker maker handle the images, and the Discord tools page has every limit in one table.
ToolPetal is not affiliated with, endorsed by, or sponsored by Discord. Discord is a trademark of Discord Inc. Formatting rules can change; we link to Discord's own guide so you can check.
Questions about Discord formatting
How do I make small text in Discord?
Start the line with -# and a space, like -# fine print goes here. Discord shows it as smaller grey text under the line above. Each line needs its own -#, and it only works at the very start of a line.
How do I make a header in Discord?
Put #, ## or ### and a space at the start of a line. One # is the biggest header and ### the smallest. Four or more # signs stay as typed, and so does a # with no space after it.
How do I make a spoiler in Discord?
Wrap the text in two vertical bars on each side, like ||this||. Readers see a dark block until they click it. For pictures, Discord lets you mark an attachment as a spoiler before you send it.
How do I stop Discord from formatting my text?
Put a backslash in front of the symbol, like \*this\*, or wrap the text in backticks so it shows as code. The escape option on this page adds the backslashes for you.
Why is my Discord formatting not working?
The usual causes: a header, -# line, quote or list that does not start the line or has no space after the symbol, text that sits inside a code block, or underscores in the middle of a word. Usernames, nicknames, channel names and role names never show formatting.
How do I combine bold, italic and underline in Discord?
Stack the markers and close them in reverse order. __***text***__ gives underlined bold italics, and ||**text**|| gives a bold spoiler.
Can I put a link behind text in Discord?
Yes. Type [the words](https://example.com) and Discord shows the words as a link. The address has to start with http:// or https://.