Strikethrough syntax
Double tildes are the portable form. The GFM spec also accepts single tildes, but many other parsers only recognize the pair, so always use two.
~~This price is outdated.~~ New price: $0. MDTool is free.Compatibility
Strikethrough is not part of core Markdown or CommonMark. It works on GitHub, GitLab, Discord, Obsidian, and in MDTool converters (PDF, HTML as <del>, and Word), but strict CommonMark parsers render the tildes literally.
Where strikethrough works
Nearly every modern editor and chat app supports crossing out text, but a few use a single tilde or a toolbar shortcut instead of the double-tilde syntax.
| Platform | Syntax | Note |
|---|---|---|
| GitHub | ~~text~~ (or ~text~) | Renders as <del> |
| GitLab | ~~text~~ | - |
| Obsidian | ~~text~~ | Also has a "Toggle strikethrough" command |
| VS Code preview | ~~text~~ | Double tildes only |
| Notion | ~text~ while typing | Or Cmd/Ctrl+Shift+S |
| Reddit, Discord | ~~text~~ | - |
| Slack | ~text~ | Uses single tildes |
HTML alternatives: <del> and <s>
Where inline HTML is allowed (including GitHub), you can write the tags directly. <del> marks content that was removed, such as an edit in a changelog, and is what ~~ produces. <s> marks text that is no longer accurate or relevant, like an old price. Both look the same; the difference is meaning for screen readers and search engines. Pair <del> with <ins> to show a replacement.
Deadline: <del>Friday</del> <ins>Monday</ins>
Price: <s>$49</s> FreeStrikethrough in tables, links and lists
Tildes work inside table cells like any other inline formatting. To cross out a link, put the tildes outside the brackets so the whole link is struck; put them inside to strike only part of the link text. Struck-through list items are a common way to show finished or cancelled tasks.
| Plan | Price |
|------|-------|
| Pro | ~~$49~~ Free |
~~[Old documentation](https://example.com/v1)~~
[~~Old~~ New documentation](https://example.com/v2)
- ~~Cancelled: print handouts~~Combining with bold, italic and code
Strikethrough nests with other emphasis. Put the tildes inside the asterisks or the other way round, and both render. Inside inline code, tildes are shown literally, so wrap the code span instead.
**~~bold and struck~~**
*~~italic and struck~~*
~~`deprecatedFunction()`~~Frequently Asked Questions
What HTML does Markdown strikethrough produce?
GFM renders ~~text~~ as a <del> element, which is also what MDTool’s Markdown to HTML converter outputs.
Is there a keyboard shortcut for strikethrough?
Not in Markdown itself. VS Code has none built in; the Markdown All in One extension toggles strikethrough with Alt+S on Windows. Obsidian has a "Toggle strikethrough" command you can bind under Settings → Hotkeys. Notion uses Cmd/Ctrl+Shift+S.
Should I use one tilde or two?
Two. GitHub accepts ~one~ as well, but VS Code’s preview and many other parsers only recognize ~~two~~, and three or more tildes never strike text through.
Why are my tildes showing instead of a line through the text?
Either the renderer does not support the GFM strikethrough extension, there is a space just inside the tildes (~~ text ~~), or the text spans a blank line, which ends the formatting. Keep the tildes tight against the words and within one paragraph.
Try it live
Paste this syntax into the free markdown to html converter and see the rendered output instantly. No signup, and everything runs in your browser.
Open Markdown to HTML Converter →