All tools

SRT ↔ WebVTT Subtitle Converter

Data

Convert subtitles between SubRip (.srt) and WebVTT (.vtt), with an optional time shift to resync every cue

Browsers want WebVTT for the HTML5 track element, while most editors and download sites still hand you SubRip, so the two formats need swapping constantly. Paste or upload a file and this converts between them, rewriting the timestamp separator, adding or stripping the WEBVTT header, and renumbering cues sequentially for SRT output. It also shifts every cue by a number of seconds, which is what resyncing subtitles to a different cut of a video actually amounts to. Malformed cues are reported as warnings instead of stopping the conversion, so a slightly broken file still comes out usable.

subtitlesrtwebvttvttcaptionconvertvideo

How to use SRT ↔ WebVTT Subtitle Converter

  • 1.Paste your subtitle text or upload a .srt or .vtt file. The source format is detected automatically.
  • 2.Pick the output format, and set a time shift in seconds if the subtitles run early or late (negative values shift them earlier).
  • 3.Check the warnings for overlapping cues or dropped WebVTT features, then copy or download the converted file.

Frequently asked questions

What is lost when converting WebVTT to SRT?
Cue identifiers, cue settings such as line and align, and NOTE, STYLE, and REGION blocks. SubRip has no equivalent for any of them, so each one is dropped and listed in the warnings.
Does it support .ass, .ssa, or .sub files?
No. Only SubRip and WebVTT are supported, since both are line-based text with the same cue structure. Advanced SubStation formats carry styling and positioning that would not survive the round trip.
Is my subtitle file uploaded anywhere?
Not in the browser tool: parsing and conversion run entirely on your machine and nothing is sent over the network. The REST endpoint does receive the text you post to it.
What happens if a negative time shift pushes a cue before zero?
That cue is clamped to 00:00:00 and a warning tells you how many cues were affected, rather than emitting a negative timestamp that no player will accept.

Use via API, SDK, or MCP

cURL# Free: 1,000 req/day · Pro: 10,000 req/day
curl -X POST https://api.utilix.tech/v1/tools/subtitle-converter \
  -H "Authorization: Bearer utx_live_..." \
  -H "Content-Type: application/json" \
  -d '{"input":"1\n00:00:01,000 --> 00:00:04,000\nHello there.\n","target":"vtt","offsetSeconds":0}'

Get an API key from your dashboard · Full API docs →