SRT to VTT ConverterShift Subtitle Timing & Fix Sync

Drop in an .srt or .vtt file to convert it, shift the timing, rescale the frame rate, or strip formatting tags. Everything runs in your browser.

Your input is never sent anywhere.

Details

Load a subtitle file

Drop an .srt or .vtt file here, or click to browse

Applies to uploaded files. If é, ñ or ü show up as �, try Windows-1252.

Convert VTT to SRT (or SRT to VTT) and Fix Subtitle Delay

SubRip (.srt) and WebVTT (.vtt) are the two plain-text subtitle formats you run into most often. They look almost the same, but the timestamp punctuation and the file header differ, so a file from one tool does not always load in another.

Timing is the other common problem. A trimmed intro, a re-encoded video, or a different frame rate can leave every subtitle a few seconds early or late. This tool converts the format and fixes the timing in one pass: a constant shift in seconds (down to the millisecond) and, if the frame rates differ, a frame rate scale.

After you load a file, you see the number of cues, the time span, and a count of cues that overlap or have an end time at or before their start. Flagged cues are highlighted in the preview so you can check them before you download.

When You Need to Convert or Re-time a Subtitle File

Subtitles show up too early or too late

You trimmed the intro, re-exported the video, or downloaded subtitles made for another cut. Enter one shift value and every start and end time moves by the same amount.

Uploading captions to YouTube or Vimeo

Both platforms accept SRT and WebVTT files. Vimeo recommends WebVTT when possible, so convert if your editor only exports SRT.

Adding captions to an HTML5 video

The <track> element on a <video> loads WebVTT, so an SRT export from your editor needs converting before you can reference it on a web page.

Reusing subtitles on a different frame rate version

Subtitles timed against a 23.976 fps cut drift when the video runs at 25 fps. Choose the source and target frame rates to rescale every timestamp.

How to Convert and Re-time Subtitles

  1. Drop an .srt or .vtt file onto the tool, or paste the subtitle text into the box.
  2. Check the detected format, then choose SRT or WebVTT as the output.
  3. Enter a shift in seconds to fix a constant delay. Turn on frame rate conversion if the gap grows over time. Turn on tag stripping if you want plain text.
  4. Review the preview and any amber-highlighted cues, then copy the result or download the file.

Note: The file is read and converted in your browser, and this tool does not upload it.

What Changes (and What Doesn't) When You Convert

  • Uploaded files are read as UTF-8 by default. If accented letters look wrong, switch the file encoding to Windows-1252 and the file reloads. Downloaded files are always UTF-8.
  • Cue settings on the timing line (position, align, line, size) are kept when the output is VTT and dropped when the output is SRT.
  • Cues are renumbered from 1. NOTE and STYLE blocks, VTT cue identifiers, and any text after WEBVTT in the header are not carried over.
  • Cues stay in file order. The tool does not sort them, so out-of-order timestamps show up as warnings.
  • Frame rate scaling is applied first, then the shift is added. Any time that would drop below 00:00:00 is set to 0.
  • Stripping tags removes everything between < and >, including WebVTT voice tags such as <v Name>.
  • Test the final file in the player or platform you plan to use before you publish.

SRT vs. WebVTT: Format Differences at a Glance

What changes in the file when you switch formats.

FeatureSRT (SubRip)VTT (WebVTT)
File extension.srt.vtt
Time format00:01:05,250 (comma)00:01:05.250 (period); hours are optional
HeaderNoneFirst line must start with WEBVTT
Cue numbersExpectedOptional
Position and alignmentNot part of the basic formatCue settings: position, align, line, size
Text stylingBasic tags such as <i>; support varies by player<b>, <i>, <u>, voice tags, and CSS styling
Typical useVideo editors, desktop players, upload formsHTML5 <video> through <track>, web players
Not sure which one to use? SRT is the simpler choice for editors and desktop players. Choose WebVTT for web players or when you need cue positioning. YouTube and Vimeo accept both.

How to Tell Why Your Subtitles Are Out of Sync

Two different problems cause most sync issues, and they need different fixes.

Constant offset vs. gradual drift

Check a line near the start and one near the end. If both are off by the same amount, the whole file needs one shift. If the first line is right but the last line is several seconds off, the error grows over time, which usually points to a frame rate mismatch between the subtitle timing and the video.

Which direction to shift

The shift value is added to every start and end time. A positive value delays the subtitles, and a negative value brings them earlier. If a line appears 2 seconds before it is spoken, enter +2. If it appears 1.5 seconds after, enter -1.5.

Frame rate scaling, for example 23.976 to 25 fps

This tool multiplies each timestamp by source fps ÷ target fps. Going from 23.976 to 25 gives 0.95904, so every time becomes about 4% shorter. That matches a film that was sped up to play at 25 fps. Pick the pair that matches how your video was changed, not simply its current frame rate.

Overlap warnings are not always errors

A cue is flagged when it starts before the previous cue ends, or when its end time is at or before its start. Overlaps are allowed in WebVTT and are sometimes used when two people talk at once, so look at each flagged cue before changing it.

Common Subtitle Conversion Problems

Accented letters turn into � or other odd characters

The file was saved in an encoding other than UTF-8, such as Windows-1252, but it was read as UTF-8.

💡 See the solution▼
Open the File encoding menu and choose Windows-1252. The file reloads with the new setting. Check the preview, then download. The download is UTF-8.

Subtitles got worse after shifting

The shift went the wrong way. Positive values delay subtitles, so using a positive number on subtitles that already lag pushes them further behind.

💡 See the solution▼
Reset the shift and compare a line in the preview with the audio. If subtitles appear too early, enter a positive value. If they appear too late, enter a negative one.

The start looks fine but the end of the video is out of sync

A constant shift cannot fix a drift that grows over the length of the video.

💡 See the solution▼
Turn on frame rate conversion, choose the fps the subtitles were timed for as the source and the video's fps as the target, then fine-tune with a small shift if needed.

Positioning disappeared after converting VTT to SRT

SRT has no cue settings, so position and alignment on the timing line are dropped when the output is SRT.

💡 See the solution▼
Keep the file as VTT if you need positioning. If you convert to SRT, check the result in your player afterward.

Speaker names vanished from the text

Tag stripping removes everything between < and >, which includes WebVTT voice tags like <v Name>.

💡 See the solution▼
Leave "Strip tags" off to keep voice tags, or add the speaker names back into the text after stripping.

SRT, VTT and Subtitle Timing: FAQ

Q.What is the difference between SRT and VTT?

Q.

A. Both store timed subtitle text, but WebVTT (.vtt) must start with a WEBVTT line, uses a period before the milliseconds (00:01.500), and supports cue settings such as position and align. SubRip (.srt) has no header, uses a comma (00:00:01,500), and is the simpler format. This converter handles those differences when it switches formats.

Q.Does YouTube need VTT, or can I upload an SRT file?

Q.

A. YouTube's list of supported subtitle files includes both SubRip (.srt) and WebVTT (.vtt), so either one can be uploaded. Vimeo also accepts both and recommends WebVTT when possible. Convert only if the platform or player you are using asks for a specific format.

Q.How do I fix subtitles that are out of sync?

Q.

A. First compare the first and last lines against the audio. If both are off by the same amount, load the file and enter that amount in the shift field. If the gap grows as the video plays, the frame rates probably differ: turn on frame rate conversion and pick the source and target fps. Then download the result.

Q.Should I enter a positive or negative number to shift subtitles?

Q.

A. A positive number is added to every start and end time, so subtitles appear later. A negative number makes them appear earlier. If subtitles show up 2 seconds before the speech, enter +2. If they lag 1.5 seconds behind, enter -1.5.

Q.Can I shift subtitles by milliseconds?

Q.

A. Yes. The shift field takes seconds with up to three decimal places, so 0.250 moves everything by 250 ms. The preset buttons (±0.1, ±0.5, ±1, ±5 seconds) add to whatever is already in the field. Output timestamps are rounded to the nearest millisecond.

Q.What happens to italic and bold tags when I convert?

Q.

A. They are kept by default. WebVTT supports <b>, <i> and <u> in cue text, but tags it does not support, such as <font> from some SRT files, may be ignored by the player. Turn on "Strip tags" to remove everything between < and > from the cue text, including WebVTT voice tags such as <v Name>, which also removes the speaker name inside the tag.

Q.Is my subtitle file uploaded anywhere?

Q.

A. No. The file is read, parsed, converted and shifted by JavaScript in your browser, and this tool does not send it to a server. Closing or reloading the page clears it.

User Feedback & Request

Your feedback
makes this tool better.

Tell us which features you'd like, what should be fixed, or which new tool you'd like to see. An engineer reads every submission and uses it to guide development.

Send feedback