Back

SRT / VTT subtitle converter

Text tools

Loading

Loading tool

The tool is loaded only when you open it.

All processing for this tool happens in your browser. Your input is not sent to a server.

About this tool

A bounded SRT/WebVTT conversion subset. Preserve millisecond timings and multiline cue payloads literally, regenerate numbering, count overlaps, or extract text. No video playback, synchronization or complete format validation.

Common uses

  • Prepare plain subtitle files for a different playback workflow.
  • Inspect nested overlaps and repeated numbering without deleting cues.

How to use it

  1. 1.Paste a supported subtitle or choose one strict UTF-8 file. Choose Auto, SRT or WebVTT explicitly; no encoding detection or external resource loading.
  2. 2.Choose SRT, WebVTT or plain TXT and click Convert. Inspect the complete cue/overlap counts and escaped previews; nested overlaps are retained.
  3. 3.Read every metadata, numbering, order and styling diagnostic. Where present, acknowledge those changes before saving the full subtitle/TXT; a summary JSON remains available without text.

Worked multiline overlap example

Two cues, one overlap, repaired numbers

9
00:00:01,001 --> 00:00:03,999
Hello
World

9
00:00:02,000 --> 00:00:04,000
Overlap
WEBVTT

1
00:00:01.001 --> 00:00:03.999
Hello
World

2
00:00:02.000 --> 00:00:04.000
Overlap

Any positive intersection counts, including nested and nonadjacent cues. Touching boundaries do not overlap. Source cue numbers refer to input order; overlaps are retained, never automatically repaired.

Limits and notes

  • Support: strict SRT HH:MM:SS,mmm (a numeric counter may be missing); WebVTT requires WEBVTT and a separating blank line, with MM:SS.mmm or HH:MM:SS.mmm. LF/CRLF/CR and one leading UTF-8 BOM are normalized. Empty or SPACE/TAB-only lines delimit blocks. Nonempty payload lines keep their whitespace. Every cue needs nonempty text and positive duration; any malformed cue blocks the whole conversion. WebVTT output is stably sorted by start time; SRT and TXT keep input order. All numbers/IDs are regenerated. Metadata and timing suffixes are reported and omitted. Payload markup is kept literally in SRT/VTT, with a rendering-compatibility warning; unsupported dialects, frame rates and encodings are not guessed.
  • Single file ≤1 MiB; input ≤500000 UTF-16 units and 20000 lines; ≤2000 cues, ≤4000 units per cue; output ≤500000 UTF-16 units,2 MiB and 20000 lines. Times 00:00:00.000–99:59:59.999, exactly 3 millisecond digits, end > start. File read deadline15 seconds; bounded synchronous conversion, not a worker or whole-process memory guarantee.
  • TXT lexical extraction strips recognized b/i/u/c/v/lang/ruby/rt/font and inline timestamp tags. It decodes amp, lt, gt, nbsp, lrm, rlm and safe decimal/hex numeric entities once; unknown tags/references remain with warnings. Ruby base and annotation stay adjacent. Blank lines separate cues. It is not an HTML parser, sanitizer, speech transcript or rendering-equivalence guarantee. Millisecond values and multiline opaque payloads can round-trip between supported SRT/VTT; numbering, order, BOM, newline style, header metadata, cue settings and styling semantics do not round-trip.
  • Convert locally without upload or storage. Subtitle and TXT downloads contain your complete text; share only when intended. JSON summaries omit text, cue identifiers, filenames and metadata.

Frequently asked questions

Are overlaps or styling repaired automatically?

Any positive intersection counts, including nested and nonadjacent cues. Touching boundaries do not overlap. Source cue numbers refer to input order; overlaps are retained, never automatically repaired.

Is the conversion lossless?

TXT lexical extraction strips recognized b/i/u/c/v/lang/ruby/rt/font and inline timestamp tags. It decodes amp, lt, gt, nbsp, lrm, rlm and safe decimal/hex numeric entities once; unknown tags/references remain with warnings. Ruby base and annotation stay adjacent. Blank lines separate cues. It is not an HTML parser, sanitizer, speech transcript or rendering-equivalence guarantee. Millisecond values and multiline opaque payloads can round-trip between supported SRT/VTT; numbering, order, BOM, newline style, header metadata, cue settings and styling semantics do not round-trip.

Related tools