InputTestHub

Slack Message Formatter

Converts standard Markdown into Slack mrkdwn, fixing double asterisks and turning Markdown links into Slack's angle-bracket form.

Text Nothing uploaded No sign-up Free, unlimited
Text tool
Paste something on the left to see the result.
In short Slack uses mrkdwn, which is its own syntax and not Markdown, and converting between them needs more than a find and replace. Bold is a single asterisk where Markdown uses two. Italic is a single underscore. Strikethrough is a single tilde where Markdown uses two. Links are the biggest departure: Slack writes an angle-bracket form with the URL first and the label after a pipe, so a Markdown link has to be turned inside out rather than adjusted. Two things have no equivalent at all. Headings do not exist in mrkdwn, so a heading becomes a bold line on its own — which is what Slack's own composer does when you paste one. Bullet lists do not exist either, so the bullet becomes a literal character at the start of the line. Because those two are conversions rather than translations, the output matches what Slack itself produces rather than approximating it. The single-asterisk rule is the one that catches Markdown users, exactly as it does on WhatsApp, and for the same reason: both predate Markdown's dominance.

How to use the Slack Message Formatter

  1. Paste the Markdown.
  2. Read the conversion list to see what changed.
  3. Copy the mrkdwn out and paste it into Slack or a webhook payload.

About the Slack Message Formatter

The Slack Message Formatter converts standard Markdown into Slack mrkdwn, fixing double asterisks and turning Markdown links into Slack's angle-bracket form. It runs as plain JavaScript inside the page, which means there is no upload step, no queue and no size limit imposed by a server — the only limit is your own device.

What people use it for

  • Posting release notes written in Markdown into Slack.
  • Fixing a message where the links arrived as literal brackets.
  • Writing a webhook payload that formats correctly.

Details

Bold*text* — one asterisk, where Markdown uses two
Italic_text_
Strikethrough~text~ — one tilde
Link<https://x|label>, not [label](https://x)
HeadingsNone — they become bold lines
ListsNone — the bullet is a literal character
Headings and bullet lists have no mrkdwn equivalent, so this converts them to the closest thing that survives: a heading becomes a bold line, and a list bullet becomes a literal •. That is what Slack itself does when you use its composer, so the result matches rather than approximates.

Where this tool stops

Converts message text. Slack's Block Kit layouts use a different structure entirely, and a few mrkdwn features — user, channel and group mentions such as <@U012ABC> — need real workspace IDs that a static page cannot know.

Frequently asked questions

Why do my links show as literal brackets in Slack?
Because Slack mrkdwn is not Markdown, and its link syntax is <code>&lt;https://example.com|label&gt;</code>. A pasted <code>[label](url)</code> has no meaning to it, so it prints exactly as typed — which is the clearest single demonstration that the two formats only look alike.
Why one asterisk for bold?
Because Slack's mrkdwn predates Markdown's dominance and chose its own conventions. It uses one asterisk for bold and one underscore for italic, where Markdown uses two asterisks for bold and one for italic. The overlap is what makes it confusing: <code>*text*</code> is valid in both and means something different in each.
I pasted mrkdwn and it stayed literal. What happened?
Your workspace is probably using the WYSIWYG composer, which formats as you type and treats pasted markup as text. Turn off "Format messages with markup" in Slack's Advanced preferences, or send through a webhook where mrkdwn is always parsed.
Are there any usage caps on the Slack Message Formatter?
No charge and no sign-up. There is no free tier to run out of because there is no paid tier — inputtesthub.com is funded by advertising rather than by metering the page.
Does anything I enter leave my computer?
No. The Slack Message Formatter runs entirely in your browser using JavaScript. Your input never reaches inputtesthub.com or any third party — open your browser's Network tab while you use it and you will see no request go out.
What problem does the Slack Message Formatter solve?
In practice it gets used for three things: posting release notes written in Markdown into Slack. Fixing a message where the links arrived as literal brackets. Writing a webhook payload that formats correctly. It is built for exactly those cases rather than being a general-purpose tool with this bolted on.
Where does the Slack Message Formatter stop being reliable?
Converts message text. Slack's Block Kit layouts use a different structure entirely, and a few mrkdwn features — user, channel and group mentions such as <code>&lt;@U012ABC&gt;</code> — need real workspace IDs that a static page cannot know. Knowing where a tool stops being trustworthy matters more than the cases where it works.
What are the key numbers for the Slack Message Formatter?
Bold is <code>*text*</code> — one asterisk, where Markdown uses two. Italic is <code>_text_</code>. Strikethrough is <code>~text~</code> — one tilde. These are printed on the page itself, so you do not have to take them on trust.
Is there an app version?
Yes. The page is responsive and the page works in Chrome, Safari, Firefox, Edge and Samsung Internet on both Android and iOS. There is no app to install and nothing to sign into.

Related text tools

All 92
01

Case Converter

Converts text between twelve cases: UPPER, lower, Title, Sentence, camelCase, PascalCase…

02

Uppercase Converter

Converts any text to UPPERCASE instantly, keeping numbers, punctuation and line breaks exactly…

03

Lowercase Converter

Converts any text to lowercase, including text that was typed with Caps Lock on by mistake.

04

Title Case Converter

Converts headings to proper Title Case using AP and Chicago rules, keeping short words like…

05

Sentence Case Converter

Rewrites text in sentence case: first letter of each sentence capitalised, the rest lowercase…

06

camelCase Converter

Turns any phrase into camelCase for JavaScript, Java and JSON keys, stripping spaces, hyphens…

07

PascalCase Converter

Converts phrases to PascalCase (UpperCamelCase) for class names, React components and type…

08

snake_case Converter

Converts text to snake_case for Python variables, database columns and file names.

09

kebab-case Converter

Converts text to kebab-case for URLs, CSS class names and HTML attributes.

10

CONSTANT_CASE Converter

Converts text to SCREAMING_SNAKE_CASE for environment variables, constants and configuration…