Slack Text Formatting: Markdown Syntax Cheat Sheet

featured article thumbnail

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~ 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.

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:

  • @username notifies a specific person.
  • @here notifies everyone currently active in the channel.
  • @channel notifies 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 ![alt](url)
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.

Ready to Ship?

Add Slack Notifications to Your App

MagicBell makes it easy to send notifications to Slack channels and DMs with rich formatting.

Slack Notification Service