Skip to main content

Fix Formatting

Convert Unicode Text to Plain ASCII

CleanPastedText editorial · Updated

Text workbench

Try it on your text

Cleaning mode

Converts the result to keyboard characters for code and older systems.

Try a real example

Each sample contains a problem you cannot see.

Original

Pasted text

0 chars · 0 words

Cleaned

Ready to copy

0 changes

Text stays in this browser

Same words · No AI rewriting · No content logging

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

Pass 1 — Transliterate

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.

Pass 2 — Delete the rest

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

OriginalAfter Plain ASCIIWhat happened
cafécafeAccent 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)

  1. Paste your text into the cleaner at the top of this page.
  2. 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.
  3. 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.

Source

Common questions

Frequently asked questions

How do I convert Unicode text to plain ASCII?

Paste your text into CleanPastedText and switch the cleaning mode to "Plain ASCII." It transliterates accented letters to their unaccented base form (é becomes e, ñ becomes n) using Unicode NFD decomposition, then removes every remaining character outside the printable ASCII range — including emoji, curly quotes, em dashes, and non-Latin scripts. The result contains only the 95 printable ASCII characters plus tabs and newlines.

Does converting to ASCII fix accented letters or delete them?

Both, depending on the letter. Accented Latin letters are transliterated, not deleted: NFD decomposition splits a precomposed character like é (U+00E9) into a plain e plus a separate combining acute accent mark, and the ASCII pass then strips only the accent mark, leaving the readable letter behind. Characters with no ASCII equivalent — Chinese, Arabic, Cyrillic, Thai, emoji — have nothing to fall back to, so they are deleted outright rather than approximated.

What happens to emoji and non-Latin text like Chinese or Arabic when I convert to ASCII?

They are removed entirely. ASCII has no representation for a pictograph or a CJK, Arabic, or Cyrillic character, so there is no safe transliteration to fall back on — the Plain ASCII preset deletes them rather than substituting a lookalike or a placeholder like '?'. This makes Plain ASCII a lossy, destructive conversion for multilingual text and it should only be used when the destination truly requires it.

Why do some systems still require plain ASCII text?

Older databases, some CSV and EDI pipelines, certain email headers, legacy mainframe and point-of-sale systems, and a handful of applicant tracking systems only guarantee correct behavior for the 128 characters ASCII defines. Anything outside that range can be rejected, mis-encoded, or silently mangled into mojibake. Plain ASCII conversion is the deliberate, worst-case fix for exactly those destinations — see when to reach for it below.

What's the difference between the Typography preset and Plain ASCII?

Typography normalization (on by default in AI Clean) only rewrites a small, specific set of punctuation — curly quotes, en/em dashes, and the ellipsis character — to their ASCII equivalents, and leaves every letter, emoji, and script untouched. Plain ASCII does that plus transliterates accented letters and then deletes everything else non-ASCII, including emoji and non-Latin text. Typography normalization is safe for almost any text; Plain ASCII is intentionally destructive and should be a deliberate choice.

Can I remove accents without deleting emoji or other languages?

Not with a single preset — CleanPastedText's Plain ASCII mode bundles accent transliteration together with deleting everything else outside ASCII, since that is what "plain ASCII" means by definition. If you only need to fix curly quotes and dashes while keeping accented letters, emoji, and other scripts intact, use the default AI Clean or Keep Typography preset instead, which never touches letters outside the punctuation it targets.

Continue reading

Related guides & tools