Strikethrough Text Generator – C̶r̶o̶s̶s̶ ̶O̶u̶t̶ Text Anywhere
The Strikethrough Text Generator turns ordinary typing into crossed-out text that survives copy and paste into Instagram bios, X posts, TikTok captions, Discord and Slack messages, WhatsApp chats, YouTube comments, Reddit threads, Notion pages and even email subject lines. None of those fields accept an HTML tag, but every one of them stores Unicode faithfully — and that is exactly what this tool produces.
How combining overlay marks work
A rich-text editor stores formatting as metadata sitting beside the letters, which is why the styling vanishes the moment you paste into a plain-text field. This tool works one level down. After each character it appends a combining diacritical mark — a codepoint that carries no width of its own and instructs the font to draw something on top of the character before it. The string S followed by U+0336 renders as a single glyph with a line through it, and because both codepoints are genuinely in the string, the line travels wherever the text goes.
| Style | Codepoint | Sample | Reliability |
|---|---|---|---|
| Long stroke | U+0336 | D̶r̶a̶f̶t̶ | Excellent everywhere |
| Short stroke | U+0335 | D̵r̵a̵f̵t̵ | Good, leaves visible gaps |
| Tilde | U+0334 | D̴r̴a̴f̴t̴ | Patchy on older Android |
| Slash | U+0338 | D̸r̸a̸f̸t̸ | Can precompose with = and < |
Unicode strikethrough versus Markdown and HTML
Where the platform understands markup, use it. Markdown ~~text~~ works on GitHub, Reddit, Discord and most static site generators; <s>text</s> works on any page you control; and [s]text[/s] covers classic forum software. All three keep the underlying words as plain letters, which means search still finds them and screen readers still read them properly. Reach for the Unicode version only when the destination strips markup — the tool shows all four outputs side by side so the comparison takes a second.
Partial strikethrough for price corrections
The most common real use is showing a revised figure: crossing out the old price and leaving the new one legible. Switch the range to word range or character range and only the chosen span receives the mark, so Was $99 now $49 becomes W̶a̶s̶ ̶$̶9̶9̶ now $49. The skip spaces toggle is the other favourite: leaving the gaps unstruck makes each word look individually cancelled rather than joined by one continuous rule.
Character, code point and byte counts
Decoration is not free. Every combining mark is a separate code point costing two extra bytes in UTF-8, so eight visible characters become sixteen code points and twenty-four bytes. Platforms disagree about what they measure — some count code points, some count UTF-16 code units, and databases count bytes — so the statistics panel reports all of them next to a fit check for the 280-character X limit, the 150-character Instagram bio, Bluesky posts and the 70-character UCS-2 SMS segment. Struck text is always UCS-2, never the cheaper GSM-7 encoding.
Cleaning struck text back up
Reverse mode normalises the input to NFC and strips every overlay mark it recognises, including the underline U+0332 and overline U+0305 extras, then reports how many it removed. This is what you want when you have copied a stylised username and need something searchable, or when you are cleaning pasted content before storing it. Generate mode does the same clean-up first, so text is never accidentally struck twice.
Grapheme-safe processing
Naively looping over a string breaks surrogate pairs and zero-width-joiner emoji sequences, producing corrupted output. This tool segments the input into grapheme clusters so an accented letter or a multi-part emoji is treated as one unit and the mark is appended after the whole cluster, never inside it. Emoji are skipped by default because the result rarely renders as intended. Everything runs in your browser — nothing you type is uploaded, and the same input always produces the same output.