Markdown Bold Text
How to bold text in Markdown with **text**: bold + italic, asterisks vs underscores, bolding part of a word, links and code, platform quirks, and the mistakes that leave you looking at asterisks.
Short answer
Wrap the text in two asterisks: **bold text**. Two underscores (__bold text__) work too, but only around whole words: to bold part of a word, use asterisks (un**believ**able). Three asterisks give bold italic (***text***), and the markers must touch the text. Two platforms differ: Slack's markup uses one asterisk (*bold*), and on Discord __text__ underlines instead of bolding.
Basic Syntax
Wrap the text in two asterisks on each side. The asterisks must touch the first and last character - no spaces between the marker and the word.
**This text is bold.**This text is bold.
Bold + Italic
Use three asterisks or three underscores around the text. You can also nest one style inside the other if you need to mix markers.
***This text is bold and italic.***This text is bold and italic.
**_bold italic_**bold italic
Asterisks vs Underscores
Markdown accepts both **text** and __text__. Around whole words they produce the same result. Asterisks are the safer default for two reasons: underscores can't bold part of a word, and on Discord __text__ means underline.
__This text is also bold.__This text is also bold.
un**believ**able vs un__believ__ableunbelievable vs un__believ__able
CommonMark only lets _ open or close emphasis at a word boundary, so underscores between two letters are left alone. That rule is what keeps snake_case_names from turning italic, and it also means __my_file_name__ bolds the whole name correctly.
Bold Links and Code
Bold wraps around a link or part of its text. Code is the opposite: inside backticks or a code block, asterisks are shown as typed, so the bold markers go outside the backticks, and bold inside a multi-line block needs HTML.
**[Bold link](https://example.com)**[Partly **bold** link](https://example.com)Run **`npm install`** first.Run npm install first.
<pre>
npm <b>install</b> --save
</pre>npm install --save
The <pre> trick works on GitHub and other renderers that allow HTML, but you lose syntax highlighting. More on fences and highlighting in the code block guide.
Platform Variations
Most platforms use **text**. Slack is the main exception: its markup uses a single asterisk for bold and an underscore for italic. See the Slack guide for which of its three formatting surfaces you are typing into.
**bold text**bold text
Double asterisks render bold in standard Markdown and GFM-based platforms. On Discord, __text__ underlines instead of bolding.
*bold text*Slack's markup uses one asterisk for bold, both in the message box and in API mrkdwn text. ⌘B / Ctrl+B also works in the composer. Apps that send a Block Kit markdown block use the standard **bold** instead.
HTML Fallback
Inline HTML works wherever the renderer allows it, which is useful inside HTML blocks where Markdown isn't parsed. Choose <strong> for importance or <b> to draw attention without implying importance.
<strong>This is important.</strong>This is important.
Strong importance. This is the same element **text** produces, so in Markdown files you rarely need to type it.
<b>Product name</b> in bold, no extra importance.Product name in bold, no extra importance.
Draws attention without adding importance (keywords, product names). Use <strong> for anything that matters.
Reddit, Slack, and Discord strip or ignore inline HTML, so these fallbacks only help in document-based renderers like GitHub, GitLab, Obsidian, VS Code, and static-site generators.
Common Mistakes
The most frequent ways bold formatting fails. Each row shows the broken version and the corrected one side by side.
Broken
** bold text **Fixed
**bold text**Broken
*bold text*Fixed
**bold text**Broken
un__believ__ableFixed
un**believ**ableBroken
**Note:**textFixed
**Note:** textBroken
**bold text*Fixed
**bold text**Broken
**text**more text**Fixed
**text** and **more text**Quick Reference
| Syntax | Result | Notes |
|---|---|---|
| **text** | Bold | Most common syntax |
| __text__ | Bold | Underscore variant |
| ***text*** | Bold + italic | Three delimiters on each side |
| **_text_** | Bold + italic | Nested style, also valid |
| un**bold**ed | Bold part of a word | Asterisks only - un__bold__ed stays literal |
| *text* | Bold in Slack only | Italic everywhere else |
| __text__ | Underline on Discord | Bold everywhere else |
| \*\*text\*\* | Literal **text** | Backslashes stop the bold |
| <strong>text</strong> | Bold | HTML semantic fallback |
Platform Support
Bold is one of the most widely supported Markdown features. The variables are Slack, which uses one asterisk, Discord, where double underscores underline, and editors that don't parse typed Markdown at all.
| Platform | Supported? | Notes |
|---|---|---|
| GitHub | Yes | **text** or __text__ both render bold. ⌘B / Ctrl+B in the comment box. |
| GitLab | Yes | Same as GitHub Flavored Markdown. |
| Reddit (www) | Yes | **text** in the Markdown editor. The default Rich Text editor and the mobile post composer use the B button instead. |
| Reddit (old) | Yes | **text** works in old Reddit's snudown parser. |
| Discord | Yes | **text** for bold. __text__ is underline on Discord, not bold. |
| Slack | Yes | *text* (one asterisk) in Slack's markup and API mrkdwn. **text** only in Block Kit markdown blocks. |
| Notion | Yes | Typing **text** converts to bold as you type. ⌘B / Ctrl+B also works. |
| Obsidian | Yes | Renders double-asterisk bold in Live Preview and Reading view. |
| VS Code preview | Yes | Built-in preview supports standard bold syntax. |
| CommonMark | Yes | Strong emphasis is part of the CommonMark spec. |
| Docusaurus / VitePress / Astro | Yes | Core syntax in their Markdown and MDX parsers. No plugin needed. |
Frequently Asked Questions
How do you bold text in Markdown?
Wrap the text in two asterisks: **bold text**. You can also use double underscores: __bold text__. Both render as bold in most Markdown parsers.
Is bold text part of standard Markdown?
Yes. Strong emphasis (bold) is part of the CommonMark specification. It is implemented with double asterisks or double underscores.
What is the difference between asterisks and underscores for bold?
Around whole words, **text** and __text__ produce the same bold output. The difference is inside a word: un**believ**able bolds the middle, while un__believ__able stays literal, because CommonMark ignores underscores that sit between two letters. On Discord, __text__ means underline. Asterisks work in both cases, so they are the safer default.
How do you make text bold and italic in Markdown?
Use three asterisks or three underscores around the text: ***bold italic*** or ___bold italic___. You can also combine the two styles: **_bold italic_** or __*bold italic*__.
How do I bold part of a word in Markdown?
Use asterisks: un**believ**able renders the middle in bold. Double underscores don't work mid-word (un__believ__able prints the underscores) because CommonMark only lets underscores open or close emphasis at a word boundary.
Why does my bold text not work in Slack?
Slack's own markup uses a single asterisk for bold (*text*) and underscores for italic (_text_), both in the message box and in mrkdwn text sent through the API. Double asterisks are not Slack's bold syntax. The exception is the Block Kit markdown block that apps can send, which takes standard **bold**. In the composer, ⌘B or Ctrl+B also works.
Why does __text__ underline instead of bold on Discord?
Discord changed the meaning of double underscores: __text__ is underline there, and **text** is bold. Everywhere that follows CommonMark or GitHub Flavored Markdown, __text__ is bold. Use ** if you want bold that works on both.
Can I use HTML to bold text in Markdown?
Yes. Use <strong>text</strong> for strong importance or <b>text</b> to draw attention without adding importance. Markdown's **text** already produces <strong>. Both tags work in HTML-enabled renderers such as GitHub, GitLab, Obsidian, VS Code, and most static-site generators. They do not work in Reddit, Slack, or Discord, which strip or ignore inline HTML.
Why does my bold text show asterisks instead of bold?
The usual causes are a space just inside the asterisks (** text **), a closing ** right after punctuation and followed by a letter (**Note:**text), unequal counts (**text*), an extra unpaired **, or a Rich Text editor that does not parse Markdown at all, such as Reddit's default composer. Make the markers touch the text and add a space after a closing ** that follows punctuation.
Can I bold text inside a link or code block?
Yes for links: **[bold link](https://example.com)** bolds the whole link and [partly **bold** link](https://example.com) bolds part of it. Inside a code span or fenced code block, asterisks are shown literally, so put the asterisks outside the backticks: **`code`**. To bold words inside a multi-line code block, use an HTML <pre> block with <b> tags, which GitHub and other HTML-enabled renderers allow.
Is there a keyboard shortcut for bold in Markdown?
Markdown itself is plain text, so the shortcut comes from the editor. ⌘B on Mac or Ctrl+B on Windows inserts or applies bold in GitHub's comment box, Notion, and Slack, and Obsidian documents ⌘B on Mac. VS Code has no built-in Markdown bold shortcut (Ctrl+B toggles the sidebar) unless you add an extension.
How do I show asterisks without making text bold?
Escape each asterisk with a backslash: \*\*not bold\*\* displays as **not bold**. Asterisks inside backticks are also shown literally: `**not bold**`.