Markdown to Discord converter
Updated
Paste standard markdown and get text that renders correctly in a Discord message: headings up to ### are kept, __bold__ is rewritten as **bold** (double underscores underline in Discord), tables become an aligned grid in a code block, and anything Discord cannot show is listed under the output with its line number. Runs in your browser.
No approximations: every element has a direct equivalent.
430 characters of markdown → 0 characters of Discord markdown. Everything runs in your browser; nothing is uploaded.
How does each markdown element map to Discord markdown?
The table is the rule set the converter applies, checked against Discord's Markdown Text 101 article. The complete dialect, including spoilers, timestamps and code-block languages, is on the Discord markdown cheat sheet.
| Element | Markdown | Discord markdown | Note |
|---|---|---|---|
| Bold | **bold** or __bold__ | **bold** | In Discord, __text__ is underline, so markdown __bold__ is rewritten as **bold**. |
| Italic | *italic* or _italic_ | *italic* | Both forms work in Discord; the converter uses asterisks. |
| Strikethrough | ~~gone~~ | ~~gone~~ | Same. |
| Underline | (none) | __underline__ | Discord-only; type it directly. |
| Spoiler | ||secret|| | ||secret|| | Passed through unchanged. |
| Inline code | `code` | `code` | Same. |
| Code block | ```js
code
``` | ```js
code
``` | Language tag kept; Discord highlights it. |
| Link | [text](https://u) | [text](https://u) | Masked link. Option: write "text (url)" instead. |
| Heading 1–3 | # ## ### | # ## ### | Supported; a space after the hashes is required. |
| Heading 4–6 | #### Title | **Title** | Not supported past ###; written bold. |
| Subtext | (none) | -# small text | Discord-only; type it directly. |
| Bulleted list | - item
- nested | - item
- nested | Two spaces of indent per level. |
| Numbered list | 1. item | 1. item | Same. |
| Blockquote | > quote | > quote | Same per line; >>> quotes the rest of a message. |
| Table | | a | b |
|---|---| | ```
a b
- -
``` | No tables; aligned grid in a code block. |
| Image |  | alt: https://i.png | No inline images; direct image links embed. |
| Horizontal rule | --- | ——— | No rule in Discord. |
| HTML | <b>x</b> | x | Tags stripped; Discord shows HTML literally. |
| Literal * _ ~ ` | 2\*3 | 2\*3 | Backslash-escaped so they do not format. |
What gets escaped and why?
Literal asterisks, underscores, tildes, backticks and backslashes in your text are prefixed with a backslash so Discord shows them instead of formatting them: snake_case becomes snake\_case, which renders as snake_case. Pipes are left alone so that a ||spoiler|| written in the markdown survives. Text inside inline code and code blocks is never escaped.
Which markdown features have no Discord equivalent?
Tables, images, horizontal rules, headings below h3, footnotes, reference-style links and HTML. Each is rewritten in the closest plain form and reported with its line number. The same document for other targets: Slack, Jira and plain text. Why the dialects differ is covered in markdown flavors; the standard syntax is on the markdown cheat sheet.
Is Discord formatting the same as markdown?
Mostly. Discord uses a subset of markdown plus a few additions: __underline__, ||spoiler||, -# subtext, and >>> for multi-line quotes. It has no tables, images, horizontal rules, or headings smaller than ###, which is where a converter earns its keep.
Why did my __bold__ turn into **bold**?
In CommonMark, double underscores mean strong emphasis (bold). In Discord they mean underline. Because the converter follows the meaning of your markdown, __bold__ becomes **bold**. If you want underline, type __text__ directly in Discord.
Do masked links work in Discord messages?
Yes: Discord's Markdown Text 101 article documents [text](url) masked links, and the converter emits them by default. Discord may show a confirmation when the link text differs from the destination. Switch the Links option to "Plain" to write "text (url)" instead.
Which heading levels does Discord support?
Three: # for a large header, ## for a medium one, and ### for a small one, each followed by a space at the start of a line. Markdown headings 4 to 6 have no equivalent and are written as bold lines, which the warnings list points out.
How do I show a table in Discord?
Discord has no table syntax. The converter pads the columns with spaces, draws a dash rule under the header, and wraps the result in a code block so the monospace font keeps the columns aligned. Column alignment from the markdown separator row (:---:) is respected.