Discord Text Formatting: Strikethrough, Bold, Spoiler and Colored Text
To strike through text in Discord, wrap it in two tildes: ~~text~~. A spoiler is made with two vertical bars: ||text||. Bold takes two asterisks, italics one, and underline two underscores. Colored text is made with a code block tagged ansi, but the colors are only guaranteed to show on desktop; on a phone the block usually appears in a single color. Below you will find the full markup cheat sheet, color codes, timestamps and a breakdown of why formatting sometimes fails.
Discord Formatting Cheat Sheet
Discord uses a simplified Markdown: you put special characters around a word, and after you send the message they disappear and the text changes its look. You can copy every example below straight into the message box.
| What you need | What to type | Result |
|---|---|---|
| Bold | **text** | Text in a bold font |
| Italic | *text* or _text_ | Slanted text |
| Bold italic | ***text*** | Bold and slanted at the same time |
| Underline | __text__ | A line under the text |
| Strikethrough | ~~text~~ | A line through the middle of the words |
| Spoiler | ||text|| | A dark bar; the text appears after a click |
| Large heading | # Heading | Large bold text |
| Medium heading | ## Heading | A smaller heading |
| Small heading | ### Heading | The smallest heading |
| Small text | -# text | A small gray caption |
| Link under a word | [Our site](https://example.com) | A clickable word with the address hidden |
| List | - item or * item | A line with a bullet point |
| Single-line quote | > text | Text with a vertical bar on the left |
| Multi-line quote | >>> text | A bar on the left of everything that follows |
| Inline code | `text` | Monospaced font on a gray background |
| Code block | ```text``` | A separate gray box with monospaced text |
A few details without which some rows of the table will not work. The signs #, ##, ### and -# go at the very start of a new line, and a space after them is required. A list is indented with a space before the hyphen or asterisk, which gives you a nested item. Discord's official help only describes bulleted lists and says nothing about numbered ones.
Discord's help marks headings as an experiment that is not available on every server. If a hash sign stays a hash sign, the problem may not be on your side.
How to combine styles
Markup characters can be nested inside each other. The main rule is to close them in reverse order, like a nesting doll: whatever you opened last, you close first.
- __*text*__ — underlined italic.
- __**text**__ — underlined bold.
- __***text***__ — underlined bold italic.
- ~~**text**~~ — strikethrough bold.
- ||**text**|| — bold text under a spoiler.
- > **text** — a bold line inside a quote.
- ## ~~text~~ — a struck-through heading.
The first three options come from Discord's official help. The rest are built on the same principle. If something breaks in a combination, check that the closing characters are not in the wrong order and that there is no extra space next to the asterisks.
Spoilers in Discord: three ways
A spoiler hides text under a dark bar until the reader clicks it. There are three ways to add one:
- Wrap the text in ||two vertical bars||. This works everywhere: on PC, in the browser and on a phone.
- Type the command /spoiler before the message, and the whole message will be hidden.
- In the desktop app, select the text in the input box and click the eye icon in the pop-up toolbar. On iPhone you can select the text, open the context menu and choose "Mark as Spoiler".
You can hide a link too: wrap the address in the same vertical bars. Before sending, an image or file is marked as a spoiler with the eye icon on the attachment. A server invite cannot be hidden with a spoiler, and inside a code block the bars do not work, so the text stays visible.
After a click the spoiler is revealed, and when you leave the channel it hides again. You can turn spoilers off for yourself in settings, under "Text & Images": show everything at once or only on servers where you are a moderator. According to Discord's help, this setting exists only in the desktop app and in the browser.
Colored Text in Discord with ANSI
Discord has no dedicated button for color. Colored text is made with a code block tagged ansi right after the three backticks. Inside the block, before a word you put a control sequence: the invisible ESC character, a square bracket, a color code and the letter m. The code 0 resets to normal appearance.
Discord does not officially describe this trick, so we give the codes from the community-verified guide at pythondiscord.com. The color names are approximate: the exact shade depends on the theme.
Text style and color codes
| Code | What it does |
|---|---|
| 0 | Reset, normal text |
| 1 | Bold |
| 4 | Underline |
| 30 | Gray |
| 31 | Red |
| 32 | Green |
| 33 | Yellow |
| 34 | Blue |
| 35 | Pink |
| 36 | Cyan |
| 37 | White |
Background color codes
| Code | Background color |
|---|---|
| 40 | Dark blue |
| 41 | Orange |
| 42 | Marble blue |
| 43 | Greyish turquoise |
| 44 | Gray |
| 45 | Indigo |
| 46 | Light gray |
| 47 | White |
Block example
The message looks like this (instead of [ESC] the actual control character must be used):
```ansi
[ESC][1;31mStream starts at 8 PM[ESC][0m
[ESC][32mSkin giveaway after the game[ESC][0m
[ESC][1;40;33mYellow bold text on a dark background[ESC][0m
```
Codes can be combined with semicolons: style, background and text color in one bracket. The example above produces a red bold line, a green line and yellow text on a dark blue background.
There is one difficulty: the ESC character cannot be typed on a keyboard. People copy it from a ready-made colored message or from an online colored-text generator for Discord. In bot code this character is written as \u001b.
Where the colors show and where they do not
ANSI colors are displayed in the desktop app; the browser version of Discord usually shows them the same way, but this is not officially documented anywhere. In the mobile app, judging by user reports on the Discord support forum, text in such a block is shown in one standard color. There is no official statement about color support on phones. If it matters that everyone can read the message, highlight the main point with bold or a heading and use color only as an extra.
Code blocks and syntax highlighting
A single backtick formats code inside a line, and three make a separate multi-line block. If you write a language name right after the three backticks, for example ```py, ```json or ```css, Discord will highlight the syntax. The same mechanism gives colored text through ansi. On a phone, highlighting may not display, just like ANSI.
A code block is useful on its own too: markup does not work inside it. It is the simplest way to show asterisks and bars as they are, for example when you explain to a beginner how to format messages.
Timestamps: time shown in the reader's own time zone
A timestamp is handy for announcing streams and events. You write the time once, and every participant sees it in their own time zone and in their interface language. The format is: <t:TIME:STYLE>. TIME is Unix time in seconds, which any online Unix time converter will give you. STYLE is a single letter, and case matters.
| Letter | What it shows | Example of the look |
|---|---|---|
| t | Short time | 16:20 |
| T | Time with seconds | 16:20:30 |
| d | Short date | 04/20/2021 |
| D | Date with the month name | April 20, 2021 |
| f | Date with month and time (default style) | April 20, 2021 at 4:20 PM |
| F | Day of the week, date and time | Tuesday, April 20, 2021 at 4:20 PM |
| s | Short date and time | 04/20/2021, 4:20 PM |
| S | Short date and time with seconds | 04/20/2021, 4:20:30 PM |
| R | Relative time | in 2 hours, 3 days ago |
The examples in the last column are approximate: the exact wording depends on the language chosen in Discord. If you leave out the letter, style f is used. For example, <t:1767225600:F> shows the full date of the start of 2026 in UTC, and for a viewer in Moscow it is already 03:00 on January 1. A pair of timestamps is handy for an announcement: Stream <t:1767225600:F> (<t:1767225600:R>) — you get both the date and the countdown.
Mentions, channels and roles
Usually you mention a user with @ and a pick from the list, but you can write the same thing by hand using the ID, which is handy in templates and bots:
- <@ID> — a user mention;
- <#ID> — a link to a channel;
- <@&ID> — a role mention;
- </command:ID> — a clickable slash command of a bot.
You copy an ID by right-clicking a user, channel or role after turning on Developer Mode in settings, under "Advanced". Bots often send ready-made templates with mentions; you can see a selection of useful ones in our article on the best Discord bots, and the guide how to add a bot to Discordwill help you connect a bot to your server.
How to send asterisks and bars without formatting
Sometimes you need to show symbols as they are: write a smiley made of asterisks, show the markup, or a nickname with underscores. To do this, put a backslash before the symbol. For example, \*\*text\*\* will be sent with the asterisks and without bold type, and \_nick\_ will not turn into italics.
If there are many symbols, it is easier to wrap the fragment in single backticks or a code block: Discord formats nothing inside them.
PC, browser and phone: what is the difference
| What | PC and browser | Phone |
|---|---|---|
| Basic markup: bold, italic, strikethrough, spoiler, quotes | Works | Works |
| Formatting toolbar when selecting text | Yes | On iPhone there is a spoiler item in the context menu |
| ANSI colored text | Displayed in the desktop app | According to user reports, in a single color |
| Syntax highlighting | Displayed | May not display |
| Turning off spoilers in settings | Yes | No |
It is more convenient to type complex markup on a computer. It is also easier to check the result there if you are preparing a server layout, rules or a pinned post for a stream. If you are also showing viewers your screen in a voice channel, our guide on how to turn on screen sharing in Discordwill come in handy.
Why formatting does not work: common mistakes
- No space after the hash. #Heading stays ordinary text, you need # Heading.
- The symbol is not at the start of the line. Headings, -# and quotes work only from a new line. A line break inside a message is Shift + Enter.
- A space inside the asterisks. ** text ** often does not work: the characters must touch the words.
- The closing order is mixed up. In combinations, styles are closed in reverse order.
- Text inside a code block. Neither bold nor spoiler works in it, and that is by design.
- Headings are turned off on the server. Discord states directly that they are not available everywhere.
- The color is not visible from a phone. ANSI colors are not displayed in the mobile app, and if the ESC character was lost while copying, there will be no color on PC either.
- The wrong quotes. For code you need a backtick (the key to the left of the 1 key in the English layout), not a single quote.
Formatting is half the job
Neat announcements, rules and pinned posts make a server clearer, but it is people who make it alive. If your Discord is just launching and the channels are quiet for now, our section Discord: server members and boostscan help with your first members and boosts: it is easier to invite stream viewers to a full server.
Frequently asked questions
How do I make strikethrough text in Discord?
Wrap the text in two tildes on each side: ~~text~~.
How do I make a spoiler in Discord from a phone?
Write the text between two vertical bars: ||text||. This works in the mobile app the same way as on PC. On iPhone you can select the text and choose "Mark as Spoiler" in the menu.
Can I write in colored text in Discord?
Yes, using a code block tagged ansi and the color codes from the table above. The colors are visible on a computer, while in the mobile app the block is shown in a single color.
Why does the hash sign not turn into a heading?
Check that the hash sign is at the start of the line and is followed by a space. If everything is correct and there is still no heading, the feature may not be enabled on that server yet: Discord calls it an experiment.
How do I make small gray text?
Start the line with -# and a space. You get a small caption, handy for notes under an announcement.
How do I give a time that viewers from different countries will understand?
Use the timestamp <t:TIME:F>, where TIME is Unix time in seconds. Everyone will see the date and time in their own time zone, and with the letter R, a countdown.
Last Articles
What has changed in design and functionality We have updated the website to make working with it faster and more convenient. The main changes affect ..
Good afternoon, I've collected all the news during this time.: 1. The main news is that prices for twitch viewers have been greatly reduced, while Tw..
1. Use promo code "December2025" for a 15% discount for all our viewers2. We have reduced the base prices for our configurator and the most affordable..
Twitch services are working stably, so we are ready to cooperate with squads, resellers, service owners, bot owners, and many others.Individual te..
We have completely updated our Twitch viewer services, and they are now working stably. We only use high-quality IP addresses for the viewers.The ..
Hello everyone! Today, we are announcing a new feature—"Twitch Viewer Configurator". Now, you can customize any plan for your Twitch channel. Choo..
Greetings, I have compiled a guide for streamers, which will be very relevant at the moment. Now YouTube and twitch have disabled monetization from vi..
We have finally developed the APINow it will be more convenient for our partner sites to work with us.To update the maximum tariffs for YouTube, an up..
Due to the huge popularity of the partnership services and referral program, we have made a cooperation table. The essence is very simple: more live a..
Our Services for Streamers
Our Services for Content Creators










