SRT timecode checker: validate HH:MM:SS,mmm - OpenClip
JASL
Trusted by 5,090+ paying creators

SRT timecode checker and fixer

Paste an .srt file and see exactly which line breaks the SubRip grammar, then shift every timecode, rescale it between frame rates, or convert to WebVTT. Nothing is uploaded; the whole thing runs in your browser.

5090 paying creators on OpenClip100% in your browser, nothing uploaded

Your subtitle file

Nothing leaves your device.

Fixed output

Retime

Negative moves subtitles earlier, positive moves them later. Milliseconds or a timecode both work.

Convert frame rate

Use this when subtitles start in sync and drift further out the longer the video plays. A constant offset cannot fix drift.

Validation

Paste a file above and every broken line shows up here with its line number.

The SubRip (.srt) timecode format

Every SubRip timecode line is the same shape, and it is the part players are strict about:

HH:MM:SS,mmm --> HH:MM:SS,mmm

Block structure

A .srt file is one block repeated until the transcript runs out. Each block is four things in a fixed order:

  1. A sequence number on its own line, counting up from 1.
  2. The timecode line: start time, a space, the arrow -->, a space, end time.
  3. One or more lines of subtitle text.
  4. A single blank line, which is what actually ends the block.

A real .srt file

1
00:00:00,498 --> 00:00:02,827
Here is the first subtitle line.

2
00:00:02,910 --> 00:00:06,331
A block can carry two lines,
and the second one sits right under it.

3
00:00:06,415 --> 00:00:09,999
The file ends with a blank line after the last block.

Timecode fields

HH
Hours, always two digits. 00 for anything under an hour.
MM
Minutes, always two digits, 00 to 59.
SS
Seconds, always two digits, 00 to 59.
mmm
Milliseconds, always three digits, 000 to 999.
,
The separator before the milliseconds is a comma. A period is WebVTT, and it is the single most common reason a player rejects an .srt file.
-->
Two hyphens and a greater-than sign, with exactly one space on each side. Not an en dash, not "->", not "--->".

SubRip against WebVTT

WebVTT (.vtt) is the same block structure with four differences: the file opens with a WEBVTT line, milliseconds are separated by a period, the hours field can be dropped, and cue identifiers do not have to be numbers. The converter above moves a file between the two without touching the timing.

Questions & answers

HH:MM:SS,mmm --> HH:MM:SS,mmm. Two digits for hours, two for minutes, two for seconds, a comma, then exactly three digits of milliseconds. The arrow is two hyphens and a greater-than sign with one space on each side. A real line looks like 00:00:00,498 --> 00:00:02,827.

Four things in a fixed order: a sequence number on its own line counting up from 1, the timecode line, one or more lines of subtitle text, then a single blank line that closes the block. That repeats until the transcript runs out. The SRT format reference annotates a full example.

Usually a period instead of a comma before the milliseconds (that is WebVTT, not SubRip), a missing blank line between two blocks, or a byte order mark at the top of the file that swallows the first sequence number. The checker names the exact line for each.

Yes. Enter a signed offset in milliseconds (-1000) or as a timecode (-00:00:01,000) and every timecode moves together. Anything pushed below zero is pinned at 00:00:00,000 and counted, so you see it happened instead of losing it silently.

That is a frame rate mismatch, not an offset, so no amount of shifting fixes it. Convert between 23.976, 24, 25, 29.97 and 30 fps and the whole timeline is rescaled by the ratio between the two rates.

No. The parser, the fixer, and the converter all run in your browser, your subtitle file never leaves your device, and we keep nothing.

WebVTT is the same block structure with a WEBVTT header line, a period instead of a comma before the milliseconds, an optional hours field, and cue identifiers that do not have to be numbers. The output toggle converts either way without touching the timing.

Transcribe the video first with the video transcriber or the auto captions tool, then bring the exported .srt back here if the timing needs adjusting.

Stop hand-fixing subtitle files.

OpenClip transcribes your video, writes word-accurate captions, and burns them into vertical clips, so the timecodes are right the first time.

Start free

More free tools

Keep editing inside the same browser-only toolkit.