Skip to main content

Markdown Strikethrough Syntax

The complete guide to crossing out text in Markdown. Covers the core ~~text~~ syntax, Discord, Reddit, GitHub, Slack quirks, HTML fallbacks, and the common mistakes that break it.

Short answer

Wrap the text in two tildes: ~~crossed out~~. That works in GitHub, GitLab, Discord, Reddit, Obsidian, and VS Code. Slack and Notion use one tilde (~crossed out~). Strikethrough is not part of CommonMark, so where the extension is off, use HTML: <s>text</s> or <del>text</del>.

Basic Syntax

Wrap the text in two tildes on each side. The tildes must touch the first and last character — no spaces between the tilde and the word.

GFM strikethrough
~~This text is crossed out.~~
Preview

This text is crossed out.

Inline Strikethrough

The syntax works the same when you cross out a word inside a sentence. Tildes directly touch the characters they wrap, and they combine with bold and italic.

Crossing out a single word
You can ~~strike through~~ a single word mid-sentence. 
Preview

You can strike through a single word mid-sentence.

Combined with bold and italic
**~~Bold and struck~~** and ~~*italic and struck*~~
Preview

Bold and struck and italic and struck

Platform Variations

Most platforms use ~~text~~. The big exception is Slack, whose markup uses a single tilde. Notion's typing shortcut is also a single tilde.

DiscordPlatform-specific
~~strikethrough~~
How it looks in Discord
strikethrough

Two tildes on each side, same as GitHub Flavored Markdown. Discord documents only the two-tilde form.

SlackPlatform-specific
~strikethrough~
How it looks in Slack
strikethrough

One tilde on each side, both in the message box and in API mrkdwn text. ⌘⇧X / Ctrl+Shift+X also works in the composer. Only Block Kit markdown blocks sent by apps use ~~text~~.

One tilde or two? The GFM spec, and therefore GitHub, accepts both ~text~ and ~~text~~. Discord, Reddit, GitLab, and Obsidian document only two. Slack, Notion, and Telegram's bot MarkdownV2 use one. Pandoc reads a single tilde as subscript, so H~2~O is a chemical formula there and a struck-through 2 on GitHub. Two tildes is the portable choice.

HTML Fallback

If a renderer does not support GFM strikethrough, use inline HTML. Choose <s> for visual styling or <del> when the text is being marked as deleted.

<s> tag — stylistic strikethrough
<s>This is stylistically crossed out.</s>
Preview

This is stylistically crossed out.

Use when the cross-out is purely presentational and carries no semantic meaning.

<del> tag — deleted text
<del>This was removed.</del>
Preview

This was removed.

Use when the text is being marked as deleted from a document, changelog, or diff.

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 strikethrough fails. Each row shows the broken version and the corrected one side by side.

Broken

--strikethrough--

Fixed

~~strikethrough~~
Hyphens are not strikethrough syntax in any Markdown flavor. They print as hyphens (or become a dash in editors with smart punctuation).

Broken

~~ strikethrough ~~

Fixed

~~strikethrough~~
Spaces between the tildes and the text break the formatting. The tildes must touch the first and last character.

Broken

~~strikethrough

Fixed

~~strikethrough~~
Missing the closing tildes. Nothing gets struck through: the opening ~~ prints as literal tildes.

Broken

~~~strikethrough~~~

Fixed

~~strikethrough~~
Three tildes never strike through (GFM accepts one or two). At the start of a line it is worse: ~~~ opens a fenced code block, and on GitHub everything after it turns into code.

Broken

~~strikethrough~~ (in a Slack API message)

Fixed

~strikethrough~
Slack's mrkdwn uses a single tilde. Double tildes only work in Block Kit markdown blocks.

Quick Reference

SyntaxWorks inNotes
~~text~~GitHub, Discord, Reddit (new), Notion, Obsidian, VS CodeMost common syntax
~text~GitHub, Slack, NotionGFM allows one; Slack and Notion use one; subscript in Pandoc
~~~text~~~NowhereThree tildes never strike; at line start it opens a code fence
<s>text</s>HTML-enabled renderersStylistic strikethrough
<del>text</del>HTML-enabled renderersSemantic deleted text
--text--NowhereHyphens do not create strikethrough

Platform Support

Strikethrough is widely supported but not universal. The table below tells you which syntax to use where.

PlatformSupported?Notes
GitHubYesGFM allows one or two tildes: ~~text~~ or ~text~.
GitLabYesGitLab's docs show two tildes: ~~text~~.
Reddit (www)Yes~~text~~ in the Markdown editor. The Rich Text editor has a strikethrough button instead.
Reddit (old)Yes~~text~~ works: old Reddit's snudown parser has the strikethrough extension on.
DiscordYes~~text~~, part of Discord's Markdown subset.
SlackYes~text~ (one tilde) in Slack's markup and API mrkdwn. ⌘⇧X / Ctrl+Shift+X in the composer.
NotionYesType ~text~ (one tilde) and it converts as you type. ⌘⇧S / Ctrl+Shift+S also works.
ObsidianYesRenders two-tilde strikethrough in Live Preview and Reading view.
VS Code previewYesBuilt-in preview supports GFM strikethrough.
CommonMark / Standard MarkdownNoStrikethrough is not in the CommonMark spec. Use HTML <s> or <del>.
Docusaurus / VitePress / AstroYesOn by default: remark-gfm in Docusaurus and Astro, markdown-it in VitePress.

Frequently Asked Questions

How do I strikethrough text in Markdown?

Use two tildes on each side of the text: ~~strikethrough~~. This is the GitHub Flavored Markdown syntax and works in GitHub, GitLab, Discord, Reddit, Obsidian, VS Code, and most static-site generators. Slack and Notion use a single tilde: ~strikethrough~.

Is strikethrough part of standard Markdown?

No. Strikethrough is not in John Gruber's original Markdown or the CommonMark spec. It is an extension, standardized in the GitHub Flavored Markdown spec, and most platforms have adopted it. If you need strikethrough in a strict CommonMark environment, use HTML: <s>text</s> or <del>text</del>.

Why does my Slack strikethrough show literal tildes?

Slack's markup uses a single tilde for strikethrough: ~text~. That applies in the message box and in mrkdwn text sent through the API, so GitHub-style ~~text~~ is not Slack's syntax there. The exception is the Block Kit markdown block that apps can send, which takes standard ~~text~~. In the composer, ⌘⇧X (Mac) or Ctrl+Shift+X (Windows) also applies strikethrough.

Does strikethrough work on Reddit?

Yes, ~~text~~ works on both www.reddit.com and old.reddit.com, because old Reddit's parser has the strikethrough extension enabled. If you see literal tildes, you are probably in the Rich Text editor, which is the default on reddit.com and leaves typed Markdown alone. Use its strikethrough button, or switch to the Markdown editor.

Does GitHub require one or two tildes?

Either. The GFM spec and GitHub's docs accept ~text~ and ~~text~~, but three or more tildes do not strike through. Two tildes is the portable choice: Discord, Reddit, GitLab, and Obsidian document only the two-tilde form. Single tildes have a side effect on GitHub: H~2~O renders the 2 struck through, not as a subscript. Use H<sub>2</sub>O instead.

Can strikethrough span multiple lines?

Across lines in the same paragraph, yes: ~~first line and second line~~ strikes both. A blank line ends it, so strikethrough cannot cross paragraphs, list items, or table cells. Put a separate pair of tildes in each one.

Can I use HTML to strikethrough in Markdown?

Yes. The <s> tag gives presentational strikethrough and the <del> tag marks deleted text semantically. Both work in renderers that allow inline HTML, including GitHub, GitLab, Obsidian, VS Code, and most static-site generators. Reddit, Slack, and Discord strip or ignore HTML, so this workaround does not work there.

What is the difference between <s> and <del>?

Visually, both render as strikethrough. Semantically, <del> means the text has been removed from a document (use it in diffs and changelogs). <s> means the text is no longer accurate or relevant but was not part of the document's edit history. For purely visual styling, use <s>.

Is there a keyboard shortcut for strikethrough?

Not in Markdown itself, and GitHub's docs list none. Editors add their own: Slack uses ⌘⇧X on Mac or Ctrl+Shift+X on Windows, and Notion uses ⌘⇧S or Ctrl+Shift+S.

Why can't I use strikethrough inside a code block?

Code blocks disable all Markdown formatting, including strikethrough. Inside backticks or fenced blocks, tildes are treated as literal characters. If you need to show mixed syntax, close the code block first or use HTML outside the code block.