---
title: 'SRT timecode checker: validate HH:MM:SS,mmm - OpenClip'
description: 'Paste an .srt file and see which line breaks the SubRip grammar, with the line number, then shift every timecode, rescale between frame rates, or convert to WebVTT. Runs in your browser, your subtitle file never leaves your device.'
canonical: 'https://openclip.app/tools/srt-timecode-checker'
markdown: 'https://openclip.app/tools/srt-timecode-checker.md'
---

[Tools](https://openclip.app/tools) SRT Timecode Checker

# 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.

## 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

HHHours, always two digits. 00 for anything under an hour.

MMMinutes, always two digits, 00 to 59.

SSSeconds, always two digits, 00 to 59.

mmmMilliseconds, 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

### What exactly does an SRT timecode look like?

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.

### What is the block structure of an .srt file?

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](/learn/srt-format) annotates a full example.

### My player rejects the file and I cannot see why. What is it?

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.

### My subtitles are a second late the whole way through. Can I fix that here?

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.

### My subtitles start in sync and drift further out as the video plays. Why?

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.

### Does my subtitle file get uploaded to your servers?

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

### What is the difference between .srt and .vtt?

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.

### I need captions in the first place, not a fix. Where do I start?

Transcribe the video first with the [video transcriber](/tools/video-transcriber) or the [auto captions tool](/tools/auto-captions), 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](https://openclip.app/register)

### More free tools

Keep editing inside the same browser-only toolkit.

- [Video to MP3](https://openclip.app/tools/video-to-audio-converter): Extract audio from any video file.
- [Mute Video](https://openclip.app/tools/remove-audio-from-video): Remove audio track from videos.
- [Video Trimmer](https://openclip.app/tools/trim-cut-video): Cut and trim videos to the perfect length.
