Skip to content

Subtitles

SRT to VTT converter for YouTube captions

Get caption entities: cue timings, cue text, sequence order, WEBVTT header, UTF-8 text, optional offset, and stripped styling.

  • Output: WebVTT
  • Free: 5 conversions a day · 5 MB each
  • Deleted after 24 h · never used for training

Before you start

What to expect

  • Browser-capable conversions run locally where supported; larger batches may still be queued and retained only for the product retention window.
  • Uploads are not used to train models, and retained files are deleted after 24 hours unless your account policy says otherwise.
  • Subtitle conversion changes container syntax, not translation quality or transcript accuracy.

What the output contains

  • A WebVTT file with the required WEBVTT header for HTML5 and YouTube upload workflows.
  • SRT comma millisecond separators converted to VTT dot separators.
  • Cue numbering removed or ignored as appropriate for VTT, with cue order preserved.
  • UTF-8 output without BOM expectations called out so YouTube rejection causes are easier to diagnose.

A real run

YouTube tutorial captions

Input
SRT file with 612 cues, comma millisecond separators, italic tags in 34 cues, and captions delayed 1.2 seconds after an intro trim.
Output
VTT with WEBVTT header, dot separators, styling stripped, and offsetMs: -1200 applied so cue 1 aligned with the edited video.

Known failure modes and how they're handled

YouTube rejects the caption file
The workflow writes WEBVTT header, dot millisecond separators, and UTF-8 text. Check for empty cues and overlapping timings.
Captions are offset from the video
Use offsetMs to shift cues forward or backward before downloading VTT.
Styling tags from SRT
stripStyling removes common tags for cleaner YouTube captions; keep styling only when your target player supports it.
Non-UTF-8 or BOM issues
Use UTF-8 without BOM for YouTube. Re-save unusual legacy encodings before upload if characters look wrong.

Command line

Do it yourself

ffmpeg

bash
ffmpeg -i captions.srt captions.vtt

Fast local conversion; inspect encoding, styling, overlap, and timing offset before uploading to YouTube.

Questions about this workflow

Why does VTT need a WEBVTT header?

WebVTT files start with WEBVTT so players and YouTube can identify the format.

What changes from SRT timing?

SRT uses commas for milliseconds; VTT uses dots. The converter rewrites cue timings accordingly.

Can I shift all captions after trimming a video?

Yes. Use offsetMs, such as -1200 for 1.2 seconds earlier or 2000 for 2 seconds later.

Does it translate captions?

No. It converts subtitle file format and timing syntax only. Translation is a separate workflow.