Markdown Strikethrough Generator

Type your text, pick tilde or HTML output, and copy strikethrough Markdown that renders everywhere. Everything runs locally in your browser.

Free · No sign-up · Runs in your browserLast updated

How do you strikethrough text in Markdown?

Wrap the text in double tildes: `~~text~~`. It renders as a <del> element with a line through it. Strikethrough is a GitHub Flavored Markdown extension rather than core CommonMark, so GitHub, GitLab, Reddit and Discord support it, while strict CommonMark parsers need the HTML tag `<del>text</del>` instead.

markdown
~~This text is struck through~~

Renders as struck-through text and compiles to a <del> element in the generated HTML.

Try the Markdown Strikethrough Generator

Settings

Strikethrough method

Output

Markdown strikethrough syntax explained

Strikethrough crosses a word out while leaving it readable, which is exactly what you want for corrections, superseded requirements, completed tasks and old prices. There are three ways to write it, and which one is safe depends on the parser rather than on personal taste.

Double tildes (recommended)

The canonical GitHub Flavored Markdown form. Use it for READMEs, issues, pull requests, Discord messages, Obsidian notes and anything rendered by a GFM-compatible parser.

markdown
Ship it ~~Monday at 3pm~~ Tuesday at 2pm.

Renders as: Ship it Monday at 3pm Tuesday at 2pm — with “Monday at 3pm” crossed out.

Single tilde

The GFM strikethrough extension accepts one or two tildes, so GitHub renders ~text~ as well. Many other parsers do not, and Slack's own composer uses single tildes exclusively — treat it as platform-specific, not portable.

markdown
~Deprecated in v2~

Crossed out on GitHub, GitLab and Slack. Rendered literally, tildes included, in Discord and most CommonMark-only parsers.

HTML tag fallback

Strikethrough is not part of the original Markdown spec or CommonMark. When your parser refuses tildes, drop down to raw HTML — every Markdown flavour that allows inline HTML accepts it.

markdown
<del>Removed in the 2.0 rewrite</del>
<s>Visually struck out, no semantic meaning</s>

Both render with a line through the text. <del> means the content was deleted; <s> only means it is no longer accurate.

Combining with bold, italic and links

Strikethrough nests with other inline formatting, and the nesting order does not change the output. This is how you strike out an entire link label rather than just its text.

markdown
~~**Critical bug**~~ fixed in 1.4
~~[Old migration guide](https://example.com/v1)~~

The first line shows bold text with a line through it; the second strikes out the whole clickable link label.

Task lists and tables

Inline strikethrough works inside every construct that accepts inline formatting, including checklists and table cells — a common pattern for changelogs and release checklists.

markdown
- [x] ~~Write first draft~~
- [ ] Review draft

| Plan | Price |
| --- | --- |
| Pro | ~~$99~~ $79 |

The completed task and the old price appear crossed out; the remaining rows stay untouched.

Escaping literal tildes

Escape with a backslash, or wrap the text in backticks, when you need the tilde characters to show. Note that a home directory path like ~/projects is a single tilde and never triggers strikethrough on its own.

markdown
\~\~not struck through\~\~
`~~shown as code~~`

Both lines display the tildes literally instead of crossing the text out.

Where Markdown strikethrough works

Because strikethrough is an extension, support is good but not universal — and the single-tilde variant is where platforms genuinely disagree. Check the target before you publish.

PlatformSupportNotes
GitHub / GitLabFull~~text~~ works in READMEs, issues, PRs, comments and wikis. Single tildes also render.
DiscordFullRequires double tildes. Single tildes are shown literally, and HTML tags are never parsed.
SlackPartialSlack's composer uses single ~tildes~ for strikethrough; double tildes are not its native syntax.
ObsidianFull~~text~~ renders in both edit and reading view, and inline HTML <del> works too.
NotionFullTyping ~~text~~ auto-converts to struck-through text as you type.
RedditFullDouble tildes are supported in the Markdown editor and in old.reddit.com.
VS Code previewFullThe built-in Markdown preview follows GFM, so double tildes render as expected.
CommonMark / classic MarkdownNoneNo tilde syntax at all. Use <del> or enable a GFM strikethrough plugin.

How to strikethrough text in Markdown

  1. Enter your text

    Type or paste the words you want to cross out into the input field above.

  2. Pick a syntax

    Choose double tildes for GitHub and most platforms, single tilde for Slack, or the HTML tag when your parser does not support the GFM extension.

  3. Copy the output

    Use the copy button on the Markdown tab, or switch to the HTML tab if you need <del> markup for a template or email.

  4. Check the preview

    Open the preview tab to confirm the line lands on exactly the words you meant to strike before you publish.

Frequently Asked Questions

What does ~~ mean in Markdown?

Two tildes on each side of a phrase mark it as strikethrough — the text stays readable but is drawn with a horizontal line through it. It compiles to a <del> element, which signals that the content was removed or superseded rather than simply deleted from the page.

Is strikethrough part of standard Markdown?

No. Neither the original 2004 Markdown specification nor CommonMark defines strikethrough. It was added by GitHub Flavored Markdown and then adopted almost everywhere, which is why it works on GitHub, GitLab, Reddit and Discord but fails silently in strict CommonMark parsers such as a default python-markdown install.

How do I strikethrough text in GitHub Markdown?

Wrap the text in double tildes, for example ~~outdated instructions~~. This works in READMEs, issues, pull requests, comments, releases and wikis. GitHub follows the GFM strikethrough extension, which also accepts a single tilde, but double tildes are the convention and are far more portable.

What is the difference between one tilde and two tildes?

The GFM extension treats one or two tildes as strikethrough, so on GitHub they behave the same. Elsewhere they diverge: Slack recognises only single tildes, Discord recognises only double tildes, and many parsers recognise only double tildes. Use two tildes unless you are writing specifically for Slack.

Why is my Markdown strikethrough not working?

The usual causes are a space between the tildes and the text, an unmatched or unclosed tilde pair, a parser without the GFM extension enabled, or text sitting inside a code block or inline code span where formatting is deliberately ignored. Three or more tildes at the start of a line are also read as a code fence.

How do I strikethrough text in Discord and Slack?

Discord uses double tildes: ~~text~~. Slack is the exception among major chat apps and uses a single tilde: ~text~. Neither app renders HTML, so the <del> tag is shown literally in both. Copying the same snippet between the two is the most common cause of broken strikethrough in chat.

Can I combine strikethrough with bold, italic or links?

Yes. Strikethrough nests freely with other inline formatting and the order does not matter, so ~~**text**~~ and **~~text~~** produce the same result. Wrapping a whole link in tildes, as in ~~[label](https://example.com)~~, strikes out the clickable label while keeping the link functional.

Can strikethrough span multiple lines or paragraphs?

Tilde syntax is inline only and stops at a blank line, so each paragraph needs its own pair of tildes. To strike out a whole block at once, wrap it in HTML instead: put the paragraphs inside an opening and closing <del> tag, which any Markdown flavour that allows inline HTML will honour.

How do I show a literal tilde without triggering strikethrough?

Escape each tilde with a backslash, or wrap the text in backticks to turn it into inline code, which disables all formatting. A lone tilde in a path such as ~/projects is harmless because strikethrough requires a matching closing pair on the same line.

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

<del> marks content that was actually removed from a document and can carry cite and datetime attributes, so it is the better choice for changelogs and revisions. <s> only means the content is no longer accurate or relevant, such as an expired price. Markdown tildes normally compile to <del>.