.TXT.XML.JSON.SRT.VTT

YouTube Transcript to SRT Converter

Convert copied YouTube video transcripts, TimedText XML, or JSON captions into standard SubRip (SRT), WebVTT, and clean plain text in seconds.

100% In-Browser · Zero Upload
Zero latency · Client-side Web Worker
Supports timestamps like 0:05 or 01:23:45

Or drop a .txt, .xml (TimedText), or .json transcript file

Instant local parsing with zero server uploads

How to Convert YouTube Transcripts to SRT Subtitles

YouTube auto-generates remarkably accurate speech-to-text transcripts for most public videos. However, YouTube does not offer a direct one-click button to download those captions as a standard SubRip (.srt) file for use in video editing software such as Premiere Pro, DaVinci Resolve, or Final Cut Pro.

Step-by-Step Transcript Extraction

  1. Open the Transcript Panel in YouTube: Below the video player, click the description's ...More link, scroll down to the Transcript section, and click Show transcript.
  2. Highlight and Copy the Text: Click inside the transcript panel, press Ctrl+A (or drag to select the desired timestamps and sentences), and copy using Ctrl+C.
  3. Paste into SubPreflight: Paste the text into the box above and click Convert Transcript to SRT.
  4. Download Your Formatted Subtitles: Download the converted .srt file or switch tabs to grab clean .vtt or continuous plain text.

Automatic Duration Calculation

Raw copied transcripts from YouTube only list starting timestamps (such as 0:15). SubPreflight automatically computes the end time for each cue based on when the subsequent line begins, leaving a standard 50ms gap to prevent subtitle overlap errors in NLEs.

Frequently Asked Questions

How do I copy a transcript directly from YouTube?

On any YouTube video desktop page, click the "...More" button below the title, select "Show transcript", toggle the timestamp display if needed, highlight the lines, and press Ctrl+C (or Cmd+C) to copy.

Does this tool support both line-by-line and inline timestamp formats?

Yes. Whether your copied text has timestamps on separate lines (0:05 followed by dialogue) or on the same line (0:05 Dialogue), the engine automatically detects and parses them into standardized cues.

How are subtitle cue durations calculated when only start times exist?

The parser sets each cue end timestamp right before the next cue starts (with a 50ms broadcast buffer). If there is a long conversational pause, it bounds the duration using natural reading speed (15 characters per second).

Can I upload YouTube TimedText XML or JSON files?

Yes. You can drag and drop raw TimedText XML (from YouTube studio or network inspectors) or yt-dlp JSON files directly onto the workspace.

Are my transcripts or video links sent to any remote server?

No. SubPreflight parses all text and files 100% locally inside your browser memory using client-side execution. Zero data leaves your device.