Subtitle Converter & Shifter
runs in your browserConvert subtitles between SRT and WebVTT, and fix timing that is out of sync by shifting or stretching every cue at once.
Drop a file here, or .
Drop an .srt or .vtt file, or paste it below
Original
VTT
about this tool
Two formats, one problem
SRT and WebVTT are the same idea written slightly differently. SRT numbers its
cues and puts a comma before the milliseconds; WebVTT opens with a WEBVTT
line, skips the numbering, and uses a full stop. Browsers want VTT for HTML
video, which is usually why anyone converts.
Drop a file or paste it in. Which format it is gets worked out from what is
actually in the file rather than from the extension, because a .txt that is
really an SRT is extremely common.
The thing you are probably here for
Most people arrive because the subtitles are out of sync, not because of the format.
Shift moves every cue by the same amount. Negative brings them earlier, positive pushes them later, and the ±0.5 and ±1 buttons cover the usual case. Nothing is ever moved below zero, because a negative timestamp is something no player will take.
Stretch is for when the drift gets worse as the film goes on. That is a frame-rate mismatch rather than a constant offset, and no amount of shifting fixes it — the error grows, so the correction has to grow too. Use 0.959 for subtitles timed at 23.976fps being played at 25, or 1.0427 going the other way — a frame sits at N/fps seconds, so the faster playback needs the smaller number.
If the first subtitle is right and the last one is a long way out, you want stretch. If everything is wrong by the same amount, you want shift.
The details that break files
A file saved on Windows carries a byte order mark, which makes the first cue number unreadable and is why a file sometimes loads with its opening subtitle mysteriously missing. That is handled, along with carriage returns.
VTT allows the hour field to be left off, and puts cue settings like
line:90% after the end time; both are read correctly. NOTE and STYLE
blocks are metadata and are left out rather than turned into subtitles.
A block that cannot be read is skipped and listed with the offending line quoted, so you can find it. The rest of the file still converts.
Cues are renumbered from one on the way out, so a skipped block leaves no gap.
Nothing is uploaded
The file is read and converted in your browser. Subtitles are often for something not meant to be public, so this page keeps to the same rule as the rest of the site.
For the video itself, see video to GIF.
questions
- My subtitles are a second late. How do I fix them?
- Put the correction in "shift by" — a negative number moves them earlier, a positive one later — or use the ±0.5 and ±1 buttons. Every cue moves together and nothing is ever pushed below zero, because no player accepts a negative timestamp.
- The drift gets worse as the film goes on.
- That is a frame-rate mismatch rather than a constant offset, so shifting will not fix it. Use "stretch" instead: 0.959 for subtitles timed at 23.976fps being played at 25, or 1.0427 the other way — a frame sits at N/fps seconds, so the faster playback needs the smaller number. A shift moves everything by the same amount; a stretch multiplies, so the correction grows through the file as the error does.
- What is the difference between SRT and VTT?
- Very little. SRT numbers its cues and puts a comma before the milliseconds; WebVTT starts with a WEBVTT line, needs no numbering, and uses a full stop. VTT is the format browsers want for HTML video, which is the usual reason for converting.
- Will it cope with a file from Windows?
- Yes. Carriage returns and the byte order mark that Notepad adds are both handled — the BOM is worth naming because it makes the first cue number unreadable and is the reason a file sometimes loads with its opening subtitle missing.
- What happens to cues it cannot read?
- They are skipped and listed, with the offending line quoted so you can find it. The rest of the file still converts. VTT NOTE and STYLE blocks are recognised as metadata and left out rather than turned into subtitles.
- Is my file uploaded?
- No. It is read in your browser and converted there. Subtitles are often for something not meant to be public, so this one stays local like everything else on the site.