Turn WebVTT (.vtt) subtitles into STL subtitle files in a few clicks—fast conversion with a simple upload and instant download.
.vtt file or click "Add Files" to select it from your device. Batch upload is supported, so you can queue several episodes or language tracks in one pass. Files are processed in your browser session — nothing is uploaded to a server.$-prefixed configuration commands and HH:MM:SS:FF timecodes. This is the same dialect EZTitles documents for DVD/NLE authoring exchange, not the binary EBU N19 (.stl) used by broadcast subtitle exchange.HH:MM:SS.mmm) and Spruce STL uses frame-based timecodes (HH:MM:SS:FF). The converter quantises millisecond cues to the nearest frame at 29.97 fps (NTSC) by default — open the output in a text editor afterwards to spot-check any cue boundary that lands between frames..stl file. Drop it straight into DVD Studio Pro's subtitle import dialog, Adobe Encore, or any tool that accepts the Spruce script syntax. No sign-up, no watermark, no email gating.WebVTT (.vtt) is the captioning format the W3C standardised for HTML5 video — every major browser plays it natively, and YouTube, Vimeo, and Brightcove all accept it. Spruce STL, by contrast, was authored by Spruce Technologies for DVD authoring and lives on inside Apple DVD Studio Pro, Adobe Encore, and several professional captioning suites. Going from VTT to STL is the bridge between "modern web caption file" and "DVD/Blu-ray or legacy NLE authoring track."
.stl) as a subtitle stream. If your project was captioned on the web with WebVTT and now needs a physical-media master, STL is the input the authoring app expects..stl script through the late 2000s; converting your web-era WebVTT captions to that format lets you slot them next to existing assets in the same library.line, position, align, vertical:rl), region blocks, and CSS-style ::cue selectors. None of these survive into a DVD subtitle track, and Spruce STL ignores them cleanly — handy when you want a baseline caption file without any browser-specific styling.HH:MM:SS:FF grid that authoring tools schedule against.| Property | WebVTT (.vtt) |
Spruce STL (.stl) |
|---|---|---|
| Container | UTF-8 plain text | Plain text (ANSI code pages or UTF-8/UTF-16 per EZTitles' export options) |
| Timestamp format | HH:MM:SS.mmm (millisecond, no frame rate) |
HH:MM:SS:FF (frame-accurate, tied to a display standard) |
| Frame rate awareness | None — milliseconds | Yes — $DisplayStandard declares NTSC / NTSC-drop / PAL |
| Styling | CSS-style ::cue selectors, <b>, <i>, <u>, <c.classname> |
Global font/colour set once at file head; italic via ^I…^I tags |
| Positioning | Per-cue: line:, position:, align:, vertical:rl |
Per-cue X/Y offsets via $HorzAlign / $VertAlign / coordinates |
| Multi-line text | Newlines inside the cue body | ` |
| Specification owner | W3C (Candidate Recommendation Draft, WHATWG draft since 2010) — public spec | Spruce Technologies, never published as a public standard; the de facto reference is DVD Studio Pro's manual |
| Typical players | Browsers, HTML5 <track>, YouTube, Vimeo |
DVD Studio Pro, Adobe Encore, EZTitles, FAB Subtitler |
Source for the WebVTT spec details: W3C WebVTT: The Web Video Text Tracks Format. Source for the Spruce STL command set: EZTitles — Apple DVD Studio Pro / Spruce STL Text Script export reference.
These are the $-prefixed directives at the top of every Spruce script. xconvert writes sensible defaults; open the output and tune any of them if your authoring tool expects different values.
| Command | What it controls | Typical value |
|---|---|---|
$DisplayStandard |
Frame rate / TV standard for the timecode grid | NTSC (29.97 non-drop), NDF (drop frame), or PAL (25 fps) |
$TapeOffset |
Whether timecodes are tape-offset (True) or zero-based (False) |
False for media-relative subtitles; DVD Studio Pro often needs this to import past minute 0 |
$FontName |
Global font family for all cues | Arial, Helvetica, or a font installed in the authoring app |
$FontSize |
Point size for the cue text | 26–32 is typical for 720×480 NTSC |
$HorzAlign / $VertAlign |
Default horizontal / vertical alignment | Center / Bottom |
$ColorIndex1…$ColorIndex4 |
The four-colour palette used for the subtitle bitmap on DVD | Tool-defined; DVD Studio Pro renders the script against these |
^I … ^I |
Inline italic open/close inside a cue line | Inserted automatically when xconvert detects <i> in WebVTT |
Spruce STL Text Script — the plain-text dialect Apple DVD Studio Pro and Adobe Encore consume. EBU STL (formally EBU Tech 3264 / N19) is a completely different file: a binary, broadcast-exchange format with a fixed 1024-byte General Subtitle Information (GSI) block followed by 128-byte Text and Timing Information (TTI) blocks. The two formats share the .stl extension by historical accident, which trips up a lot of subtitling pipelines. If your downstream tool is a broadcast playout system asking for "EBU STL," you need a different converter — Spruce STL won't import.
The default is NTSC at 29.97 fps non-drop, which matches the most common North American DVD authoring profile. WebVTT cues are in milliseconds with no frame-rate concept, so converting to STL requires a target rate; if your project is PAL (25 fps) or true 24 fps, open the resulting file and change $DisplayStandard to PAL or FILM before importing into your authoring tool. Quantisation error in the conversion is at most one half-frame (~17 ms at 29.97 fps), which is below the perceptual threshold for caption timing.
<b>, <i>, ::cue selectors) survive the conversion?Italics survive — xconvert wraps the cue text in ^I…^I tags so DVD Studio Pro renders them in italic. Bold, underline, and colour spans do not survive, because Spruce STL applies a single global font and style at the file head; you cannot vary it cue-by-cue in the script. Region blocks, line:, position:, and align: cue settings are dropped — DVD subtitles place text via the authoring tool's render settings, not per-cue positioning.
DVD Studio Pro requires that every subtitle's in-cue timecode fall within the running time of the video asset it's attached to. If your VTT file was captured against a longer master and you've since trimmed the video, late cues will be rejected. The other common cause is the $TapeOffset directive: when it's left at the default True, DSP expects the timecodes to be tape-relative rather than zero-based. Open the .stl in a text editor and add $TapeOffset = False near the header — that's the fix Apple's own DVD Studio Pro 4 docs prescribe for media-relative subtitle imports.
The classic Spruce script was written for ANSI code pages (Windows-1250 through Windows-1257, plus the East Asian DBCS pages 932 / 936 / 949 / 950). Modern exporters — including xconvert — write UTF-8 instead, but older builds of DVD Studio Pro and some legacy authoring tools default to interpreting the file as Windows-1252. If you see mojibake, re-save the file as the code page that matches your language (Windows-1253 for Greek, Windows-1251 for Cyrillic, Windows-1256 for Arabic) or, if your tool supports it, save as UTF-16 BOM with the matching encoding declaration. EZTitles' export panel documents this exact workflow.
In WebVTT, a newline inside the cue body produces a line break. The Spruce STL Text Script uses the pipe character | to separate lines within a single subtitle, so xconvert maps each newline to |. A two-line cue like Hello there\nHow are you? becomes Hello there|How are you? in the .stl output. The pipe is reserved for this purpose — if your source text contains a literal |, the converter escapes it (different DVD authoring tools handle escaping inconsistently; spot-check the output if your captions contain bar characters).
Mostly, but expect to lose styling and positioning. Going VTT → STL drops cue positioning, region blocks, and CSS styling (only italics survive). Going STL → VTT recovers the text and timing but cannot reconstruct the WebVTT cue settings you originally had. For a non-destructive workflow, keep your master in WebVTT (or TTML / DFXP, which preserve far more metadata) and treat STL as a one-way export for DVD/NLE delivery.
Yes. Both WebVTT and the Spruce STL Text Script are plain-text formats with simple grammars, so the parse-and-rewrite happens entirely in JavaScript on the page. Nothing is uploaded to xconvert's servers, no account is required, and there are no watermarks, daily-file caps, or hidden Pro tiers on the converter. Close the tab and the file is gone.