SubtitleMedic

How to fix garbled Vietnamese subtitles

Updated October 18, 2026

You download Vietnamese subtitles, start the film and see lines like Xin chà o, Chµo b¹n or Chaøo baïn. Vietnamese speakers call this a “font error” (lỗi font), but the font is rarely the problem. The file was saved in one text encoding, the table that turns letters into bytes, and the player reads it with another.

Each kind of mistake leaves its own trail of symbols. A glance at a few of them tells you which encoding the file is in, and the fix is almost always the same: read the file with the right encoding and save it as UTF-8, which every modern player, TV and website reads.

Read the symbols to find the cause

Take the line “Xin chào, bạn khỏe không?” (“Hi, how are you?”). Depending on how the file was saved and how the player reads it, it can turn into any of the following.

“Xin chà o, bạn khá»e”: UTF-8 read the wrong way

Every accented letter becomes two or three characters starting with Ã, Ä, Æ or á»: đ becomes Ä‘, ố becomes ố, ư becomes ư.

There are two possibilities:

  • The file is fine; the player misreads it. It is UTF-8, but the player (often an older TV, or software set to a Western European encoding) reads it as Windows-1252.
  • The file was damaged before you got it. Someone opened a UTF-8 file in an editor that assumed Windows-1252 and saved it as UTF-8 again. The garbage is now part of the file and every player shows it.

Both can be fixed. In the second case, the tool finds each line that was converted twice and turns the letters back.

“Chµo b¹n, ®­îc kh«ng?”: the TCVN3 (ABC) fonts

Symbols such as µ, ¹, ®, «, ¬, Ö and Õ inside words are the sign of TCVN3, also called ABC, the encoding behind the .VnTime and .VnArial fonts. It was Vietnam’s national standard from 1993 and is common in old subtitles, Word documents and early-2000s websites.

A few pairs to recognise: µ is à, ¹ is ạ, ® is đ, « is ô, ¬ is ơ, and a soft hyphen, usually invisible, is ư. That is why “được” shows as ®­îc and seems to have only three characters.

TCVN3 has no codes for capital letters with tone marks: capitals were drawn with a separate font (.VnTimeH). Converted to Unicode, those letters come out in lowercase, so “Ở” may show as “ở”.

“Chaøo baïn, ñöôïc khoâng?”: the VNI fonts

If the letters are still readable but an odd character follows the vowels (ø, ù, û, õ, ï, â, ä) and đ turns into ñ, the file is VNI-Windows, the encoding of the VNI-Times and VNI-Helve fonts. VNI writes every marked vowel as two bytes: the plain vowel, then its marks.

A few pairs to recognise: aø is à, aï is ạ, eä is ệ, oâ is ô, ô alone is ơ, ö is ư, ñ is đ. That is why “Việt Nam” shows as Vieät Nam and “được” as ñöôïc.

“Xin chào, baòn khoÒe”: Windows-1258 read as Windows-1252

Most letters are right and only some tone marks go astray: bạn becomes baòn, khỏe becomes khoÒe. This is Windows-1258, Microsoft’s Vietnamese code page. It stores tone marks as separate bytes after the vowel, and read as Windows-1252 those bytes become other letters.

“Xin ch?o, b?n kh?e” or “Xin ch�o”: an old file read as UTF-8

Question marks or a diamond with a question mark (�) in place of accented letters mean the player reads the file as UTF-8 while it is really in an older encoding (Windows-1258, TCVN3 or VNI). Its accented bytes aren’t valid UTF-8, so they are replaced.

Empty boxes □□: a missing font, not an encoding problem

If a text editor shows the letters correctly but the player shows boxes, the file is fine. The player’s subtitle font simply has no shapes for Vietnamese letters. Switch the subtitle font to Arial, Tahoma or Roboto, or on a TV look for a subtitle language or character set option and choose Vietnamese.

Fix it in one step

  1. Open Fix Subtitle Encoding and drop in the .srt, .vtt, .ass, .sbv or .sub file. It is read in your browser and never uploaded.
  2. The tool tries every encoding it knows, including Windows-1258, TCVN3 and VNI, and picks the one that gives the most valid Vietnamese. Accented letters are highlighted in the preview so you can check them.
  3. If it isn’t sure, it lists a few readings side by side. Pick the one whose words read right; you don’t need to know the encoding’s name.
  4. Download the file. It keeps its name and format and is now UTF-8. Put it next to the video in place of the old one.

Timing, line breaks and formatting such as italics stay exactly as they were. Only the way the letters are stored changes.

Saved as UTF-8 and the TV still gets it wrong?

Some older TVs and set-top boxes only recognise UTF-8 when the file starts with a byte order mark (BOM). In the tool, tick Add a BOM for older TVs and players and download again. If the TV shows no subtitles at all, Why subtitles don’t show on a TV goes through the other causes, such as the file name and format.

If the letters are right but codes such as <font color=...> or {\an8} show up on screen, remove them with Remove Formatting from Subtitles. And if the words are right but appear too early or too late, use Shift Subtitle Timing.

Why Vietnamese has so many encodings

Until Unicode spread in the mid-2000s, computers used one-byte encodings with room for 256 characters. Vietnamese needs about 134 accented letters, more than the space left after basic Latin. Each group solved it differently: TCVN3 dropped capitals with tone marks, VNI split the marks into bytes of their own, Windows-1258 used combining marks, and VISCII even took over control character positions. A subtitle file only read correctly on a computer with the matching fonts installed.

UTF-8 settles it: every Vietnamese letter, capitals included, has its own code, and every modern device reads it. That is why the tool always saves as UTF-8.

Every tool on SubtitleMedic runs in your browser. Your subtitle file is read on your device and never uploaded.

Tools for this