MDConverter
Universal In-Browser Converter
100% Client-Side Private

Slack Formatting: What Works, and How Slack Differs from Markdown

By the MDConverter team · Updated · 4 min read

Quick answer

Slack uses its own dialect, not standard Markdown. Bold is *one asterisk*, italic _underscores_, strikethrough ~tildes~, and there are no headings or tables. Slack’s message box formats with a toolbar by default; for typed markup, turn on Preferences › Advanced › Format messages with markup. Bots, webhooks and apps send mrkdwn, where links are written <https://example.com|text>. To turn Markdown from GitHub or an AI assistant into either form, use Markdown to Slack.

Slack vs Markdown: what changes

Markdown Slack
**bold** *bold* — one asterisk
*italic* or _italic_ _italic_
~~strike~~ ~strike~ — one tilde
\code`` and triple-backtick blocks the same
> quote the same
[text](https://…) <https://…|text> for bots and webhooks; [text](https://…) in the message box when markup is turned on
# Heading not supported — use a bold line
tables not supported — use a code block or a list
- item lists typed bullets in the message box; no list syntax in mrkdwn

Paste Markdown into Slack unchanged and the double asterisks and hashes appear as typed. The quickest fix is Markdown to Slack, which converts all of the above, turns headings into bold lines and tables into an aligned grid.

In the message box: toolbar or typed markup

By default Slack formats with a toolbar: select text, then choose Bold, Italics, Underline, Strikethrough, Code, Block quote, Code block, Ordered list or Bulleted list. Press Shift + Enter for a new line (this can be changed in your Enter key preferences). Typing 1. and a space starts a numbered list, and an asterisk and a space starts a bulleted list.

To type markup instead, go to Preferences › Advanced and turn on Format messages with markup. Then:

  • *bold*, _italic_, ~strike~, \code``
  • > at the start of a line for a quote
  • three backticks around text for a code block
  • [text](URL) for a link

Three things to know about that mode, from Slack’s help: formatting is applied when you send the message, pasted text arrives as plain text, and automatic list formatting is off.

For bots, webhooks and apps: mrkdwn

Messages sent through Slack’s API, incoming webhooks and apps use mrkdwn:

  • Styles: *bold*, _italic_, ~strike~; inline code in backticks (formatting inside is not applied); a multi-line block in triple backticks; quotes with > at the start of a line; line breaks as \n.
  • Links: a bare URL is linked automatically; custom text is <https://example.com|link text>; email is <mailto:name@example.com|label>.
  • Mentions: <@U012AB3CD> for a person, <#C123ABC456> for a channel, and <!here>, <!channel> or <!everyone> (use these sparingly — they notify people).
  • Escaping: write &, < and > as &amp;, &lt; and &gt; when you mean the characters themselves, because < starts a link or mention.
  • No lists, headings or tables. Lists are written as plain text lines starting with - or •.
  • In Block Kit, text objects of type mrkdwn are formatted; set the type to plain_text to turn formatting off.

Markdown to Slack has an option for which of these you are posting to: choose Bot or webhook (API) for <url|text> links, or Message box (markup on) for [text](url) links.

Headings, tables and lists

Slack messages have no heading sizes, so use a bold line, ideally with a blank line before it. Slack has no table syntax either: put a small table in a code block so the columns stay aligned in Slack’s monospace font, or list each row as “Name: value” lines. For a real table, share a spreadsheet or attach a file.

For lists, type bullets yourself — the • character or a hyphen — one item per line, or use the toolbar’s list buttons in the default message box.

Going the other way, and other chat apps

What Slack reads in each place

Which syntax is applied where you write.

AppSupportedNotes
Message box, default (toolbar)PartlyUse the toolbar and list buttons. Typed 1. and * start lists.
Message box with “Format messages with markup”Yesbold, italic, strike, backticks, > quotes and text links, applied when you send. Pasted text is plain.
Bots, webhooks and apps (mrkdwn)YesSame styles; links as <url|text>. Escape &, < and >.
HeadingsNoNot supported anywhere. Use a bold line.
TablesNoNot supported. Use a code block grid or label: value lines.
Standard Markdown (**bold**, # heading)NoShows as typed. Convert with Markdown to Slack.

Common mistakes and how to fix them

ProblemFix
My message shows double asterisks and # symbolsSlack bold is one asterisk and Slack has no headings. Convert with Markdown to Slack, or reformat by hand.
A link shows as https://…|text in my messageThat angle-bracket form is for bots and webhooks. In the message box, turn on “Format messages with markup” and use text, or select the text and use the toolbar’s link button.
Pasted formatted text arrives without its formattingWith “Format messages with markup” on, Slack pastes plain text and applies markup when you send. Paste Slack-style markup (*bold*), not Markdown.
A message from my script is cut off or shows a mention I did not writeA < in the text starts a link or mention. Escape &, < and > as &amp;, &lt; and &gt; in text you send through the API.
A table turns into a mess of pipesSlack cannot display tables. Convert it to a grid in a code block or label: value lines with Markdown to Slack.

Tools for this

Frequently Asked Questions

Frequently Asked Questions About Slack formatting

Comprehensive answers to common technical, formatting, security, and compatibility questions.

Select the text and press the Bold button in the toolbar, or with “Format messages with markup” on, wrap it in single asterisks: *bold*. Standard Markdown’s double asterisks do not make bold in Slack.

Sources

← All guides