Vietnamese is written with a Latin alphabet plus a lot of marks: five tone marks, the letters ă â ê ô ơ ư and đ. Those marks are exactly what goes wrong when text moves between programs, so this page collects the five jobs people most often need for Vietnamese text in one place:
- Encodings: convert between Unicode and the old font encodings TCVN3 (ABC) and VNI, and the plain-ASCII VIQR notation. Garbled text such as "Vieät Nam" or "ViÖt Nam" becomes "Việt Nam" again.
- Telex / VNI: turn the keys you would press on a Vietnamese keyboard ("Tieengs Vieetj") into the letters ("Tiếng Việt"), or the other way round.
- Remove accents: "Đường đời" becomes "Duong doi", with đ turned into d.
- Slug: a URL-safe name such as "duong-doi-dau-phai-duong-thang", with a choice of separator and maximum length.
- Case: UPPER, lower, Title and Sentence case that keep every tone in place.
Everything runs in your browser. The result follows each keystroke, and Use as input lets you chain jobs, for example decode a VNI file and then make a slug from it.
Why Vietnamese text turns into garbage
Before Unicode became the norm in the 2000s, Vietnamese computers used 8-bit fonts, and each font family had its own idea of which byte meant which letter. In TCVN3 (also called ABC, with fonts named .VnTime or .VnArial) every lower-case letter has one byte; in VNI (fonts named VNI-Times) a letter is usually a base letter followed by a second byte for its marks. Shown in the right font, both look like Vietnamese. Shown in any ordinary font, the computer reads those bytes as Western European letters, and "Việt Nam" appears as "Vieät Nam" (VNI) or "ViÖt Nam" (TCVN3).
This tool reads that garbled view directly: paste the text exactly as you see it, leave From on Detect automatically, and it counts the tell-tale characters of each encoding to decide which one it is. The answer is marked as clear or as a guess; with very short text, pick the encoding yourself. Converting the other way (Unicode to TCVN3 or VNI) is for feeding old systems and templates that still expect those fonts.
Two details trip people up. TCVN3 only has codes for the seven capitals without a tone (Ă Â Ê Ô Ơ Ư Đ); a heading like "VIỆT NAM" was typed in lower case and displayed with a capital font such as .VnTimeH. Tick Set in a capital font to get the capitals back. And TCVN3 stores "ư" as the byte many programs treat as a soft hyphen, so it can vanish when text is copied; if every "ư" is missing, the damage happened before the text reached this page.
Telex and VNI typing
Telex uses letters: aa → â, aw → ă, ee → ê, oo → ô, ow → ơ, uw → ư, dd → đ, then s, f, r, x, j for sắc, huyền, hỏi, ngã, nặng, and z to remove a tone. VNI uses digits: 6 for the circumflex, 7 for the horn, 8 for the breve, 9 for đ and 1 to 5 for the tones. Keys can come in any order inside a word, so "tieengs" and "tieesng" both give "tiếng". Pressing a modifier twice types it literally ("ass" → "as").
The reverse direction, Vietnamese → keys, is handy for teaching someone to type or for writing instructions. Tone on oa, oe, uy chooses between the modern placement (hòa, khỏe, thủy), which most keyboards and school books use today, and the classic one (hoà, khoẻ, thuỷ). Both are correct Vietnamese; pick one and use it consistently, because "hòa" and "hoà" are different strings to a search box.
Accents, slugs and case
Removing accents keeps punctuation, digits and other languages untouched, and works the same whether the text was composed (one code point per letter, NFC) or decomposed (base letter plus combining marks, NFD, which macOS file names and some PDFs produce). When the input was decomposed, the tool says how many letters it joined, which explains why two strings that look identical did not match.
A slug keeps only a–z, 0–9 and your separator. A maximum length cuts at a word boundary rather than in the middle of a word. Case conversion handles đ/Đ and the stacked marks correctly, so "đường" becomes "ĐƯỜNG", and Sentence case capitalises after each full stop, question mark or exclamation mark. For counting words or working with other languages, the general text toolkit has more options.