Caption conversion

Convert WebVTT to SRT

WebVTT (Web Video Text Tracks) to SubRip Subtitle (SRT). Convert in the web app, automate with the REST API, or run it offline with the CLI.

Converting WebVTT to SRT produces the most compatible subtitle file there is, for desktop players, video editors, social platforms and translation tools that don’t accept .vtt. WebVTT can express more than SRT, so the conversion simplifies some features.

What carries over

  • Cue text and millisecond timing
  • Italics, bold and underline
  • Line breaks within each cue

What changes

  • Cue settings (line, position, align) are dropped, so every subtitle renders at the default bottom position
  • STYLE, REGION and NOTE blocks are removed
  • CSS classes and voice tags are removed. Speaker names in <v> tags are not shown as text
  • Cues are renumbered sequentially, as SRT requires

How to convert WebVTT to SRT

The same conversion engine powers all three, so a job you set up in the web app produces identical output from the API or CLI.

In the web app

  1. Sign in to the web app, or start a free trial.
  2. Upload your .vtt file and select WebVTT as the source profile.
  3. Select SubRip Video Subtitle Script as the target profile.
  4. Review the recommended settings for this conversion.
  5. Run the conversion and download your .srt file.

With the API

POST /jobs
curl -X POST https://api.closedcaptionconverter.com/jobs \
  -H "x-api-key: YOUR_API_KEY" \
  -F "source=@input.vtt" \
  -F 'config={
    "job_type": "convert",
    "source_profile": "WebVTT",
    "target_profile": "SubRip Video Subtitle Script",
    "fix_overlap": true
  }'

See API Getting Started for authentication and response handling.

With the CLI

Command line
ccconverter \
  --source input.vtt \
  --target output.srt \
  --source_profile "WebVTT" \
  --target_profile "SubRip Video Subtitle Script" \
  --fix_overlap true \
  --bom true

The CLI runs fully offline on macOS, Windows and Linux. See the CLI docs for every flag.

Recommended settings

Target encodingUTF-8 is the safest choice. Some older players need a BOM.
Fix overlapHelps when the WebVTT relied on positioning to show two cues at once.

Format-specific options are covered in Encoding & Decoding Options and Profiles & Formats.

WebVTT to SRT questions

Their placement came from WebVTT cue settings, and SRT has no equivalent. If placement matters, keep the WebVTT, or deliver a format with positioning such as TTML.

Voice tags like <v Sam> are markup, not visible text, so they are dropped. If the speaker names need to appear in the SRT, include them in the cue text instead.

The player probably expects a byte order mark or a legacy encoding. Re-export with the BOM option enabled, or with the encoding your player expects.

Free trial

Convert WebVTT to SRT now

Upload your .vtt file and download SRT in seconds, or automate it with the API and CLI.