Subtitle guide
The SRT timestamp format, explained
6 min read Updated July 27, 2026
An SRT timestamp is written as hours:minutes:seconds,milliseconds — two digits each for hours, minutes and seconds, then a comma, then exactly three digits of milliseconds. A full timing line pairs two of them with an arrow: 00:01:23,450 --> 00:01:26,000 means the subtitle appears at 1 minute 23.45 seconds and disappears at 1 minute 26 seconds. That one line is the heart of the whole format, and this guide takes it apart piece by piece so you can read, write and repair timings by hand with confidence.
Anatomy of a timing line
Here is a complete SRT cue, with the timing line in the middle:
12
00:01:23,450 --> 00:01:26,000
I never said that.
Reading the timing line left to right:
00— hours, always two digits, zero-padded. Yes, even for a short clip:0:01:23,450with a single hour digit will trip up strict players.01— minutes, two digits,00–59.23— seconds, two digits,00–59.,450— a comma, then exactly three digits of milliseconds (thousandths of a second).450means 0.45 s. One or two digits, or a period instead of the comma, are format errors.-->— the separator: space, two hyphens, a greater-than sign, space. Not->, not—>, not-->glued to the timestamps without spaces (many players forgive missing spaces, but not a malformed arrow).- The second timestamp is the end time, in the same format, and it must be later than the start time.
Why a comma, of all things?
The comma is SRT’s historical fingerprint. SubRip, the program the format is named after, was written in France, and much of Europe writes decimals with a comma (1,5 rather than 1.5). The convention stuck, and it is now the single most reliable way to tell SRT apart from its web cousin.
WebVTT — the format browsers require — uses a period instead: 00:01:23.450. This one-character difference is the most common reason a “subtitle file” is rejected by a player. A file full of periods saved as .srt, or commas saved as .vtt, will fail in strict players even though everything else is right. If you need to move between the two, don’t find-and-replace by hand — the SRT to VTT converter handles the punctuation, the header and the cue numbering in one step, losslessly. The guide to subtitle formats compares the families in full.
The rules players actually enforce
The format is simple, but it is strict. When a player skips one cue, or silently drops everything after a certain point, one of these rules has usually been broken.
- End after start.
00:01:26,000 --> 00:01:23,450(reversed) makes a cue that can never display. Most players skip it; some stop reading the file there. - Chronological order. Cues should be sorted by start time. Out-of-order cues confuse seeking in many players.
- Zero-padding everywhere.
00:01:23,450, never0:1:23,45. - Three-digit milliseconds.
,5does not mean half a second — it is invalid. Half a second is,500. - A blank line between cues. The timing line belongs to a numbered block, and the blank line is what ends it. A missing blank line glues two cues together; a stray blank line inside a cue’s text splits it in two.
None of these need memorising if you edit in a purpose-built tool — the browser-based subtitle editor keeps the structure valid while you change text and timings, and flags problems as you type.
Editing timestamps by hand, safely
For a quick one-line fix, a text editor is fine. Two habits keep it safe.
Use a plain-text editor — Notepad, TextEdit, VS Code — never a word processor, which adds invisible formatting. (The basics of the surrounding file are covered in what is an SRT file.)
Do the arithmetic in milliseconds. Timestamp math trips people up at the boundaries: 2.5 seconds after 00:01:58,800 is 00:02:01,300, and it is easy to botch the carry from seconds into minutes. Converting to plain milliseconds first makes it mechanical:
00:01:58,800 = (1 × 60 + 58) × 1000 + 800 = 118800 ms
118800 + 2500 = 121300 ms
121300 ms = 00:02:01,300
If you find yourself doing that sum for more than a couple of cues, stop — shifting every timestamp by the same amount is exactly what the subtitle sync tool does in one click, with no arithmetic and no risk of a typo in cue 341 of 700.
Common timestamp errors at a glance
| You see | What’s wrong | Fix |
|---|---|---|
00:01:23.450 in a .srt file | Period instead of comma (that’s VTT style) | Convert properly rather than renaming: VTT to SRT |
0:01:23,450 | Missing zero-padding on hours | Add the leading zero |
00:01:23,45 | Two-digit milliseconds | Pad to three: ,450 |
00:01:26,000 --> 00:01:23,450 | End before start | Swap or retime; the editor flags these |
| Player stops mid-file | A malformed cue partway through | Run the file through the cleanup tool to normalise structure |
The short version
The SRT timestamp format is HH:MM:SS,mmm — always two digits per unit, always a comma, always three digits of milliseconds — and a timing line joins a start and an end with -->. The comma versus period distinction is what separates SRT from WebVTT, and strict zero-padding plus a blank line between cues is what keeps players happy. Hand-edit single timings freely in a text editor, but for anything repetitive — shifting a whole file, fixing structure, converting punctuation — let a tool apply the change uniformly instead.