Subtitle shifter & converter
All tools

How to Fix Garbled Characters in Subtitles

Strange symbols in place of accented letters, Cyrillic, or Chinese almost always mean the file was read with the wrong text encoding. The text is usually still there, and converting it to UTF-8 brings it back.

By the Feeed team · · 5 min read

Garbled subtitle characters, often called mojibake, appear when a subtitle file saved in one text encoding is read as if it were another, so the bytes for "é" or "Привет" are shown as unrelated symbols; the fix is to open the file with its real encoding and save it again as UTF-8.

What a text encoding is

A subtitle file is just a sequence of bytes. An encoding is the rulebook that says which byte, or group of bytes, stands for which character. Plain English letters, digits, and punctuation are the same in almost every encoding, which is why the timestamps and English words in a broken file usually look fine. Everything else, from "é" and "ß" to Greek, Arabic, and Chinese, depends on the rulebook.

Today the standard is UTF-8, a single encoding that covers every writing system. But many subtitle files were created years ago on computers set up for one region, using a legacy "code page" that holds only a few hundred characters. Those files carry no label saying which code page they use, so a player on a computer set up for a different region has to guess, and it often guesses wrong.

Recognizing the symptoms

You seeShould beWhat happened
CaféCaféA UTF-8 file read as Windows-1252. Each accented letter turns into two or three characters, often starting with à or Â.
ÏðèâåòПриветA Windows-1251 (Cyrillic) file read as Windows-1252. Each Russian letter becomes one Western accented letter.
Caf�CaféA legacy file read as UTF-8. The � replacement character marks bytes that are not valid UTF-8.
Caf?CaféThe file was saved in an encoding that has no such character, and the letter was replaced.
1 on the first line1A UTF-8 byte order mark shown by a program that does not expect one.

The first three are usually reversible: the right bytes are still in the file and only the reading is wrong. Question marks are different. Open the file in a text editor; if the question marks are really in the file, the original letters are gone, no encoding setting will bring them back, and you need a fresh copy. The same applies if a program has already saved the � characters into the file.

Typical legacy encodings by language

Language or regionCommon legacy encodings
Western European (English, French, Spanish, German, Portuguese, and others)Windows-1252, ISO-8859-1
Central European (Polish, Czech, Hungarian, Croatian, and others)Windows-1250, ISO-8859-2
Cyrillic (Russian, Ukrainian, Bulgarian, Serbian)Windows-1251, KOI8-R
GreekWindows-1253, ISO-8859-7
TurkishWindows-1254, ISO-8859-9
HebrewWindows-1255
ArabicWindows-1256
Baltic (Lithuanian, Latvian, Estonian)Windows-1257
ThaiWindows-874 (TIS-620)
Simplified ChineseGBK, GB18030 (older files: GB2312)
Traditional ChineseBig5
JapaneseShift_JIS
KoreanEUC-KR

Knowing the language of the subtitles narrows the choice to one or two candidates, which is the single most useful fact when automatic detection struggles.

How automatic detection works

Detection looks for clues in the bytes. A byte order mark at the start announces UTF-8 outright. Without one, the strongest clue is whether the file is valid UTF-8: UTF-8 has strict rules for how multi-byte characters are built, and legacy text with many accented letters rarely follows them by accident. If the file is not UTF-8, the detector compares its byte patterns with what typical text looks like in each candidate encoding and language, such as which letters are most common and how much of the text is non-Latin.

This is a heuristic, not a certainty. A short file, or one with only a handful of non-English letters, gives the detector very little to work with. Windows-1250 and Windows-1252 share most of their characters, and Windows-1251 and KOI8-R both turn the same bytes into Cyrillic letters, so a wrong guess can still look Cyrillic at a glance. When the preview looks wrong, choose the encoding yourself, using the table above as a starting point, and check a few words you recognize.

How to fix a garbled subtitle file

  1. Open the original file in the subtitle encoding fixer. The file is read in your browser and is never uploaded.
  2. Check the preview. If accented letters and non-Latin scripts look right, detection worked.
  3. If they don't, pick the encoding that matches the language and check the preview again.
  4. Save the result. SubTweak writes UTF-8, which every modern player understands.
  5. Add a byte order mark only if your TV or player needs one (see below).

Always start from the original download if you can. If a file was opened with the wrong encoding and then saved, the garbled characters may now be stored in the file as real text, which makes recovery much harder. Once the text is clean, you can convert it to another format or fix the timing as usual.

The UTF-8 BOM: when to use it

A byte order mark (BOM) is three bytes, EF BB BF, at the very start of a file that signal "this is UTF-8". Modern software does not need it, but some smart TVs, set-top boxes, and older players assume a regional code page unless they see a BOM, and they show mojibake for a perfectly good UTF-8 file. If a file displays correctly on your computer but not on your TV, saving it with a BOM is the first thing to try.

The reverse problem also exists: a few older tools do not understand the BOM and display it as  before the first line, or fail to read the first cue. In that case, save the file without it.

Player settings and prevention

Player settings

  • VLC: Tools → Preferences → Subtitles/OSD → Default encoding. Choose the encoding for the language you watch most. On a Mac, the same setting is in VLC's Preferences (Settings) under Subtitles.
  • mpv: add --sub-codepage=cp1251, or another encoding name, on the command line or in the config file.
  • TVs and media servers: options vary, and many have none. Converting the file to UTF-8 is the reliable fix.

Prevent it next time

Save every subtitle file as UTF-8, whether you write it yourself, edit it, or receive it from someone else. Most text editors offer UTF-8 in the Save As dialog. When you share files, mention the language so the next person knows what to expect. For help getting the cleaned file onto your TV or into a video, see how to add subtitles to a video.

Fix subtitle encoding →