SRT ↔ WebVTT Subtitle Converter

SRT ↔ WebVTT Subtitle Converter: Converts recognized cue blocks between SRT and WebVTT timing forms; it is not a complete subtitle validator and removes WebVTT metadata blocks on VTT-to-SRT conversion.

Srt Vtt Converter · Client runtimeSandboxed
Formatted results will render here in real time.

About this srt ↔ webvtt subtitle converter

Converts recognized cue blocks between SRT and WebVTT timing forms; it is not a complete subtitle validator and removes WebVTT metadata blocks on VTT-to-SRT conversion Applies Unicode-compliant text transformations and parsing directly in the browser tab without data leakage.

Text processing & transformation mechanics

Converts the cue blocks recognized in SRT or WebVTT text. SRT input receives a `WEBVTT` header and timestamp commas become periods. WebVTT input produces newly numbered SRT cues, expands short timestamps to `HH:MM:SS,mmm`, and removes the WebVTT header, cue IDs, cue settings, and `NOTE`, `STYLE`, and `REGION` blocks.

Worked text manipulation example

Scenario: Convert one recognized SRT cue to WebVTT.

Sample input:

1 00:00:01,000 --> 00:00:02,000 Hello

Processing: Recognize the block timing, change millisecond commas to periods, and prepend the WebVTT header plus a blank line.

Illustrative output:

WEBVTT 00:00:01.000 --> 00:00:02.000 Hello

Character encoding & string length boundaries

Line endings `CRLF`, `LF`, and `CR` are accepted. For WebVTT, a timing line must be in the original first two lines of a block; for SRT, the optional leading numeric cue index is removed first, then the timing line may be in either of the next two lines. Malformed or unrecognized blocks are omitted. This is not full SRT/WebVTT validation: it does not preserve WebVTT header text, cue IDs, cue settings, styles, regions, or notes. Dialogue lines, including a number or timing-like text after a recognized timing line, are retained.

Text formatting and transformations in SRT ↔ WebVTT Subtitle Converter preserve character integrity. Check edge cases such as multi-line inputs and special characters before downstream use.

In-memory text processing boundary

String operations and Unicode manipulations in SRT ↔ WebVTT Subtitle Converter execute entirely in local browser memory without transmitting input text.

Unicode Consortium & text formatting standards

Unicode Consortium standard annexes (UAX) and character encoding specifications:

  • W3C WebVTT: The Web Video Text Tracks Format
  • SubRip (SRT) subtitle format (de facto format reference; this tool is not a full validator)
  • Implementation-specific constrained SRT/WebVTT cue transform

SRT ↔ WebVTT Subtitle Converter verification · Audit standards

How to use it

  1. Paste SRT or WebVTT text. For SRT, use a cue such as `1` followed by `00:00:01,000 --> 00:00:02,000` and its text.
  2. Click Run locally; the direction is determined only by an initial optional-BOM `WEBVTT` header.
  3. Read and copy the converted text. VTT-to-SRT cues are renumbered; SRT-to-VTT begins with `WEBVTT`, followed by a blank line.

Frequently asked questions

Which subtitle conversion directions does SRT/VTT Converter support?+

Input whose header is `WEBVTT`—with or without a BOM and with CRLF, LF, or CR line endings—is converted to numbered SRT. Other cue input is converted to WebVTT. VTT-to-SRT uses comma milliseconds; SRT-to-VTT uses periods.

Can I try a VTT-to-SRT example?+

Enter `WEBVTT`, then a blank line, then `cue-1`, `00:01.000 --> 00:02.000 align:start`, and `Hello` on separate lines. Run locally returns `1`, `00:00:01,000 --> 00:00:02,000`, and `Hello`; missing hours are padded.

How are cue IDs, settings, and VTT blocks handled?+

VTT `NOTE`, `STYLE`, and `REGION` blocks are skipped. In VTT-to-SRT, cue IDs and timing settings are intentionally dropped, while inline markup in cue payload is retained and each converted cue receives a sequential number.

Does the converter change every timestamp-looking line?+

No. It converts only the first valid timing line in a cue block. Cue payload is retained, so a later line that merely looks like a timestamp or contains an arrow remains payload rather than another converted timing line.