Skip to content

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,450 with a single hour digit will trip up strict players.
  • 01 — minutes, two digits, 0059.
  • 23 — seconds, two digits, 0059.
  • ,450 — a comma, then exactly three digits of milliseconds (thousandths of a second). 450 means 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.

  1. 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.
  2. Chronological order. Cues should be sorted by start time. Out-of-order cues confuse seeking in many players.
  3. Zero-padding everywhere. 00:01:23,450, never 0:1:23,45.
  4. Three-digit milliseconds. ,5 does not mean half a second — it is invalid. Half a second is ,500.
  5. 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 seeWhat’s wrongFix
00:01:23.450 in a .srt filePeriod instead of comma (that’s VTT style)Convert properly rather than renaming: VTT to SRT
0:01:23,450Missing zero-padding on hoursAdd the leading zero
00:01:23,45Two-digit millisecondsPad to three: ,450
00:01:26,000 --> 00:01:23,450End before startSwap or retime; the editor flags these
Player stops mid-fileA malformed cue partway throughRun 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.