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.
~~the old plan~~ the new plan
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 type | What it does |
|---|---|
~~text~~ | Strikethrough in GitHub, GitLab, Obsidian, Discord, Reddit |
~text~ | Strikethrough in Slack only; subscript in Pandoc; nothing in GFM |
~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.
~~**struck and bold**~~ ~~*struck and italic*~~
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.
~~text~~ in place as you type, so a crossed-out line looks crossed out on the spot.