This tool converts accented Vietnamese into plain ASCII by removing every tone mark and vowel modification. It is built for technical contexts — usernames, filenames, email handles, and URL slugs — where diacritics cause problems.
Why Vietnamese diacritic removal is different from other languages
Vietnamese is a tonal language that uses diacritics in two distinct, overlapping ways. Unlike French (where accents just modify pronunciation) or Spanish (where accents mark stress), Vietnamese diacritics carry both pitch information (the six tones) and phonemic information (modified base vowels that represent completely different sounds). This makes Vietnamese one of the more complex scripts to process for ASCII conversion.
A Vietnamese word can carry both a base-vowel modification and a tone mark stacked on the same letter: the ế in tiếng layers a circumflex (ê) underneath a rising tone (acute). A naive byte-replacement approach often misses one layer or the other; this tool handles both.
How it works
Vietnamese diacritics fall into two groups: the five tone marks and the base vowel modifications such as the circumflex (â ê ô), breve (ă), and horn (ơ ư). The tool first decomposes the text into base letters plus separate combining marks using Unicode NFD normalization, then deletes all combining marks. Because the letter đ does not decompose into d plus a mark, it is mapped explicitly. The remaining characters are recomposed into clean ASCII.
This Unicode-based approach is more reliable than a static lookup table, which would need to enumerate all 134+ distinct Vietnamese letter-plus-tone combinations individually.
The six tones and what gets removed
Vietnamese has six tones, each written with a different diacritic (or absence of one):
| Tone | Name | Example | Stripped to |
|---|---|---|---|
| Level (flat) | Ngang | ma | ma |
| Falling | Huyền | mà | ma |
| Rising-broken | Sắc | má | ma |
| Dipping | Hỏi | mả | ma |
| Creaky-rising | Ngã | mã | ma |
| Checked | Nặng | mạ | ma |
All six collapse to the same base letter when stripped. A reader of the ASCII output cannot reconstruct the original word — which is exactly why this output should only ever be used for identifiers, never as a substitute for the Vietnamese original.
Common use cases
- Usernames and handles: a user named
Nguyễn Thị Hươngneeds a username that works in systems limited to ASCII. Stripping producesNguyen Thi Huong, which then becomesnguyen-thi-huongas a slug. - Email addresses: some older mail systems reject non-ASCII local parts. Stripping the name before generating an address avoids delivery failures.
- URL slugs: Vietnamese blog posts need clean URLs.
Hồ Chí Minhbecomes the slugho-chi-minh. - Database keys and filenames: ASCII identifiers avoid encoding headaches in systems that were not designed for Unicode paths.
- Search normalisation: stripping tone marks before indexing lets a search for
nguyenmatchNguyễn,Nguyên, andNguyện.
Worked examples
Tiếng Việt→Tieng Viet→ slug:tieng-vietĐà Nẵng→Da Nang→ slug:da-nangHồ Chí Minh→Ho Chi Minh→ slug:ho-chi-minhPhở bò→Pho bo→ slug:pho-bo
Remember that stripping tones removes meaning — má, mà, mả, mã, and mạ all collapse to ma — so use the
output only for identifiers, never as a replacement for the original Vietnamese.