Skip to content
2xKit

How Subtitle Timing Files (SRT/VTT) Actually Work

What's actually inside an SRT or VTT file, and why subtitles sometimes drift out of sync.

Quick answer

SRT and VTT files are plain text files that pair blocks of caption text with precise start and end timestamps in hours:minutes:seconds format, and a video player simply displays each text block on screen for exactly that time window as playback reaches it. The two formats differ mainly in syntax, VTT uses periods for milliseconds and supports basic styling, SRT uses commas and is simpler, but both rely on the same underlying timestamp-and-text-block structure. The SRT/VTT Converter converts between the two without touching the timing data.

Subtitle files look mysterious until you open one in a text editor, at which point they turn out to be surprisingly simple: numbered blocks of text, each stamped with the exact second it should appear and disappear. Nearly every subtitle problem, timing drift, wrong-looking characters, subtitles that won't load, traces back to something in that basic structure being slightly off.

The anatomy of an SRT file

A typical SRT entry has three parts: a sequence number, a timestamp range formatted as 00:01:23,456 --> 00:01:26,789 (hours:minutes:seconds,milliseconds), and the caption text itself on the following line or lines. The video player reads through these entries in order and, during playback, checks the current timestamp against each range, showing whatever text block's range currently contains that moment and hiding everything else. Because the format is just numbered timestamp-and-text pairs, it's straightforward to edit by hand or with a dedicated tool like the SRT Editor, which lets you adjust individual timestamps or text without needing to understand the raw syntax.

Why subtitles drift out of sync

Sync drift almost always comes from a mismatch between the subtitle file's timestamps and the actual video's timeline, most commonly because the video was trimmed, had its frame rate changed, or was sourced from a slightly different edit than the one the subtitles were originally timed against. Even a few seconds of difference at the start compounds into a subtitle file that's completely offset by the end of a long video. If you're generating subtitles directly from a video's audio, running it through Add Subtitles to Video keeps the timing tied to that specific file's actual audio, and if you need to pull existing subtitles back out of a video that has them burned in or embedded, the Video Subtitle Extractor recovers the original timing data.

Frequently asked questions