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.

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.

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

You can strike through a single word mid-sentence.

Platform Variations

Most platforms use ~~text~~. The two big exceptions are Slack (single tilde) and old Reddit (no support). Always match the syntax to the platform's stored format, not just the composer shortcut.

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

Two tildes on each side — same as GitHub Flavored Markdown.

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

One tilde on each side. Double tildes (~~text~~) render as literal tildes in mrkdwn.

Reddit / old.reddit.com: ~~text~~ is not supported. Old Reddit renders the tildes literally. New Reddit and the official apps support it.

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. They render as literal hyphens in every Markdown renderer.

Broken

~ strikethrough ~

Fixed

~strikethrough~
Spaces between the tilde and the text break the formatting. Tildes must touch the word.

Broken

~~strikethrough

Fixed

~~strikethrough~~
Missing the closing tildes. Most parsers keep treating following text as part of the strikethrough.

Broken

~strikethrough~ in Slack

Fixed

~~strikethrough~~ in Slack composer
On Slack only: mrkdwn requires a single tilde. The composer accepts ~~ as a shortcut and converts it on send.

Quick Reference

SyntaxWorks inNotes
~~text~~GitHub, Discord, Reddit (new), Notion, Obsidian, VS CodeMost common syntax
~text~GitHub, SlackGFM allows one; Slack mrkdwn requires one
<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~.
GitLabYesSame as GitHub Flavored Markdown — two tildes.
Reddit (new)Yes~~text~~ works in new Reddit and the official apps.
Reddit (old)No~~text~~ renders as literal tildes on old.reddit.com.
DiscordYes~~text~~ — part of Discord's Markdown subset.
SlackYes~text~ in mrkdwn. Composer converts ~~ shortcuts on send.
NotionYesPasting ~~text~~ converts to a strikethrough formatted span.
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 / AstroYesGFM plugin applies two-tilde strikethrough.

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 Discord, Reddit (new), GitHub, GitLab, Notion, Obsidian, VS Code, and most static-site generators.

Is strikethrough part of standard Markdown?

No. Strikethrough is not in the original Markdown spec or CommonMark. It was introduced as a GFM extension and has been adopted by most platforms. 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 mrkdwn uses a single tilde for strikethrough: ~text~. If you send ~~text~~ through the Slack API or in a Block Kit text field, it renders as literal tildes. Slack's composer will convert the ~~ shortcut on send, but the underlying stored format uses one tilde.

Why doesn't my strikethrough work on old Reddit?

old.reddit.com uses snudown, which does not support strikethrough. The ~~text~~ syntax renders as literal tildes. New Reddit, the official apps, and third-party apps that use the new renderer support it. For old Reddit, there is no reliable strikethrough workaround.

Does GitHub require one or two tildes?

GitHub Flavored Markdown accepts one or two tildes: ~text~ and ~~text~~ both render as strikethrough. Most authors use two tildes because that is the widely recognized syntax and it avoids conflicts with Slack's single-tilde meaning.

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 strips all 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>.

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.

Related Markdown Guides

Strikethrough is one of several text-formatting extensions. For the full syntax surface area: