SRT vs VTT: Converting Subtitles Without Breaking the Timing
Subtitle files are small and simple, which is why they convert easily — and why a conversion that gets the details wrong still 'works' while looking broken. The text arrives fine and the captions land a fraction of a second late, or arrive as a wall of unstyled text.
What the formats actually contain
Every subtitle format is a list of cues: a start time, an end time, and the text to show between them. SRT adds sequence numbers. WebVTT — the format HTML5 video requires — adds a cue identifier, its own timestamp syntax with a period instead of a comma for milliseconds, and a region for positioning. ASS and SSA carry styling: fonts, colours, positions and karaoke tags, which is why anime fansubs use them.
SBV and SAMI serve similar niches in specific ecosystems — YouTube's classic upload format and Windows Media respectively. The structure is always the same idea in different clothes.
- SRT
- Plain, universal, no styling. The lingua franca of subtitles.
- WebVTT
- Required by the HTML <track> element. Adds styling, positioning and regions.
- ASS / SSA
- Full styling and effects. Converting to SRT discards all of it.
- SBV
- Simple YouTube-style cues with a comma-free timestamp format.
Where conversions go wrong
Timestamps are the first hazard: SRT writes `00:00:01,500` while VTT writes `00:00:01.500`, and a converter that copies the string instead of translating it produces a file that no player will parse. The second is cue identifiers and numbering — VTT tolerates missing identifiers, SRT does not tolerate gaps in its sequence.
Styling is the silent one. Converting ASS to SRT succeeds and returns valid text, but every font choice, colour and on-screen position is dropped, because SRT has nowhere to put it. If styling mattered, that conversion was the wrong direction.
Line breaks matter too. Subtitle lines are wrapped at roughly 37–42 characters so they fit the player's safe area. A conversion that rewraps differently — or strips the line breaks — produces captions that are hard to read even though the words are correct.
Fixing captions that drift
If the text is right but the timing is off, the usual cause is a frame-rate mismatch rather than a conversion bug: the timings were generated for 25 fps and the video is 29.97, so the offset accumulates over the length of the file. Shifting the whole track by a fixed offset fixes a constant drift; a growing drift means the frame rate needs converting, not just the timestamps.
Before uploading to a platform, check which format it asks for — most accept SRT and convert internally, while HTML5 players need VTT. And always spot-check the first and last cues of the output: that is where off-by-one errors in the final timestamp show up.
Convert with these guides' formats
Frequently asked questions
What is the difference between SRT and VTT?
SRT is plain text with sequence numbers and comma-milliseconds; VTT is the web standard with a period-milliseconds syntax plus support for styling, positioning and regions.
Can I convert styled subtitles to SRT?
Yes, but the styling is discarded — SRT has no way to store fonts, colours or positions. Only the text and timings survive.
Why are my subtitles out of sync after converting?
Usually a frame-rate mismatch between the file the timings were made for and the video you are playing, rather than the conversion itself.
