Markdown to Slack converter
Turn markdown into Slack mrkdwn for bots, webhooks and chat.postMessage, or Slack mrkdwn back into markdown, with a live Slack preview. To paste into the Slack message box you no longer need a converter: in our 28 October 2026 test, Slack for web formatted pasted markdown by itself, headings and tables included. Nothing leaves your browser.
Pasting into the Slack message box? You can skip this converter. On 28 October 2026 Slack for web formatted pasted markdown by itself, headings and tables included. Use this page for bot and webhook mrkdwn, for Slack mrkdwn back to markdown, and for task lists, relative links and <br> tags, which Slack's paste leaves broken.
pnpm test before you mergePlan | Seats | Price -----+-------+------ Free | 10 | $0 Pro | 50 | $8
git pull && pnpm install
Copy for Slack copies markdown, which the Slack message box formats on paste, with task boxes, relative links and <br> fixed. Do not paste the mrkdwn below into the message box: Slack reads it as markdown, so *bold* turns italic.
What changes when markdown goes to Slack
Apps and bots post in Slack's own format, mrkdwn. These are the rules the converter applies.
| Markdown | Slack mrkdwn | Note |
|---|---|---|
| **bold** or __bold__ | *bold* | One asterisk on each side. |
| *italic* or _italic_ | _italic_ | Underscores only. |
| ~~strike~~ | ~strike~ | One tilde on each side. |
| [text](https://url) | <https://url|text> | Relative links keep only the text. |
|  | <image.png|alt> | Slack cannot show images inline. |
| # Heading | *Heading* | mrkdwn has no headings, so it becomes a bold line. Pasted in the message box, it is a heading. |
| - item | • item | Nested items get ◦ and ▪, indented 4 spaces. |
| 1. item | 1. item | Renumbered in order, like markdown does. |
| - [ ] task | ☐ task | Done tasks get ☑. |
| > quote | > quote | Nested quotes flatten to one level. |
| ```js ... ``` | ``` ... ``` | The language tag is dropped. |
| | a | b | | code block | mrkdwn has no tables, so columns are padded to line up. Pasted in the message box, it is a real table. |
| --- | ────── | Slack has no divider line. |
| \*literal\* | *literal* | A hidden soft hyphen keeps it from turning bold. |
How to convert markdown for Slack
- Pasting into the Slack message box? Paste the markdown straight in. On 28 October 2026 Slack for web turned pasted bold, links, lists, quotes, code fences, # headings and pipe tables into formatting.
- For a bot or webhook, paste your markdown in the left box. ChatGPT, Claude, GitHub READMEs, Notion exports, and Obsidian notes all work.
- Check the preview. It shows how Slack draws the mrkdwn an app sends: headings turn into bold lines, tables into a code block, and nested lists into indented bullets.
- Tick the escape option and copy the Slack mrkdwn into your chat.postMessage or webhook payload.
Frequently asked questions
How do I paste markdown into Slack with formatting?
Paste it as it is. On 28 October 2026 we pasted plain-text markdown into the message box of Slack for web, and it formatted **bold**, *italic*, ~~strike~~, [text](url) links, lists, quotes and code fences, turned # Heading into a heading and turned a pipe table into a real table. On 28 September the same paste stayed as typed. Three things still came out wrong: a task list kept its [ ] and [x], a relative link like [docs](/en/blog) showed as raw text, and <br> stayed as typed. Copy for Slack on this page fixes those three. Do not paste Slack mrkdwn into the box: Slack now reads it as markdown, so *bold* turns italic and <url|text> links break.
Does Slack support markdown?
Yes in the message box, and partly for apps. Pasted markdown formats in the message box, headings and tables included (our test, 28 October 2026). Typed, *bold* and **bold** format as you go and # plus a space starts a heading, but ~~strike~~ stays as typed and a typed [text](url) needs Cmd+Shift+F. Apps and bots send mrkdwn, which Slack's developer docs say "uses different rules": *bold*, _italic_, ~strike~, and <https://url|text> links. In mrkdwn, **double asterisks**, [text](url), and # headings show up as literal characters, and there are no headings or tables.
How do I post ChatGPT answers in Slack without the asterisks?
Copy the answer with the copy button under the ChatGPT reply, which gives you markdown, and paste it straight into the Slack message box. In our 28 October 2026 test Slack for web turned the markdown into bold text, links, lists, headings and a real table. If the answer has a task list or a relative link, run it through this page and paste the Copy for Slack result instead.
How do I send a table in Slack?
Paste a markdown table with a | at the start and end of every row and a --- row under the header: on 28 October 2026 Slack made it a real table. Up to 20 columns and 100 rows, though; past that Slack showed no warning and then could not send the message. mrkdwn has no tables, so for a bot the converter makes a code block with padded columns, which lines up because code blocks use a fixed-width font. For a real table from a bot, or a table from CSV or a spreadsheet, use the Slack table maker.
What is the difference between markdown and Slack mrkdwn?
Markdown uses **text** for bold, *text* for italic, ~~text~~ for strikethrough, [text](url) for links, and # for headings. Slack mrkdwn uses *text*, _text_, ~text~, and <url|text>, and has no headings, tables, or real lists. Slack also only formats when the marker sits at a word edge, so *bold*text stays literal. The converter adds an invisible zero-width space in that case.
How do I format text for a Slack bot or webhook?
Use the Slack mrkdwn output. It works as the text field of chat.postMessage and incoming webhooks, and in Block Kit text objects of type mrkdwn. Tick "Escape &, < and >" first: Slack treats those three characters as control characters and asks apps to send them as &, <, and >. Block Kit also has a markdown block that accepts standard markdown, if you would rather send the original.
Can I write Slack mrkdwn and convert it back to markdown?
Yes. Switch to Slack to Markdown and paste the mrkdwn, for example the text field of a message from the API, or write it there. The toolbar wraps the selected text in *bold*, _italic_, ~strike~, code, a quote, a list, or a <url|text> link, and the preview shows it the way Slack does. On the markdown side, *bold* becomes **bold**, <url|text> becomes [text](url), bullet lines become a markdown list, and mentions like <@U123> and <!here> become @U123 and @here.
Can I underline text in Slack?
In the message box, yes. Select the text and click Underline in the formatting toolbar, or press Cmd+U on a Mac. Underline has no typed marker, and mrkdwn has none either, so bots and webhooks cannot send underlined text: __text__ stays as typed.
Is my text uploaded anywhere?
No. The conversion runs in your browser, and there is no account or limit. The text never leaves your computer, which matters when you paste internal docs or code.
Related reading
Slack Green does one thing: it keeps your Slack presence dot green while you are actually working, so a quiet keyboard does not mark you away. Try it free.