Back to Blog
Guide

Slack Markdown Not Working? Why and How to Fix It

Slack markdown is not working because Slack messages do not use standard markdown. They use Slack's own markup: *bold* with one asterisk, _italic_, ~strike~, and no headings or tables. Fixes for pasted text (Cmd+Shift+F), the Format messages with markup setting, and bots.

Slack Green Team
September 27, 2026
September 27, 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. Standard markdown such as **bold**, # Heading, ~~strike~~ and pipe tables shows up as the characters you typed. If your syntax is right and it still does not format, the cause is a setting or the way you pasted: press Cmd+Shift+F (Ctrl+Shift+F on Windows) after pasting to apply formatting, and 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.

While you fix formatting, keep in mind that Slack sets you to away after about 10 minutes without input in the Slack window. Slack Green keeps your status green from a server during the hours you set.

Slack markdown not working: Slack uses its own markup, one asterisk for bold, no headings or tables

Slack formatting not working: symptom, cause and fix

Slack formatting not working: six symptoms with their cause and fix
What you seeCauseFix
**text** shows asterisksStandard markdownOne asterisk: *text*
# Heading stays a #Slack messages have no headingsA short bold line
Pasted text is not formattedPaste keeps the markup as charactersCmd+Shift+F after pasting
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 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:

Standard markdown vs Slack markup: what works in a Slack message and what does not

  • • Bold *text*, 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), which Slack's help lists for markup mode
  • What does not work: **bold**, __bold__, ~~strike~~, headings, tables, images and horizontal rules. Each style has its own guide: bold and italics, bullet points, quotes and tables.

    Fix pasted markdown that does not format

Never appear "away" on Slack again

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

When you paste text, Slack keeps markup characters as plain text. Slack's shortcut list has an action for this: Apply markdown formatting, Cmd+Shift+F on a Mac and Ctrl+Shift+F on Windows and Linux. Paste, press the shortcut, and Slack formats the pasted markup. If it goes wrong, Undo formatting is Cmd+Z (Ctrl+Z).

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.

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

    Never appear "away" on Slack again

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

    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.
  • • 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**, # 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 message formatter to preview how Slack renders it.

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

    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

    Ideas

    Slack Emoji for Announcements, Updates and Reminders

    The standard Slack emoji for an announcement is 📣 :mega: or 📢 :loudspeaker: at the start of the post. Use 🚨 :rotating_light: only for real emergencies, 🆕 :new: for updates, ⏰ :alarm_clock: for reminders, and ask readers to react with ✅ :white_check_mark: once they have read it. Templates and a custom emoji idea.

    Slack Green Team•5 min read
    Templates

    Slack Status for a Doctor Appointment: 24 Statuses and Emoji

    A Slack status for a doctor appointment says you are out and when you are back, such as 🏥 'At an appointment, back at 2 PM.' You do not have to say what kind. 24 statuses for doctor, dentist and other appointments, the emoji codes, and how to schedule the status so it clears by itself.

    Slack Green Team•5 min read
    Templates

    Slack Status for Limited Availability: 30 Statuses to Copy

    A Slack status for limited availability says you are around but slow, until when, and how to reach you if it is urgent, such as ⏳ 'Limited availability today, replies after 3 PM. Urgent: @mention me.' 30 statuses for busy days, slow replies and catching up, the emoji to use, and when to pause notifications too.

    Slack Green Team•5 min read