What "plain ASCII" actually means
ASCII (American Standard Code for Information Interchange) is a 1963 character encoding standard that defines exactly 128 code points — U+0000 through U+007F — covering the English alphabet, digits, basic punctuation, and a handful of control codes. Unicode, the encoding almost everything uses today, defines over 150,000 characters across every written script, plus emoji, symbols, and formatting characters. "Converting to ASCII" means projecting text down from that huge Unicode space into ASCII's original 128 characters, which is fundamentally a lossy operation: most of Unicode has no ASCII equivalent at all.
That makes ASCII conversion a different kind of task than the invisible-character removal this site mostly covers. Deleting a zero-width space is safe because it has no visible glyph to lose. Deleting an accented letter, an emoji, or a whole line of Chinese text is not the same kind of safe — it visibly changes the content. The "Plain ASCII" preset does it anyway, deliberately, for the specific systems that require it.
How the conversion actually works: two passes
NFD decomposition, then strip the accent
Unicode's canonical decomposition form (NFD) rewrites a precomposed accented letter as a base letter followed by a separate, invisible combining mark. é (U+00E9) becomes the plain letter e (U+0065) plus a combining acute accent (U+0301). Deleting every combining mark afterward leaves the readable base letter — café becomes cafe, naïve becomes naive, São Paulo becomes Sao Paulo.
Everything still outside ASCII is removed
Whatever the decomposition pass couldn't reduce to a base ASCII letter — emoji, Chinese, Arabic, Cyrillic, Thai, curly quotes, box-drawing characters — is deleted outright. There is no ASCII lookalike to substitute, so nothing is approximated; it is simply gone from the output.
This is exactly what Unicode's own normalization standard, Unicode Standard Annex #15, "Unicode Normalization Forms", defines NFD to do: canonical decomposition separates a character from marks that alter it, without changing what the text means. Splitting the letter from the accent is what makes stripping the accent surgical instead of guesswork — the same technique behind unicodedata.normalize('NFD', text) in Python and equivalent library calls in most programming languages.
Before and after: what survives, what doesn't
| Original | After Plain ASCII | What happened |
|---|---|---|
| café | cafe | Accent transliterated, letter kept |
| "smart quotes" | "smart quotes" | Curly quotes converted to straight quotes |
| Zürich — 100% | Zurich - 100% | Umlaut stripped, em dash converted to hyphen |
| Great job! 🎉 | Great job! | Emoji deleted — no ASCII fallback exists |
| 北京 (Beijing) | (Beijing) | Chinese characters deleted, not transliterated |
Notice the last two rows: nothing is substituted for the emoji or the Chinese text, because there is no ASCII character that means the same thing. This is why the preset is labeled destructive rather than a universal cleanup step.
When to use Plain ASCII (and when not to)
Reach for Plain ASCII only when the destination system actually requires it — not as a default. It is the right choice for a legacy database column with an ASCII-only constraint, a fixed-width EDI or mainframe import, some CSV pipelines, or a handful of older applicant tracking systems that mis-handle anything past code point 127. It is the wrong choice for ordinary prose, multilingual content, social posts, or anything containing names, quotes, or emoji that need to stay legible — for that, the default AI Clean preset or the typography normalizer fixes punctuation without deleting a single letter. Code, JSON, and CSV specifically have their own decision guide on sanitizing copied text for code, JSON, and CSV.
How to convert Unicode to ASCII (3 steps)
- Paste your text into the cleaner at the top of this page.
- Switch the mode to "Plain ASCII." The preview updates instantly and the "What changed" report lists every character it transliterated or removed, by name and code point, so nothing disappears silently.
- Review before you use it. Because the conversion deletes non-Latin text and emoji, skim the output for anything you didn't expect to lose before copying it into a system that needed ASCII in the first place.