The rule: subtract the clip start
An SRT file positions captions on the full-length source timeline. A trimmed clip starts a new timeline at 00:00, so every caption must be moved back by the clip's original start time:
new timestamp = original timestamp − clip start
Worked out, that looks like this:
Original: 00:03:45,500 --> 00:03:48,000 Clip starts: 00:03:42,000 Result: 00:00:03,500 --> 00:00:06,000
Do the arithmetic in integer milliseconds — 3.5 seconds stored as 3499.99999 rounds to the wrong millisecond. The output uses HH:MM:SS,mmm with a comma separator, the standard SRT form.
When resetting to 00:00 is the fix
- You cut clips out of a long recording and each delivered clip needs its own SRT starting at zero.
- A client hands back a clip with subtitles that are minutes out of sync, and the captions themselves are fine.
- You exported one SRT for a subsequence and want it re-based to the subsequence start instead of the master timeline.
Three ways to reset timestamps, compared
| Method | Strength | Watch out for |
|---|---|---|
| By hand | Zero setup, fine for a small file | Subtraction, renumbering and negative clamping are repeated for every caption and every clip |
| FFmpeg | Free and scriptable | ffmpeg -i in.srt -ss <start> -t <dur> out.srt cuts a range and ffmpeg -itsoffset -<seconds> -i in.srt out.srt shifts it earlier, but neither re-bases per clip nor renumbers for you |
| Clip Caption Kit | CSV in, audited ZIP out | Requires signing in; the free plan covers 3 projects per UTC day with up to 100 captions per project |
Common mistakes
- Forgetting to renumber. Players usually tolerate it, some do not — and a delivery reviewer will notice.
- Float arithmetic. Convert to integer milliseconds first, subtract, then convert back.
- Subtracting the wrong time base. The clip start is a position on the original timeline, not a duration of the clip.
- Treating a different cut as an offset. A constant shift cannot fix captions made for another version of the edit — see the out-of-sync guide for the diagnosis.
Resetting a whole clip list
When the reset is part of a delivery — one master SRT, many clips — write the ranges into a CSV and run the batch SRT splitter: every clip comes back re-timed to 00:00, renumbered and paired with a plain-text TXT.
Resetting SRT timestamps FAQ
- Does resetting change the caption text?
- No. Only the start and end timestamps change; the wording of every caption stays exactly as it was in the master SRT.
- Will resetting fix subtitles that are out of sync?
- Only when the problem is a constant offset caused by trimming — subtract the clip start and everything lines up. If captions make no sense at their position, the SRT belongs to a different cut entirely.
- Can I shift by a fixed amount instead of to zero?
- Yes, the maths is the same with any offset: new timestamp equals original timestamp minus the offset. Tools usually offer both — keep the master timeline or reset to 00:00.
- Do the cue numbers need to change?
- Renumber from 1. Most players tolerate missing numbers, but some do not — and a delivery reviewer will notice. Renumbering is part of every split and reset workflow here.
- What if a timestamp goes below zero after subtraction?
- Clamp it to 00:00:00,000, or exclude the caption if it only touches the clip edge. The boundary policy decides which, and the choice is recorded in the manifest.
Reset timestamps for a whole clip list
Put the clip ranges in a CSV once and generate re-timed, clip-relative SRT and TXT files for all of them in one ZIP.
Batch split my SRT