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:

FormatSlack mrkdwnStandard 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:

FeatureStandard MarkdownSlack 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![alt](url)❌ Not supported
TablesPipe 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:

FormatMac ShortcutWindows Shortcut
Bold⌘ + BCtrl + B
Italic⌘ + ICtrl + I
Strikethrough⌘ + Shift + XCtrl + Shift + X
Code⌘ + Shift + CCtrl + Shift + C
Blockquote⌘ + Shift + 9Ctrl + Shift + 9
Code block⌘ + Alt + Shift + CCtrl + 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.

Download MDViewer

Requires macOS 13.0 or later. Intel and Apple Silicon.