What this does
When a subtitle file shows Café instead of Café, or привет instead of Cyrillic text, the file itself is usually fine — it was simply read with the wrong character encoding. This page reverses that mistake and writes the characters back, locally.
How to use it
- Paste the garbled text, or drop the file onto the box.
- Choose what it was read as, or leave it on auto-detect.
- Copy or download the repaired text and save it as UTF-8.
Good to know
- This repairs misread UTF-8. If every non-ASCII character is a plain
?or a box, the information was already destroyed and no repair can recover it. - The repair works on the whole text, so timestamps, cue numbers and
-->arrows are untouched. - Auto-detect tries Windows-1252 first, then Windows-1251. Pick one explicitly if you know where the file came from.
- Save the result as UTF-8. Re-saving it in the old codepage re-creates the same problem.
- If your player still shows garbage after this, the issue is the player's encoding setting, not the file — check whether it has a forced codepage option.
Why subtitles turn into garbage
A subtitle file is a sequence of bytes. UTF-8 spells é as two bytes, C3 A9. An older editor that assumes a single-byte codepage reads those two bytes as two separate characters — à and © — and displays Café. Nothing was lost; the bytes were just interpreted twice under different rules.
The repair is therefore mechanical: take each character, work out which single byte it must have been, then decode that byte sequence as UTF-8. No dictionary, no guessing, no language model — which is why it can run offline in a browser and produce a result you can verify character by character.
The two codepages that account for almost every real case are Windows-1252 (Western European) and Windows-1251 (Cyrillic). Auto-detect tries 1252 first and falls back to 1251, because the two produce visibly different garbage and the correct one always decodes cleanly while the wrong one usually hits an invalid byte sequence.
Double encoding happens when the mistake is made twice — a file that was already mojibake gets saved and misread again. The tell-tale is garbage that contains à or —. Tick the doubly encoded box to run the repair twice.
This tool refuses to guess. If the byte sequence it reconstructs is not valid UTF-8, or if the result is mostly control characters, it leaves your text alone rather than handing back something worse. A tool that always returns something would be a tool you could not trust.
Worked example
Input — misread as Windows-1252
Café ouvert jusqu'à minuit L'équipe vous attend â ce soir.
Output — repaired UTF-8
Café ouvert jusqu'à minuit L'équipe vous attend — ce soir.
Two bytes per accented character become one character each. The em dash is three bytes in UTF-8, which is why it shows as three garbage characters before the repair.
FAQ
Why does my subtitle file show é instead of é?
é is stored as two bytes; read under Windows-1252 they become à and ©. This page reverses exactly that step.Can it fix question marks and empty boxes?
? means the character was already unrepresentable when the file was written, and the original byte is gone. This tool can only recover what is still in the file.Do I need to know which encoding was used?
What does 'doubly encoded' mean?
à or — rather than a single layer. Ticking the box runs the repair two passes.Does it work on Cyrillic and other scripts?
Is the file uploaded anywhere?
Troubleshooting
- Nothing changedEither the text is already correct, or the damage is not mojibake. Look for
Ã,Â,â€,ÐorÑ— if none appear, no repair applies. - Still garbled after repairSwitch Read as to the other codepage. Auto-detect tries Western first, so a Cyrillic file sometimes needs the explicit setting.
- Strange symbols appeared that were not there beforeThat is what a wrong guess looks like, so the tool should have refused. If you see this, the source was probably not UTF-8 to begin with — reload the page and try the other codepage.
- Only part of the file was fixedMixed-encoding files exist: one section saved as UTF-8, another as the old codepage. Repair each section separately and paste the results together.
- The player still shows garbageThe file is now correct but the player is forcing a codepage. Look for an encoding or subtitle codepage setting in the player and set it to UTF-8.
Related tools
Clean Up AI-Generated Subtitles
Remove sound cues, HTML tags, speaker labels and duplicate cues from auto-generated captions.
SRT to VTT Converter
Convert .srt subtitle files to WebVTT (.vtt) for HTML5 video, right in your browser.
VTT to SRT Converter
Turn WebVTT files back into SubRip (.srt) for editors, players and upload platforms.