SRT Timestamp Format: hh:mm:ss,mmm Explained
The exact SubRip timestamp syntax, hh:mm:ss,mmm --> hh:mm:ss,mmm, field by field: what each number means, the rules that break players when you get them wrong, how SRT differs from VTT and SBV, and how to export SRT from TranscribeNext.
An SRT timestamp line looks exactly like this: 00:01:23,456 --> 00:01:27,890. Hours, minutes and seconds are two digits each, milliseconds are three, the decimal separator is a comma, and the two times are joined by a space, two hyphens, a greater-than sign and another space. Get any one of those wrong and most players will skip the entry without telling you.
Anatomy of an SRT File
SRT (SubRip Subtitle) is plain text. It has no header, no styling block and no metadata — just numbered entries separated by blank lines.
1
00:00:00,000 --> 00:00:05,230
Hello everyone and welcome to today's podcast.
2
00:00:05,230 --> 00:00:09,450
Thank you for having me. It's great to be here.
3
00:00:09,450 --> 00:00:15,120
Let's dive right into the topic of AI transcription.Every entry — the spec calls it a cue — is exactly four things, in this order:
- Sequence number — a counter starting at 1, incrementing by 1, on its own line
- Timestamp line — start time, the arrow, end time
- Text — one or more lines of subtitle text
- Blank line — terminates the cue; the last cue should end with one too
The Timestamp Line, Field by Field
Reading 00:01:23,456 from left to right:
- 00 — hours, zero-padded to two digits
- 01 — minutes, 00 to 59, zero-padded
- 23 — seconds, 00 to 59, zero-padded
- , — the decimal separator, a comma, never a period
- 456 — milliseconds, always exactly three digits
So 00:01:23,456 is one minute, twenty-three seconds and 456 milliseconds from the start of the video. SRT times are absolute and measured from zero — they are not frame numbers, which is why an SRT file plays correctly against the same video at 24, 25 or 30 fps.
Rules That Break Players When You Get Them Wrong
- Comma, not period. `00:00:01.500` is WebVTT syntax. In SRT it is a parse error.
- Exactly three millisecond digits. `,5` and `,50` are not shorthand for `,500`.
- Zero-pad every field. `0:01:23,456` is rejected by strict parsers, including several hardware players.
- The arrow is ` --> ` — space, two hyphens, greater-than, space. One hyphen or a missing space breaks the line.
- End must be later than start. Zero-length and reversed cues are silently dropped.
- Cues must run in ascending order and should not overlap; overlapping cues render unpredictably.
- Blank line between cues — without it the next sequence number is read as subtitle text.
Important
The single most common SRT error is a period instead of a comma before the milliseconds. It usually comes from converting a WebVTT file by hand or by renaming a .vtt file to .srt. Renaming does not convert anything — the contents must change too.
SRT vs VTT vs SBV
All three carry the same information, but they spell the timestamp differently. The same cue in each format:
SRT 00:01:23,456 --> 00:01:27,890
VTT 00:01:23.456 --> 00:01:27.890
SBV 0:01:23.456,0:01:27.890- SRT — comma decimal, hours required, no header. The universal format: every editor and player reads it.
- VTT (WebVTT) — period decimal, hours optional, file must open with a `WEBVTT` line. Supports positioning and CSS styling. Required by the HTML5 `<track>` element.
- SBV (YouTube) — period decimal, hours not padded, start and end separated by a comma instead of an arrow, no sequence numbers.
Pro Tip
Converting SRT to VTT by hand is two edits: add a `WEBVTT` line plus a blank line at the top, and replace the comma before the milliseconds with a period. Going the other way, drop the header and swap the periods back to commas.
Line Breaks, Length and Formatting
- A cue may hold several lines of text; the player renders them stacked.
- Two lines of roughly 42 characters is the broadcast convention — longer cues get cut off on small screens.
- SRT has no official styling. Most players do honour `<b>`, `<i>`, `<u>` and `<font color="#ffffff">`, but hardware players may print the tags literally.
- A cue should stay on screen for at least one second and no more than about seven.
Character Encoding
The original SubRip format predates Unicode and specified no encoding, which is why accented characters sometimes arrive as mojibake. TranscribeNext exports UTF-8, so international characters and emoji survive the round trip. If a player shows garbled text, it is guessing a legacy encoding — re-saving the file as UTF-8 fixes it.
Exporting SRT from TranscribeNext
- 1Open a completed transcription
- 2Click Download and choose SRT
- 3Segment timings become cue timings automatically
- 4Import the file into your editor as subtitles or captions
Important
If a transcription has no timestamp segments, the SRT export can only produce a single cue spanning the whole file. Make sure the transcription was processed with timestamps enabled.
Uploading to YouTube
- 1Go to YouTube Studio
- 2Select your video
- 3Click "Subtitles" in the left menu
- 4Click "Upload file" → "With timing"
- 5Upload your SRT file
- 6YouTube reads the timings and syncs the captions
Software That Reads SRT
- Adobe Premiere Pro
- Final Cut Pro
- DaVinci Resolve
- Sony Vegas
- iMovie
- Camtasia
- VLC Media Player
- YouTube Studio
- Vimeo
Common Questions
- Can hours exceed 99? In practice no — stick to two digits. Nothing runs that long anyway.
- Do sequence numbers have to be correct? Most players ignore them, but editors and validators do not. Keep them sequential.
- Can a cue have no text? No. An empty cue is invalid; delete it instead.
- Is a byte order mark allowed? UTF-8 with or without BOM both work in modern players; without is safer.
- Why do my subtitles drift? Drift means the timings were built against a different frame rate or a trimmed edit. SRT times are absolute, so they must match the exact video they ship with.
Pro Tip
Need to jump around the audio rather than ship subtitles? The transcript view has clickable, time-coded segments — see Timestamped Transcriptions.
Tags
Related Articles
VTT Format: Web Video Subtitles
Export WebVTT subtitle files for HTML5 videos, web players, and modern streaming platforms.
Export Overview: Choose the Right Format
Learn about all available export formats and when to use each one for your needs.
Timestamped Transcription: Jump to Any Moment
Every TranscribeNext transcript is time-coded segment by segment. Click any timestamp to hear that moment, search the text and jump straight to it, and export the timings to TXT, SRT or JSON.
JSON Format: Structured Data for Developers
Export complete transcription data as JSON with segments, timestamps, metadata, and speaker information for API integration.
Related tools
- supported audio and video formats — MP3, WAV, OGG, MP4, MPEG and nine more, each with its own limits and tips.
- transcription app for Mac — record and transcribe offline with Whisper and Parakeet — free, nothing leaves the machine.