Back to Blog
Guide

Slack Markdown Not Working? Why and How to Fix It

Typed **bold** formats in the Slack message box, but pasted markdown, headings, tables and [text](url) links stay literal until you fix them. What Cmd+Shift+F, the Format messages with markup setting and bot mrkdwn do, from our own tests.

Slack Green Team
September 27, 2026
September 30, 2026
5 min read
Share:
slack
formatting
markdown

Slack markdown usually "stops working" because Slack messages never used standard markdown. Slack has its own markup: one asterisk on each side for bold (*bold*), underscores for italics (_italic_), one tilde for strikethrough (~strike~), backticks for code, and > for a quote. Typed **bold** does turn bold in the message box, but pasted **bold** stays literal, and # Heading, ~~strike~~ and pipe tables show up as the characters you typed. A [text](url) link you type stays literal until you press Cmd+Shift+F (Ctrl+Shift+F on Windows). On pasted text, Cmd+Shift+F formats lists but leaves a stray * on each side of **bold** and does not make links, so convert pasted markdown first. Also check Format messages with markup in Preferences > Advanced.

The syntax and the setting are from Slack's help article "Format your messages in Slack with markup", and the shortcuts from Slack's keyboard shortcuts page, both checked on 27 September. The typed, pasted, markup-mode and bot results below are from our own test messages in a real Slack workspace on 28 September.

Slack markdown not working: typed bold formats, pasted markdown, headings, tables and bot links stay literal

Slack formatting not working: symptom, cause and fix

Slack formatting not working: pasted asterisks, stray asterisks, literal links, headings, tables and bot syntax with their fix
What you seeCauseFix
Pasted **text** shows asterisksPaste keeps the markup as charactersConvert first, then paste
A stray * on each side of bold textCmd+Shift+F or markup mode on **text**One asterisk: *text*
[text](url) stays literalThe default box links it only on Cmd+Shift+FPress Cmd+Shift+F after typing it
# Heading stays a #Slack messages have no headingsA short bold line
Asterisks while you typeFormat messages with markup is onIt formats when you send
A table turns into pipes and dashesNo table syntax in messagesCode block or canvas
A bot shows ** or [text](url)mrkdwn has its own syntax*bold*, and the <url> link form below
A bot shows raw asterisksmrkdwn: false or plain_textUse a mrkdwn text object

Does Slack support markdown?

Partly. Slack's markup borrows some markdown characters and changes others. What works in a message you type:

What formats in a Slack message you type and what stays literal

  • • Bold *text* or **text** when typed, italic _text_, strikethrough ~text~
  • • Inline code with one backtick on each side, and code blocks with three
  • • A quote with > at the start of a line
  • • A bulleted list with * and a space, a numbered list with 1. and a space
  • • A link as [text](url): in the default box it becomes a link only after you press Cmd+Shift+F, and with markup mode on it links when you send
  • What does not work: pasted **bold** and [text](url), __bold__, ~~strike~~, headings, tables, images and horizontal rules. Each style has its own guide: bold and italics, bullet points, quotes and tables. Superscript has no syntax in Slack at all: ^2^ and <sup>2</sup> stay as typed, and only Unicode characters such as ² and ™ show raised.

    Fix pasted markdown that does not format

    When you paste text, Slack keeps markup characters as plain text and shows a toast: "Looks like your content contains markdown. Apply formatting". Slack's shortcut list has the same action: Apply markdown formatting, Cmd+Shift+F on a Mac and Ctrl+Shift+F on Windows and Linux. If it goes wrong, Undo formatting is Cmd+Z (Ctrl+Z).

    The result is only partly formatted. We pasted a standard markdown block into Slack on 28 September and pressed Cmd+Shift+F:

    PastedAfter Cmd+Shift+F
    - item linesA bulleted list
    **bold**Bold, with a stray * on each side
    [text](url)Stays literal; the URL becomes a link chip
    # HeadingStays literal
    A pipe tableStays literal

    Clicking Apply formatting in the toast gave the same bold and link result, and did not convert the list in that run. So Cmd+Shift+F fixes lists but not bold or links in pasted text.

    Text from ChatGPT, Claude, Notion or a GitHub README is written in standard markdown, with double asterisks and # headings, which Slack's markup does not read. Convert it first: paste it into our markdown to Slack converter, press Copy for Slack, and paste the result. Headings become bold lines and tables become aligned code blocks. The ChatGPT case, with a prompt that makes it write in Slack format, is in how to paste ChatGPT into Slack.

Never appear "away" on Slack again

Cloud-based. No downloads. Works 24/7 even when your laptop is off.

The Format messages with markup setting

Turn Slack's markup mode on or off: Preferences, Advanced, Input Options

Slack has two ways to format. By default, the formatting toolbar is on and typed markers turn into formatting as you type. With Format messages with markup on, Slack's help says three things change:

  • • Formatting is applied after you send, so you see asterisks in the box.
  • • Messages you copy and paste appear in plain text.
  • • Automatic formatting for bulleted, numbered and indented lists is not applied.
  • In our test with markup mode on, a typed [text](url) became a link when sent, *one* became bold, **two** became bold with a stray * on each side, and Cmd+U still underlined selected text.

    To change it: click your profile picture, choose Preferences, select Advanced, and under Input Options tick or untick Format messages with markup.

    How to turn off Slack formatting

    To send the characters themselves, not the formatting:

  • • Undo the auto-format. Right after Slack formats what you typed, press Cmd+Z (Ctrl+Z), which Slack's shortcut list calls Undo formatting.
  • • Wrap them in code. Text inside backticks keeps its asterisks and underscores, because Slack's developer docs say inline code does not use other formatting.
  • • Turn on markup mode if you would rather see raw characters while typing, as above.
  • Slack markdown not rendering in bot or API messages

    Slack's developer docs list three switches that decide whether a bot's text is formatted:

  • • The top-level text of chat.postMessage uses mrkdwn by default. "mrkdwn": false turns formatting off. In mrkdwn, **bold** and [text](url) stay literal in our test; write *bold* and <https://slack.green|text>.
  • • Block Kit text objects format only with "type": "mrkdwn". With "type": "plain_text", asterisks stay asterisks.
  • • The markdown block ("type": "markdown") reads standard markdown: **bold**, [text](url) links, # headings, lists and even pipe tables. Use it for LLM output.
  • Slack also treats &, < and > as control characters. Escape them in text you pass through, or a stray < can swallow part of the message:

    def slack_escape(text: str) -> str:
        """Escape the three characters Slack treats as control characters."""
        return text.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")
    
    
    payload = {
        "channel": "C0123456789",
        "text": "*Build failed* for " + slack_escape("feature/a<b & c>"),
    }
    print(payload["text"])

    Before a bot sends a message, paste its text into the Slack to Markdown side of the Markdown to Slack converter to preview how Slack renders it.

    The full syntax for both, with JSON for section blocks, the markdown block and rich text lists, is in Slack Block Kit markdown.

    FAQ

    Why is my Slack markdown not working?

    Slack uses its own markup, not standard markdown. Bold is *one asterisk*, and headings and tables do not exist in messages.

    How do I apply formatting to pasted text in Slack?

    Paste, then press Cmd+Shift+F on a Mac or Ctrl+Shift+F on Windows and Linux (Apply markdown formatting). It turns - lines into a list, but **bold** keeps a stray asterisk on each side and [text](url) stays literal, so convert standard markdown with the markdown to Slack converter before you paste.

    How do I turn off markdown in Slack?

    Press Cmd+Z right after Slack formats your text, wrap the text in backticks, or turn on Format messages with markup in Preferences, Advanced.

    Does Slack support markdown headings?

    Not in messages. Use a short bold line. Canvases and the Block Kit markdown block do support headings.

    Why does my Slack bot show asterisks?

    The text is plain_text or the message has "mrkdwn": false. Use a mrkdwn text object, or send standard markdown in a markdown block.

    Always Active

    Stop Jiggling Your Mouse.

    Join hundreds of remote workers who never worry about their Slack status. Set it up once, stay green forever.

    Related Articles

    Guide

    Slack Daily Standup Without a Paid Bot: /remind, Workflow Builder and a Script

    We set up a weekday 9:30 standup in a free Slack workspace three ways: a /remind reminder, Workflow Builder, and a short script that posts the questions and collects the thread replies.

    Slack Green Team
    Guide

    Slack Tabs Under a Channel Name: What Each One Is and How to Edit Them

    We added, renamed, moved, hid and deleted the tabs under a channel name in Slack web on the Free plan, and compared them with the tabs in a DM.

    Slack Green Team
    Guide

    Leave Multiple Slack Channels at Once: 4 Ways Timed, Plus a Script

    Slack has no bulk leave button. We made 12 test channels and left them with the sidebar menu, the channel browser, /leave and a 30-line script, and timed each way.

    Slack Green Team