Slack Markdown: Bold, Italic, Code & Formatting Syntax
How Slack’s mrkdwn formatting works — and where it breaks from standard Markdown
Quick Answer
Slack does not use standard Markdown. It uses its own syntax called mrkdwn (deliberately misspelled). The core formatting looks similar, but the characters are different:
| Format | Slack mrkdwn | Standard Markdown |
|---|---|---|
| Bold | *bold* | **bold** |
| Italic | _italic_ | *italic* or _italic_ |
| Strikethrough | ~strike~ | ~~strike~~ |
| Links | <url|text> | [text](url) |
Slack messages do not support images, tables, or headers. For those, paste content into a Slack canvas or upload a Markdown file instead.
Text Formatting
Bold
Wrap text in single asterisks. Double asterisks (**text**) do not work — they display as literal characters.
This text is bold
*This text is bold*
Italic
Wrap text in underscores. Single asterisks make text bold in Slack, not italic.
This text is italic
_This text is italic_
Strikethrough
Wrap text in single tildes. Double tildes (~~text~~) do not work in Slack.
This text is struck through
~This text is struck through~
Inline Code
Wrap text in single backticks — same as standard Markdown.
Run npm install to start
Run `npm install` to start
Code Block
Wrap text in triple backticks. Slack does not support syntax highlighting — there is no way to specify a language.
function hello() {
return "world";
}
```
function hello() {
return "world";
}
```
Slack vs Standard Markdown
A side-by-side comparison of every formatting feature:
| Feature | Standard Markdown | Slack mrkdwn |
|---|---|---|
| Bold | **text** | *text* ⚠️ Different |
| Italic | *text* or _text_ | _text_ only |
| Strikethrough | ~~text~~ | ~text~ ⚠️ Different |
| Inline code | `code` | `code` ✔️ Same |
| Code block | ```lang | ``` (no highlighting) ⚠️ |
| Links | [text](url) | <url|text> ⚠️ Different |
| Blockquote | > text | > text ✔️ Same |
| Lists | - and 1. | - and 1. ✔️ Same |
| Images |  | ❌ Not supported |
| Tables | Pipe syntax | ❌ Not supported |
| Headers | # text | ❌ Not supported |
Block Elements
Blockquotes
Start a line with > followed by a space. This is one of the few features that works the same as standard Markdown.
This is a quoted message
> This is a quoted message
Lists
Unordered lists use - or * (when * is at the start of a line followed by a space, Slack treats it as a list item, not bold). Ordered lists use 1., 2., etc.
- First item
- Second item
- Third item
- First item
- Second item
- Third item
Line Breaks
Press Shift + Enter to insert a line break without sending the message. Pressing Enter alone sends the message (unless you changed this in Slack preferences).
Emoji & Mentions
Slack supports emoji shortcodes identical to the ones on GitHub and Discord:
🚀 🔥 ✔️ 👋
:rocket: :fire: :white_check_mark: :wave:
Workspaces can also add custom emoji through Customize Slack → Emoji.
Mentions use the @ prefix:
@username— mentions a specific person@here— notifies everyone active in the channel@channel— notifies everyone in the channel, active or not#channel-name— creates a clickable link to another channel
Slack’s WYSIWYG Editor
Slack’s newer message editor converts formatting as you type. You can use keyboard shortcuts instead of mrkdwn syntax:
| Format | Mac Shortcut | Windows Shortcut |
|---|---|---|
| Bold | ⌘ + B | Ctrl + B |
| Italic | ⌘ + I | Ctrl + I |
| Strikethrough | ⌘ + Shift + X | Ctrl + Shift + X |
| Code | ⌘ + Shift + C | Ctrl + Shift + C |
| Blockquote | ⌘ + Shift + 9 | Ctrl + Shift + 9 |
| Code block | ⌘ + Alt + Shift + C | Ctrl + Alt + Shift + C |
You can also use the /code slash command to insert a code block, or click the Aa button in the formatting toolbar to toggle between the rich editor and plain-text markup mode.
Common Mistakes
Using double asterisks for bold
Standard Markdown uses **text** for bold. In Slack, this displays as literal **text**. Use a single asterisk: *text*.
Using double tildes for strikethrough
GitHub and most Markdown renderers use ~~text~~. Slack requires a single tilde: ~text~. Double tildes show as literal characters.
Using # for headers
Slack messages do not support headers. # My Header displays as plain text with a hash symbol. For emphasis, use bold (*Header*) instead.
Using standard link syntax
[Click here](https://example.com) does not create a link in Slack. Use Slack’s format: <https://example.com|Click here>. Or simply paste the URL — Slack auto-links it and shows a preview.
Formatting inside code blocks
Text inside backticks is rendered literally. `*not bold*` shows the asterisks instead of making text bold. This is the same behavior as standard Markdown.
FAQ
Does Slack use Markdown?
Slack uses its own formatting syntax called mrkdwn (deliberately misspelled). It looks similar to Markdown but has key differences: bold uses single asterisks (*bold*) instead of double, italic uses single underscores (_italic_), and strikethrough uses single tildes (~text~) instead of double. Standard Markdown syntax like **bold** or ~~strike~~ does not work in Slack messages.
How do I format code in Slack?
For inline code, wrap text in single backticks: `code`. For multi-line code blocks, wrap in triple backticks. Slack does not support syntax highlighting — there is no way to specify a language for colored code. In Slack’s newer editor, you can also use the /code slash command or the Code Block button in the formatting toolbar.
Can I use Markdown links in Slack?
Not standard Markdown links. Slack uses its own link format: <URL|display text>. For example, <https://example.com|Click here> shows as “Click here” linked to the URL. Standard Markdown link syntax [text](url) does not work. In Slack’s newer WYSIWYG editor, you can paste a URL and then edit its display text.
Preview Your Markdown with MDViewer
MDViewer is a native macOS app for reading and previewing Markdown files. Double-click any .md file in Finder and see it rendered instantly — tables, code blocks, Mermaid diagrams, and more. Lite is free; Pro adds editing, Git history, and PDF export.
Requires macOS 13.0 or later. Intel and Apple Silicon.