Skip to main content

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.

Bold text
**This text is bold.**
Preview

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.

Triple asterisks
***This text is bold and italic.***
Preview

This text is bold and italic.

Nested bold + italic
**_bold italic_**
Preview

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.

Underscore bold
__This text is also bold.__
Preview

This text is also bold.

Bolding part of a word
un**believ**able vs un__believ__able
Preview

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

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.

Discord / Reddit / GitHub / Obsidian
**bold text**
How it looks in Discord / Reddit / GitHub / Obsidian

bold text

Double asterisks render bold in standard Markdown and GFM-based platforms. On Discord, __text__ underlines instead of bolding.

SlackPlatform-specific
*bold text*
How it looks in Slack
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> tag
<strong>This is important.</strong>
Preview

This is important.

Strong importance. This is the same element **text** produces, so in Markdown files you rarely need to type it.

<b> tag
<b>Product name</b> in bold, no extra importance.
Preview

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**
A space just inside the asterisks stops them from opening or closing bold, so they print as literal asterisks. The markers must touch the text.

Broken

*bold text*

Fixed

**bold text**
A single asterisk creates italic, not bold. Use two asterisks for bold. (Slack is the exception: its markup uses one asterisk for bold.)

Broken

un__believ__able

Fixed

un**believ**able
Underscores can't bold part of a word: CommonMark ignores _ and __ when they sit between two letters. Asterisks work mid-word. Whole words that contain underscores, like __my_file_name__, still bold fine.

Broken

**Note:**text

Fixed

**Note:** text
A closing ** that comes right after punctuation must be followed by a space or more punctuation. Followed by a letter, it can't close, so GitHub and every CommonMark parser print the asterisks. Add a space, or move the colon outside: **Note**:text.

Broken

**bold text*

Fixed

**bold text**
Unequal counts don't fail cleanly. Two asterisks before and one after gives a stray * followed by italic text, not bold.

Broken

**text**more text**

Fixed

**text** and **more text**
Asterisks pair up from left to right. The first two ** bold "text", and the third ** has no partner, so it prints literally. Give each bold span its own opening and closing pair.

Quick Reference

SyntaxResultNotes
**text**BoldMost common syntax
__text__BoldUnderscore variant
***text***Bold + italicThree delimiters on each side
**_text_**Bold + italicNested style, also valid
un**bold**edBold part of a wordAsterisks only - un__bold__ed stays literal
*text*Bold in Slack onlyItalic everywhere else
__text__Underline on DiscordBold everywhere else
\*\*text\*\*Literal **text**Backslashes stop the bold
<strong>text</strong>BoldHTML 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.

PlatformSupported?Notes
GitHubYes**text** or __text__ both render bold. ⌘B / Ctrl+B in the comment box.
GitLabYesSame 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.
DiscordYes**text** for bold. __text__ is underline on Discord, not bold.
SlackYes*text* (one asterisk) in Slack's markup and API mrkdwn. **text** only in Block Kit markdown blocks.
NotionYesTyping **text** converts to bold as you type. ⌘B / Ctrl+B also works.
ObsidianYesRenders double-asterisk bold in Live Preview and Reading view.
VS Code previewYesBuilt-in preview supports standard bold syntax.
CommonMarkYesStrong emphasis is part of the CommonMark spec.
Docusaurus / VitePress / AstroYesCore 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**`.