Turn WebVTT (.VTT) subtitle files into plain text (.TXT) for easy reading, copying, and sharing—right in your browser.
.vtt file onto the upload area, click "+ Add Files" to browse, or paste WebVTT content straight into the text area. Multiple files can be queued in one batch.WEBVTT header, cue identifiers, timestamp lines (00:00:01.000 --> 00:00:04.500), and inline cue settings, leaving only the spoken text in reading order.<v Speaker>), sound cues ([Music], [Applause]), or repeated lines from YouTube's rolling auto-captions and edit them before download. Conversion runs in your browser session — files never leave the page..txt file (or copy the text directly from the preview). No sign-up, no watermark, no email gating.WebVTT (Web Video Text Tracks, MIME type text/vtt) is the W3C-standard caption format for HTML5 video — it carries timing, positioning, styling, and speaker metadata that browsers consume via the <track> element. Once a video has been captioned, the underlying transcript is locked inside the VTT file, surrounded by timestamps and cue syntax that get in the way of every downstream use. Stripping it back to plain text unlocks:
.vtt track. Pasting a cleaned transcript under an embedded video turns a 30-minute interview into thousands of words of indexable content.<v> tags break those imports..txt transcripts for a phrase ("revenue recognition", "sodium-ion") is instant; searching across a folder of VTTs returns noisy matches inside cue headers.Need to keep the timing or hand the captions to a different tool? Use Word Counter on the cleaned transcript or run the output through Text Case Converter to normalise SHOUTING CAPS auto-captions to sentence case.
| Element | VTT (input) | TXT (output) |
|---|---|---|
WEBVTT file signature |
Required first line | Removed |
Cue timestamps hh:mm:ss.fff --> hh:mm:ss.fff |
Required per cue | Removed |
| Cue identifiers (optional numeric or named IDs) | Optional | Removed |
Cue settings (line:, position:, align:, size:) |
Optional | Removed |
Voice tags <v Speaker>...</v> |
Supported in spec | Tag stripped; speaker text may be kept or removed depending on options |
Inline styling <b>, <i>, <u>, <c.classname> |
Supported | Tags removed, text preserved |
STYLE, REGION blocks (CSS-like) |
Supported in header | Removed |
NOTE comment blocks |
Supported, ignored by players | Removed |
Sound descriptions [Music], [Applause], (laughter) |
Convention, not spec | Kept by default; can be filtered |
| Encoding | UTF-8 (per spec) | UTF-8 |
| Line endings | LF or CRLF | LF (Unix) |
| Source | Typical quirks in the VTT | What to clean up |
|---|---|---|
| YouTube Studio download | Rolling word-by-word auto-captions create heavily overlapping cues that repeat the same line multiple times | Deduplicate consecutive identical lines |
YouTube youtube-dl / yt-dlp auto-subs |
Same rolling captions plus <00:00:01.000> inline word timestamps |
Strip inline timestamp tags and dedupe |
| Zoom / Teams / Webex cloud recording | One cue per speaker turn with <v Speaker Name> tags |
Decide whether to keep speaker labels as Speaker: prefixes or drop them |
| Vimeo / Wistia exports | Clean, edited captions with no auto-caption residue | Usually a straight strip-and-go |
| Manually authored (Subtitle Edit, Aegisub) | Carefully formatted, often with <i> for narration and [sound] cues |
Decide whether sound cues belong in the transcript |
| Whisper / OpenAI Whisper output | Long cues, punctuation present, no speaker tags by default | Minimal cleanup; just strip timing |
WebVTT speaker labels are encoded as <v Speaker Name>spoken text</v> voice spans, which the W3C spec defines but most authoring tools render only as a styling hint. By default the conversion preserves the spoken text and removes the surrounding tag. If you want a transcript that reads "Alice: ...\nBob: ..." you can paste the cleaned text into Text Case Converter afterwards, or enable the speaker-prefix option before downloading if your source had <v> tags.
YouTube's auto-generated captions render in a scrolling style where each new word produces a new cue containing the prior phrase plus the next word. Downloaded as VTT, this looks like dozens of near-duplicate lines. The cleaner removes consecutive identical lines, but if you grab the file with yt-dlp --write-auto-sub --sub-format vtt the file also contains inline <00:00:01.500> word timestamps that need stripping separately — both happen automatically here.
Periods. WebVTT uses 00:01:23.456 (period before the milliseconds). SRT uses 00:01:23,456 (comma). The --> arrow and the cue numbering are the other big visible differences — see the W3C WebVTT spec for the full grammar.
[Music], [Applause], and other sound descriptions?By default yes, because they are real words in the transcript and matter for accessibility and search context. If you only want spoken dialogue, the sound-tag filter removes anything in square brackets [...] and round brackets (laughter) style cues. This is the same convention SDH (Subtitles for the Deaf and Hard of Hearing) tracks use.
Yes. A VTT cue can span multiple lines between its timestamp line and the next blank line; those lines are joined with a single space (default), kept as separate paragraph lines, or merged into a paragraph depending on the output mode you pick. The "Sentences" mode also re-joins lines that were broken purely for caption length so a sentence reads as one continuous line.
WebVTT is UTF-8 by spec, and the TXT output is written as UTF-8 with no BOM. Accented Latin characters (Spanish ñ, French é, German ß), CJK ideographs, Arabic and Hebrew right-to-left text, and emoji all survive the round trip. If you need a different encoding (Windows-1252 for legacy Word imports, for example), convert the encoding in your text editor after download.
The converter runs entirely in your browser session, so the limit is your device's available memory rather than a server quota. Typical 1-hour lecture VTTs are 200–400 KB and process in well under a second; multi-hour transcripts of several megabytes still process locally without uploading anything. Batching multiple files works — process them all in one queue and download each result individually.
TXT is the universal lowest common denominator — every text editor, programming language, AI tool, and analysis package reads it without configuration. SRT keeps timing (useful if you want to re-time later), and DOCX adds Word formatting (useful for editorial workflows). Pick TXT when you want the raw transcript text and nothing else; convert to SRT first if a downstream tool expects timed captions.
No. The conversion runs as JavaScript inside the page, so the .vtt content and the resulting .txt never leave your browser. There is no account, no watermark, and no hidden Pro tier gating the file size or the dedupe / speaker-label / sound-tag filters.