UTF-8 to ASCII in four ways
ASCII covers only 128 characters: English letters, digits, punctuation and control codes. Plenty of systems still accept nothing else — legacy mainframes, some payment and banking formats, file names on older systems, SMS gateways, barcode payloads. The UTF-8 to ASCII converter rewrites every character above U+007F using one of four strategies, while ASCII characters pass through untouched.
The options compared
Input: Crème brûlée costs €5 — “naïve” café in Zürich
| Mode | Output | Reversible? |
|---|---|---|
| Unicode escapes | Cr\u00E8me br\u00FBl\u00E9e costs \u20AC5 \u2014 \u201Cna\u00EFve\u201D caf\u00E9 in Z\u00FCrich | Yes |
| HTML references | Crème brûlée costs €5 — “naïve” café in Zürich | Yes |
| Transliterate | Creme brulee costs EUR5 - "naive" cafe in Zurich | No |
| Remove them | Crme brle costs 5 nave caf in Zrich | No |
Unicode escapes
Writes \uXXXX, the notation used by JavaScript, JSON, Java and C#. Characters above U+FFFF become surrogate pairs. Use it for source code and configuration files that must stay ASCII.
HTML references
Writes decimal references like é for HTML and XML documents.
Transliterate
Replaces characters with the closest plain-ASCII look-alikes: accents are removed (é → e), ligatures and special letters are expanded (ß → ss, æ → ae, ø → o), typographic quotes and dashes become " and -, and € becomes “EUR”. Characters with no sensible equivalent, such as Chinese or Arabic script, become ?. Ideal for URL slugs, usernames, file names and legacy data exports.
Remove them
Deletes all non-ASCII characters. Use it with care: “Zürich” becomes “Zrich”, which can change meaning.
Which mode for which destination?
| Destination | Mode | Why |
|---|---|---|
| JSON, JavaScript or Java source | Unicode escapes | The program still sees the original characters |
| HTML or XML in an ASCII-only template | HTML references | Browsers render the original characters |
| File names, usernames, legacy CSV imports | Transliterate | Readable and safe for systems that reject accents |
| URL slugs | Transliterate, then lowercase with hyphens | The slug generator does both steps |
| Payment or bank files with a restricted character set | Transliterate | Names stay recognisable instead of losing letters |
Reserve Remove them for cases where non-ASCII characters are known to be noise, such as stray symbols in log lines.
Doing the same in code
Transliteration by decomposition is a one-liner in most languages: s.normalize('NFD').replace(/\p{M}/gu, '') in JavaScript, or unicodedata.normalize('NFKD', s).encode('ascii', 'ignore') in Python. On the command line, iconv -f UTF-8 -t ASCII//TRANSLIT gives similar results. These remove accents but, unlike this tool, do not expand ß, æ or typographic quotes.
Tips
- If you only want accents gone and other characters kept, the Remove Accents tool is gentler.
- To check exactly which characters are non-ASCII, list them with Char to ASCII.
- Transliteration is language-neutral: German “ü” becomes “u”, not “ue”. Adjust names by hand where local conventions matter.
The conversion runs in your browser and your text stays on your device.