Skip to main content

Markdown Underline

Standard Markdown has no underline syntax — the workaround is the HTML <u> tag. Works in GitHub, Notion, Obsidian, and most renderers that allow HTML.

Jump to: Why no underline? · HTML <u> tag · <ins> tag · Common mistakes · Discord · Platform support · FAQ

Why Standard Markdown Has No Underline

Markdown was intentionally designed without an underline syntax. The reason: underlined text looks like a hyperlink in browsers. Adding underline formatting would make it impossible to tell at a glance whether something is a clickable link or just styled text.

John Gruber (Markdown's creator) left underline out on purpose to keep formatting visually unambiguous. Most Markdown flavors follow this convention — with the notable exception of Discord, which adds its own native underline syntax.

Accessibility note: Avoid using underline for decoration. Screen readers and users with dyslexia may interpret underlined text as a link. Use bold or italic for emphasis instead, and reserve underline only when it carries clear meaning.

The HTML <u> Tag Workaround

Most Markdown renderers allow inline HTML. Wrap your text in <u>text</u> to add an underline. This works in GitHub, VS Code, Notion, Obsidian, and most static site generators.

Basic HTML underline tag

Markdown

<u>This text is underlined.</u>

Preview

This text is underlined.

Inline underline — works anywhere in a paragraph

Markdown

This is normal text with <u>underlined words</u> inside a sentence.

Preview

This is normal text with underlined words inside a sentence.

Mixing underline with bold

Markdown

**Bold** text and <u>underlined text</u> in the same line.

Preview

Bold text and underlined text in the same line.

Underlined bold text

Markdown

<u>**Underlined and bold**</u> — combine both effects.

Preview

Underlined and bold — combine both effects.

The <ins> Tag — Semantic Underline

The <ins> tag renders identically to <u> as underlined text, but carries semantic meaning: it marks content as inserted or added to a document. Use it in changelogs, diffs, or anywhere you want to signal that content was added.

<ins> renders as underline and has semantic meaning

Markdown

<ins>This text was inserted.</ins>

Preview

This text was inserted.

Semantic use — marking inserted content

Markdown

Original text. <ins>This was added later.</ins> More original text.

Preview

Original text. This was added later. More original text.

Common Mistakes

Underscores in Markdown do not create underline — they create emphasis. Here is what actually happens when you try the obvious guesses:

Wrong: single underscores = italic in Markdown

What you type

_This creates italic, not underline._

What you get

This creates italic, not underline.

Wrong: double underscores = bold in standard Markdown

What you type

__This creates bold, not underline.__

What you get

This creates bold, not underline.

The fix for both: use <u>text</u> instead of underscores.

Discord Native Underline

Discord is the only major platform with a native underline syntax. Use __text__ (double underscores) to underline text in Discord. This is Discord-specific — the same syntax creates bold in standard Markdown.

Basic underlineDiscord only

Discord syntax

__underline text__
How it looks in Discord
underline text
Underline + boldDiscord only

Discord syntax

__**underline + bold**__
How it looks in Discord
underline + bold
Underline + italicDiscord only

Discord syntax

__*underline + italic*__
How it looks in Discord
underline + italic
Underline + bold + italicDiscord only

Discord syntax

__***underline + bold + italic***__
How it looks in Discord
underline + bold + italic

Using Discord? See the full Discord Markdown guide for every formatting trick available in Discord.

Platform Support

Underline support varies widely. Most platforms allow the <u> tag; a few block all HTML.

PlatformUnderline SupportMethod
GitHub✓ Supported<u>text</u>
VS Code preview✓ Supported<u>text</u>
Notion✓ Supported<u>text</u>
Obsidian✓ Supported<u>text</u>
Discord✓ Native syntax__text__
Slack✗ Not supportedNo underline available
Reddit✗ Not supportedHTML is stripped
Standard Markdown✗ No native syntaxHTML workaround only

Quick Reference

SyntaxResultWorks in
<u>text</u>underlined textGitHub, VS Code, Notion, Obsidian
<ins>text</ins>inserted textGitHub, VS Code, Notion, Obsidian
__text__underlinedDiscord only
_text_italic (not underline)Do not use for underline

Frequently Asked Questions

How do I underline text in Markdown?

Standard Markdown has no underline syntax. The most widely supported workaround is the HTML <u> tag: <u>your text here</u>. This works in GitHub, VS Code, Notion, Obsidian, and most Markdown renderers that allow HTML.

Why doesn't Markdown support underline?

Markdown was designed to keep formatting minimal and readable as plain text. Underline was intentionally left out because hyperlinks are already displayed as underlined text in browsers — adding underline syntax would cause visual confusion between underlined text and clickable links.

Does _text_ create underline in Markdown?

No. Single underscores (_text_) create italic text in Markdown, not underline. Double underscores (__text__) create bold text in standard Markdown. Neither creates underline (except in Discord, where __text__ is Discord's native underline syntax).

What is the difference between <u> and <ins>?

Both render as underlined text visually, but they have different semantic meanings. <u> is purely presentational — it just adds an underline. <ins> stands for 'inserted text' and carries meaning: it signals that the content was added to a document (like in a diff or changelog). Use <ins> when you want to indicate new or inserted content; use <u> for visual decoration.

Does Discord have native underline syntax?

Yes. Discord uses __text__ (double underscores) for underline. This is Discord-specific and overrides the standard Markdown bold behavior for double underscores. It does not work in GitHub, Notion, or other standard Markdown tools.

Can I underline text in GitHub Markdown?

Yes, using the HTML <u> tag. GitHub Markdown allows a safe subset of HTML, and <u> is one of the allowed tags. Write <u>your text</u> in any GitHub comment, README, or wiki page and it will render as underlined text.

Does the <u> tag work in every Markdown editor?

It works in most editors that allow HTML passthrough: GitHub, GitLab, VS Code preview, Notion, Obsidian, and many static site generators. It does not work in editors that strip HTML for security (like Reddit or some CMS platforms). When in doubt, check whether the tool you are using allows inline HTML.

Related Guides