Markdown cheatsheet · Strikethrough

Strikethrough in markdown

Two tildes cross text out: ~~like this~~. It's a GitHub Flavored Markdown extension that works almost everywhere, with one famous exception, Slack, that uses a single tilde instead.

The syntax

Two tildes on each side of the text. It's a GitHub Flavored Markdown extension, not part of the original spec, but by now nearly every editor and renderer supports it.

You type
~~the old plan~~ the new plan
You get

the old plan the new plan

One tilde or two?

This is where it gets renderer-specific, and where most people trip. GFM wants two tildes. A single tilde means different things in different tools:

You typeWhat it does
~~text~~Strikethrough in GitHub, GitLab, Obsidian, Discord, Reddit
~text~Strikethrough in Slack only; subscript in Pandoc; nothing in GFM
The Slack trap. Slack is the odd one out: it strikes through with a single tilde, ~text~, and shows a literal ~~text~~ as two visible tildes. If your strikethrough came out wrong in Slack, that's why. Everywhere else, use two.

Combining with bold and italic

Strikethrough nests with other emphasis, so you can strike out text that's already bold or italic.

You type
~~**struck and bold**~~

~~*struck and italic*~~
You get

struck and bold

struck and italic

Order doesn't matter: **~~text~~** and ~~**text**~~ render the same. See bold & italic for the emphasis side.

Where it works, and where it doesn't

Strikethrough is GFM, so it renders anywhere that speaks GitHub Flavored Markdown, which is most places: GitHub, GitLab, Obsidian, Reddit, Discord, Notion, and editors like maxdown. The holdout is a strict CommonMark renderer with no GFM extensions, where ~~text~~ shows up as literal tildes. If a document has to survive one of those, there's no markdown fallback; you'd drop to the HTML tag <del>text</del> (or <s>) where inline HTML is allowed.

Why your strikethrough isn't working

A space just inside the tildes

~~ text ~~ won't render. The tildes have to hug the text: ~~text~~.

You're in Slack

Use one tilde there, not two. See the trap above.

The renderer is strict CommonMark

No GFM means no strikethrough. You'll see the tildes as plain text. Use <del> instead.

You wanted to show literal tildes

Escape them with a backslash, \~\~, or wrap the text in a code span where nothing is formatting.

Common questions

Is strikethrough the same as a deleted-text tag?

Visually yes, and most renderers turn ~~text~~ into an HTML <del> element, which carries the meaning "removed". <s> is the purely visual version.

Can I strike through a whole heading or list item?

Yes, the tildes work inside headings, list items and table cells, anywhere inline text is allowed.

How do I strike through in a comment or chat app?

Depends on the app: two tildes almost everywhere, one tilde in Slack. When in doubt, two.

Cross it out and watch it happen. Strikethrough is the kind of thing you want to see immediately, not after switching to a preview. maxdown renders ~~text~~ in place as you type, so a crossed-out line looks crossed out on the spot.

Related syntax

· All markdown guides

Less syntax. More writing.

Download maxdown

Free · no account · macOS, Windows & Linux