Fix Garbled Subtitles: UTF-8, ANSI and Text Encoding Problems Explained
Subtitles full of question marks or odd symbols? Learn why encoding breaks SRT files and how to convert any file to UTF-8.
Open a folder of downloaded subtitles and you may find files ending in .srt, .vtt, .ass, .ssa, .sub, or even .idx and .sup. They all hold text that appears on screen, yet they are not interchangeable. Choosing the wrong one can mean lost styling, broken timing, or a file that your player refuses to open.
This guide sets SRT vs VTT vs ASS vs SUB side by side, explains what each format is good at, and shows how to convert between them. By the end you will know which format to use for a given job and what you give up when you convert.
If you are not sure, use SRT. It is simple, universal, and works almost everywhere. Use WebVTT when the subtitles are for a web page or an HTML5 video. Use ASS when you need fonts, colours, positioning, or effects, such as in anime fansubs. Treat the rest as older formats you will mainly convert from.
SRT is a plain text format with numbered blocks, timecodes written HH:MM:SS,mmm, and one to two lines of text. It supports a few HTML-style tags for italics, bold, underline, and colour, and nothing else. Our introduction to SRT files covers the structure in detail.
Strengths. Supported by nearly every player, television, editor, and upload platform. Easy to read and edit in any text editor. Small files. Independent of the video's frame rate.
Weaknesses. No standard way to position text, choose fonts, or define styles. Only a handful of tags, with uneven support. No metadata such as language.
Best for. General use, sharing, translation work, and anywhere maximum compatibility matters. It is the format the SRT file merger reads and writes.
WebVTT, usually just VTT, was designed for the web. It is the format used by the HTML5 <track> element, and most web video players and platforms accept it. It looks like SRT but has a few differences:
WEBVTT
00:01.000 --> 00:03.200
Did you bring the map?
00:03.500 --> 00:05.800 align:start position:10%
It's in my <i>coat</i> pocket.
WEBVTT on the first line.00:01.000 is valid.::cue selector in the page.Strengths. Native to browsers. More expressive than SRT for positioning and styling on the web. An open standard maintained by the W3C.
Weaknesses. Less supported on older televisions and hardware players. The extra features may be ignored or misread by tools that expect SRT.
Best for. Websites, web-based players, and any video you embed on a page.
ASS, and its older sibling SSA, are the formats of choice for rich styling. An ASS file is divided into sections in square brackets, including script information, styles, and events. Styles define fonts, sizes, colours, outlines, shadows, and margins. Each line of dialogue then references a style and can include inline override tags for animation, karaoke timing, fades, rotations, and precise on-screen positions.
Strengths. Very powerful. You can match the look of the original production, place sign translations next to on-screen text, show different speakers in different colours, and create effects. Widely supported by desktop players such as VLC, mpv, and others that include a subtitle rendering library.
Weaknesses. Complicated, and rarely supported on television sets, phones, and web players. Files can look different, or fail, depending on which fonts are installed. Converting ASS to a simpler format discards most of its styling.
Best for. Fansubs, anime, karaoke, and any project in which design matters and the audience uses a desktop player.
The .sub extension is ambiguous. One meaning is the MicroDVD format, a text format in which each line is timed in frame numbers, not clock time:
{25}{80}Did you bring the map?
{85}{140}It's in my coat pocket.
Because it counts frames, a MicroDVD file only works at the frame rate it was made for. The header line may state it, but many files omit it, so players have to guess. A wrong guess produces exactly the drifting sync problem described in our sync guide.
Best for. Not much today. You mainly meet it in older collections, and you should convert it to SRT after finding the right frame rate.
The same .sub extension also appears with an .idx file as the VobSub format, which comes from DVDs. Those files contain pictures of the subtitle text, not text itself. Blu-ray discs use a similar image format called PGS, often found as .sup files.
Strengths. They reproduce the exact look of the original, in any language and script.
Weaknesses. Large, impossible to edit as text, and the quality depends on the original images. To convert them to SRT, you need optical character recognition, which recognises the pictured letters and turns them into text. The result needs careful proofreading, because OCR commonly confuses similar characters, such as a capital I and a lowercase l.
Broadcasters and streaming services also use XML-based formats such as TTML, and a related profile called DFXP, for delivery. They carry rich information about timing, region, and style. As a viewer or small publisher, you will rarely need to handle them directly unless a platform asks for them. Many subtitle editors can export to them.
| Format | Type | Styling | Position control | Best for |
|---|---|---|---|---|
| SRT | Text | Basic tags | No | Universal use |
| WebVTT | Text | CSS, cue settings | Yes | Web video |
| ASS/SSA | Text | Extensive | Yes, precise | Fansubs, effects |
| MicroDVD SUB | Text, frame-based | Minimal | No | Legacy files |
| VobSub, PGS | Image | Original look | Fixed | DVD and Blu-ray |
| TTML/DFXP | XML text | Extensive | Yes | Broadcast, streaming |
Most conversions are straightforward when you go from a richer format to a simpler one, and difficult in the other direction, because there is nothing to convert the missing information from.
Two changes are needed: add WEBVTT and a blank line at the top of the file, and replace the comma in every timecode with a period. A text editor's find-and-replace is enough for small files, but be careful to change only the timecodes and not commas in the dialogue. A subtitle editor or a conversion tool does this safely.
Remove the header and any notes, remove cue settings from the timecode lines, change periods to commas, make sure hours are present in every timecode, and renumber the cues from 1. CSS-based styling is lost, apart from simple italics.
The text and timing carry over. Fonts, colours, positioning, and effects are lost, and inline override codes must be removed, or they will show up as literal text in the SRT. Lines meant for on-screen signs may land at the bottom of the screen in the wrong place, so review them after conversion.
You need to know the frame rate. Convert frames to times by dividing the frame number by the frame rate. For instance, frame 250 at 25 fps is 10 seconds. Subtitle editors do this when you tell them the rate.
Use an OCR program, then proofread every line. Expect to spend real time on this, particularly with unusual fonts or low-quality images.
Ask three questions.
Where will the subtitles be shown? On a web page, choose WebVTT. On a variety of devices, choose SRT. On a desktop player with a design requirement, choose ASS.
Do you need styling or positioning? If not, SRT is the simplest option. If yes, consider VTT for the web or ASS for desktop.
Who else will handle the file? If translators, reviewers, or the public will edit it, SRT is the most forgiving, since anyone can open it in a text editor and tools like the browser-based merger can compare and combine files.
SRT is the safe default and the common language of subtitle tools. WebVTT is the web's native format. ASS offers the richest styling for desktop viewing. MicroDVD and image-based formats are legacy formats best converted to SRT. Converting from a richer to a simpler format always loses information, so keep your originals, convert directly, use UTF-8, and test the result where it will be shown.
Merge your own subtitle files
Compare two .srt files side by side and save the best lines as one file. It runs in your browser, so nothing is uploaded.