Slack text formatting uses a simplified version of markdown called mrkdwn to style messages with bold, italic, strikethrough, code blocks, lists, and links. This cheat sheet covers every formatting option available in Slack, with copy-paste syntax and real-world examples to help you write clearer messages.
Slack Text Formatting Cheat Sheet
Use this quick-reference table to format your Slack messages. Type the syntax exactly as shown, and Slack renders the formatting when you send the message.
| Formatting | What to type | What you get |
|---|---|---|
| Bold | *text* |
text |
| Italic | _text_ |
text |
| Strikethrough | ~text~ |
|
| Inline code | `code` |
code |
| Code block | ```code``` |
Code block |
| Blockquote | > text |
Indented quote |
| Link | <https://example.com|Label> |
Clickable link |
| Bulleted list | - item |
Bullet point |
| Numbered list | 1. item |
Numbered item |
| Mention user | @username |
User notification |
| Mention channel | @channel |
Channel notification |
| Emoji | :rocket: |
Emoji icon |
Bookmark this table. It covers every formatting option Slack supports in regular messages.
Bold, Italic, and Strikethrough
These three styles handle most day-to-day formatting in Slack.
Bold uses single asterisks. Wrap your text in *asterisks* and Slack renders it as bold. Use bold for deadlines, action items, or anything you need people to notice.
Italic uses single underscores. Wrap text in _underscores_ to get italic. Use italic for emphasis, titles, or side notes.
Strikethrough uses single tildes. Wrap text in ~tildes~ to get strikethrough. Use strikethrough to show corrections or completed tasks without deleting the original text.
You can combine styles. For example, *_bold and italic_* renders as bold and italic.
Code Blocks and Inline Code
Sharing code, commands, or technical output in Slack requires backtick formatting. This is one of the most-used features for developers and DevOps teams.
Inline code
Wrap a word or short phrase in single backticks to format it as inline code:
Run `git status` to check your working directory.
Slack renders this in a monospace font with a colored background, making it stand out from regular text.
Multi-line code blocks
Wrap multiple lines in triple backticks to create a code block:
def deploy(env):
print(f"Deploying to {env}")
return True
Slack preserves indentation and line breaks inside code blocks. This makes them ideal for sharing scripts, log output, error messages, or configuration files.
You can also create a code block by pressing Shift + Enter to start a new line, then wrapping everything in triple backticks.
Lists: Bulleted and Numbered
Lists turn walls of text into scannable content. Slack supports both bulleted and numbered lists.
For a bulleted list, start each line with a dash and a space:
- Design review completed
- API changes merged
- Deployment scheduled for Friday
For a numbered list, start each line with a number, period, and space:
1. Clone the repository
2. Install dependencies
3. Run the test suite
4. Submit a pull request
You can nest lists by adding spaces before the dash or number. Nested items appear indented under their parent.
Blockquotes
Start a line with > and a space to create a blockquote:
> The deployment is blocked until the security review passes.
Slack renders this as an indented block with a vertical bar on the left. Use blockquotes to reference someone else's words, highlight a key decision, or call out important context in a thread.
Links and Mentions
Slack auto-links most URLs, but you can create links with custom text using angle brackets and a pipe:
<https://docs.example.com/api|API documentation>
This renders as a clickable link that reads "API documentation" instead of showing the raw URL.
For mentions, type @ followed by a name. Slack offers three mention levels:
@usernamenotifies a specific person.@herenotifies everyone currently active in the channel.@channelnotifies everyone in the channel, active or not.
Use @here for time-sensitive questions during work hours. Reserve @channel for announcements that affect everyone.
Slack mrkdwn vs Standard Markdown
Slack does not use standard markdown. It uses a custom format called mrkdwn that looks similar but has key differences. If you write standard markdown in Slack, some syntax will not render correctly.
| Feature | Slack mrkdwn | Standard Markdown |
|---|---|---|
| Bold | *text* (single asterisks) |
**text** (double asterisks) |
| Italic | _text_ (underscores) |
*text* or _text_ |
| Links | <url|text> (angle brackets + pipe) |
[text](url) (square brackets + parens) |
| Headings | Not supported | # Heading |
| Images | Not supported |  |
| Horizontal rules | Not supported | --- |
| Tables | Not supported (use code blocks) | Pipe-based tables |
The biggest gotcha: **double asterisks** in Slack do not produce bold text. They display literally as **text**. Use single asterisks instead.
This matters for developers who work with markdown in GitHub, documentation tools, or Slack notification APIs. When building messages programmatically through Slack webhooks or Block Kit, you need to use mrkdwn syntax — not standard markdown.
Emoji and Reactions
Type an emoji shortcode between colons to insert it inline:
:white_check_mark: Tests passing
:warning: Needs review
:rocket: Deployed to production
Slack converts these into emoji icons when you send the message. You can also open the emoji picker with Ctrl + Shift + \ (Windows/Linux) or Cmd + Shift + \ (Mac).
Reactions work differently from inline emoji. Hover over any message, click the smiley face icon, and pick an emoji. Reactions appear below the message and are visible to everyone in the channel. They are useful for quick votes, acknowledgments, or signaling that you have read a message without adding to the thread.
Formatting Tables in Slack
Slack does not support markdown tables natively. The workaround is to use a code block with manual spacing:
Name Role Status
-------- --------- ------
Alice Developer Active
Bob Designer Away
Charlie Manager Active
This preserves alignment because code blocks use a monospace font. For larger datasets, consider sharing a link to a spreadsheet or pasting the data into a Slack canvas instead.
Real-World Formatting Examples
Here are practical examples that show how text formatting makes Slack messages more effective.
Project status update
*Weekly Update — Project Atlas*
:white_check_mark: API migration complete
:hourglass_flowing_sand: Dashboard redesign — in review
:x: Mobile app launch — blocked by QA
> Next milestone: staging deployment by Friday EOD
cc @frontend-team @devops
Bug report
*Bug:* Login fails on Safari 17.2
_Steps to reproduce:_
1. Open app in Safari 17.2
2. Enter valid credentials
3. Click "Sign In"
_Expected:_ redirect to dashboard
_Actual:_ blank white screen, console shows `TypeError: undefined is not a function`
Priority: *high* — affects ~12% of users
Meeting notes
*Standup Notes — March 17*
> Decision: We ship v2.1 to staging this week.
_Action items:_
- @alice — finalize API tests by Wednesday
- @bob — update onboarding flow copy
- @charlie — schedule load test for Thursday
~Discuss pricing tier changes~ — moved to next week
Keyboard Shortcuts for Formatting
You do not have to memorize all the syntax. Slack supports keyboard shortcuts that apply formatting to selected text:
| Action | Windows/Linux | Mac |
|---|---|---|
| Bold | Ctrl + B |
Cmd + B |
| Italic | Ctrl + I |
Cmd + I |
| Strikethrough | Ctrl + Shift + X |
Cmd + Shift + X |
| Inline code | Ctrl + Shift + C |
Cmd + Shift + C |
| Blockquote | Ctrl + Shift + 9 |
Cmd + Shift + 9 |
| Numbered list | Ctrl + Shift + 7 |
Cmd + Shift + 7 |
| Bulleted list | Ctrl + Shift + 8 |
Cmd + Shift + 8 |
Select the text first, then press the shortcut. Slack wraps the selected text in the correct syntax automatically.
Common Formatting Mistakes
Unclosed symbols
Starting bold with * but forgetting the closing * leaves the raw asterisk visible. Always check that opening and closing symbols match before sending.
Using standard markdown syntax
Typing **bold** or [link](url) does not work in Slack. Use Slack's mrkdwn syntax instead: *bold* and <url|link>.
Overformatting
Too much bold, italic, and emoji in one message makes everything blend together. Use formatting to draw attention to one or two key points, not every sentence.
Mobile rendering differences
Slack's mobile app occasionally renders complex formatting differently than the desktop app. If your message targets a mobile-heavy audience, keep formatting simple — bold, lists, and code blocks work reliably everywhere.
Frequently Asked Questions
Does Slack support markdown?
Not standard markdown. Slack uses a custom format called mrkdwn. The syntax is similar — *bold*, _italic_, `code` — but differs from standard markdown in important ways. Headings, images, and tables are not supported. See the mrkdwn vs Markdown comparison above for the full breakdown.
How do you bold text in Slack?
Wrap your text in single asterisks: *like this*. Do not use double asterisks (**text**) — that is standard markdown syntax and does not work in Slack.
How do you create a code block in Slack?
Wrap your code in triple backticks before and after:
your code here
For inline code, use single backticks: `code`.
Can you make tables in Slack?
Slack does not support native markdown tables. Use a code block with manual spacing to align columns. For complex tables, share a link to a spreadsheet or use a Slack canvas.
What is mrkdwn in Slack?
mrkdwn is Slack's custom text formatting syntax. It is inspired by markdown but uses different rules. Bold uses single asterisks, links use angle brackets with a pipe, and features like headings and images are not available. Developers working with the Slack API need to use mrkdwn when composing messages programmatically.
Send Formatted Slack Notifications with MagicBell
If you are building an application that sends Slack notifications to users, MagicBell handles the formatting and delivery for you. Send notifications across Slack, email, push, and in-app channels from a single API. MagicBell supports mrkdwn formatting in Slack messages out of the box, so your notifications render correctly without manual syntax work.
Get started with MagicBell for free — set up takes less than five minutes.
