Shift Subtitles by Timecode
Or paste subtitle text
Options
Write the amount to move as a clock value: 00:00:02,500 is two and a half seconds later, -00:00:02,500 is two and a half seconds earlier. Faster to read off a reference video than a millisecond count. Leave it empty on pages that ask for milliseconds instead.
Which frame rate the timings are counted in. On the format pages this is what MicroDVD needs, because it stores timing as frame numbers. On the frame rate pages it is the rate the file was timed against — the version the subtitles were made for — and the page's second box takes the rate of the video you are going to use them with. 23.976, 24, 25, 29.97, 30, 50, 59.94 and 60 are the common ones. Getting it wrong shifts the whole timeline, and on the frame rate pages it shifts it by a ratio rather than by a fixed amount.
This page shifts a subtitle file by a timecode instead of a millisecond count. Type 00:00:02,500 and every cue moves two and a half seconds later; type -00:00:01,000 and every cue moves a second earlier. Both edges of each cue move by the same amount, so every cue keeps the length it had — the difference between this page and the millisecond one is only how you say the offset.
It is here because of where the number comes from. When you are matching a subtitle file to a reference — a new title sequence, an inserted advert, another timeline you can read a position off — what you have in hand is a pair of moments, and the offset is the difference between them. Writing that difference as a timecode is one step shorter than converting it to milliseconds in your head, and the conversion is where the mistakes live: 00:01:30,000 is ninety thousand milliseconds, not nine thousand.
The offset is read as a clock value and applied to the timeline as a whole. A cue that would be pushed before the start of the file has its start pinned to 00:00:00 while its end keeps moving, so that one cue comes out shorter; a cue whose end would land at or before zero is dropped. A file whose offset is zero, or whose offset could not be read, comes back byte for byte.
SRT, WebVTT, ASS, SSA, SBV, SAMI, MicroDVD, TTML, JSON and CSV files are read as whatever format they actually are, not as the extension suggests. Plain text and LRC are not accepted, because neither stores an end time and there would be nothing for the offset to move. Nothing leaves your machine, and a whole season runs through the queue in one pass.
Examples
Push a file two and a half seconds later
Input
1
00:00:01,000 --> 00:00:03,000
Hello there.
2
00:00:05,500 --> 00:00:08,000
Second line.
Output
1
00:00:03,500 --> 00:00:05,500
Hello there.
2
00:00:08,000 --> 00:00:10,500
Second line.
Exactly the same result as giving the millisecond page an offset of 2500 — both edges of every cue move and no cue changes length.
Pull a file earlier with a minus sign
Input
1
00:00:01,000 --> 00:00:02,000
The first one starts too early.
2
00:00:05,000 --> 00:00:08,000
This one is fine.
Output
1
00:00:00,000 --> 00:00:00,500
The first one starts too early.
2
00:00:03,500 --> 00:00:06,500
This one is fine.
Cue 1 would begin at −500 ms, so its start is pinned to zero and only that edge changes, leaving the cue 500 ms long instead of 1000.
A WebVTT-style timecode with a dot
Input
1
00:00:01,000 --> 00:00:02,000
Dot instead of comma.
Output
1
00:00:03,500 --> 00:00:04,500
Dot instead of comma.
0:00:02.500 reads the same as 00:00:02,500. Both separators and a single-digit hour are accepted, because timecodes arrive from tools that disagree about all of it.
Frequently asked questions
How do I write an offset that moves the subtitles earlier?
Put a minus sign in front of the timecode: -00:00:02,500 means two and a half seconds earlier. Without the sign the same digits push the file later, so the sign is the whole difference between the two directions and there is no separate control for it.
Why is there a timecode box here instead of a milliseconds box?
Because the offset usually comes from two clock readings rather than from a number somebody measured. If you are matching a file against a reference, you have a pair of moments and the offset is their difference, which is a timecode. The millisecond page is still there for when you already have the number, and the two pages produce identical output for the same offset.
Can I use a dot instead of a comma before the milliseconds?
Yes, and so can you write a single-digit hour. 00:00:02,500, 00:00:02.500 and 0:00:02.50 all arrive at the same 2500 milliseconds, because subtitle formats disagree about the separator and there is no reason to make you translate before you type. The fraction is read by how many digits you write, so .5 and .500 are both half a second.
What happens if I type something the page cannot read as a timecode?
The offset is ignored and the file comes back unchanged. That is the cautious half of the behaviour — nothing is guessed at, and no arbitrary number is substituted — but it is also silent, so the field's own help text spells out the accepted shapes rather than leaving you to discover them. A bare number such as 2500 is not a timecode and belongs on the millisecond page.
Does a timecode offset move both edges of each cue?
Yes. Every start and every end moves by the same amount, so no cue changes duration and no cue changes position relative to the others. If what you need is to change how long the subtitles stay on screen, the pages for moving starts and ends separately are the ones to use.