Why Subtitles Show Strange Characters (and How to Fix Them)

Garbled subtitles are one of the most common problems, and almost always the cause is the same: the player and the file disagree about the encoding.

Updated 2026-10-23

What an encoding is

Computers store text as numbers. An encoding is the table that maps numbers to characters. ASCII covers only English letters. To write other languages, different regions created their own tables: Windows-1252 for Western Europe, Windows-1251 for Cyrillic, Windows-1253 for Greek, GBK for Simplified Chinese, Big5 for Traditional Chinese, Shift-JIS for Japanese and so on. Unicode (usually stored as UTF-8) replaced them all with one table for every language, but millions of older files remain.

A subtitle file does not say which encoding it uses. The player must guess or assume — and when it assumes wrongly, you see nonsense.

Recognise the symptom

What you seeLikely cause
é, è, ’ instead of é, è, ’UTF-8 file displayed as Windows-1252
Chinese characters that are meaningless (浣犲ソ)UTF-8 file read as GBK
привет instead of RussianUTF-8 Cyrillic read as Windows-1252
Cyrillic, Greek or Hebrew replaced by accented Latin lettersLegacy file (Windows-1251, 1253, 1255) displayed as Windows-1252
Boxes ▯ or the replacement character �Invalid bytes; the font or decoding failed
Rows of question marksCharacters were lost when a file was saved; not recoverable

Fix it step by step

  1. Open the encoding fixer and drop the file. The tool reads the raw bytes, so nothing has been damaged yet.
  2. Check the automatic guess in the preview. If it looks right, download the UTF-8 file.
  3. If not, click through the list of encodings until the language looks correct.
  4. If the file shows garbage in every encoding because it was already converted wrongly once, switch to the repair mode and select how it was misread.
  5. Save as UTF-8 and test in your player.

Why UTF-8 is the right target

UTF-8 can represent every character in every language and is the default of the web, WebVTT and modern players. It is also compatible with plain ASCII: a file with only English letters is identical in both encodings. When a player still shows wrong characters for a UTF-8 file, the issue is typically a missing byte-order mark or a player setting for subtitle encoding. VLC, for example, lets you pick the default subtitle text encoding under Preferences → Subtitles.

Prevent it in the future

  • Save subtitles as UTF-8 in any editor (in Notepad choose UTF-8 in the Save As dialog).
  • Avoid tools that silently convert to “ANSI”.
  • Keep an original copy before experimenting.
  • When you share subtitles, state the encoding in the message or file name if it is not UTF-8.

When nothing helps

If the file contains many “?” characters or � symbols saved in the file itself, the original letters are gone and no software can restore them. Look for another version of the subtitle, or ask the author for the original file.

Language notes

  • Western European languages (French, Spanish, German, Portuguese…): old files are mostly Windows-1252 or ISO-8859-1/15. The typical symptom after wrong decoding is à followed by a symbol.
  • Polish, Czech, Hungarian, Romanian: Windows-1250 or ISO-8859-2. Wrongly read as 1252, letters like ł, ś and ő turn into similar-looking but wrong characters.
  • Turkish: Windows-1254. The dotted and dotless i (İ, ı) and ğ, ş are the usual casualties.
  • Russian, Ukrainian, Bulgarian: Windows-1251 or KOI8-R. A subtitle that shows rows of Latin accented letters is almost certainly one of these.
  • Greek, Hebrew, Arabic: Windows-1253, 1255 and 1256. Right-to-left text also depends on the player’s bidirectional support.
  • Chinese, Japanese, Korean: GBK/GB18030, Big5, Shift-JIS, EUC-KR. Detection works on byte patterns, and short files may need a manual choice.
  • Vietnamese and Thai: Windows-1258 and Windows-874 (or TIS-620), where accents and tone marks are often lost when decoded wrongly.

Frequently asked questions

What is a BOM?

A byte-order mark is a few invisible bytes at the start of a file that signals UTF-8 or UTF-16. Some old Windows programs need it; many web tools do not like it.

Why does the subtitle work in one player and not in another?

Players guess the encoding differently, and some use a configurable default. UTF-8 files work in all modern ones.

Can I fix Arabic or Hebrew right-to-left problems with this?

Encoding problems yes. Wrong text direction in the player is a separate display issue.