Blog / YouTube Caption Extractor With Timestamps
YouTube Caption Extractor With Timestamps: Getting SRT and VTT Files That Line Up
Published October 12, 2026 · 9 min read
Most caption advice stops at “download the SRT”. The part that actually costs people time comes after that: why a file with perfect text still lands out of sync in the editor, what 00:01:23,456 --> 00:01:25,902 is promising you, and how to shift a thousand cues by two seconds without opening a subtitle editor. This is the timestamp side of extraction — the cue format, the import, and the three kinds of drift with their fixes.
Why the timestamps are the valuable half
A plain-text transcript tells you what was said. A timed caption file also tells you when, and that turns the file into a tool:
- Cue-level search. Grep the SRT for a phrase, read the line above it, jump straight to that moment — on a two-hour conference talk this is the difference between ten seconds and an afternoon.
- Editor-ready subtitles. Nobody hand-types timings any more; you import the file and adjust.
- Clips and quotes. Start and end times are the in and out points for the short you want to cut.
- Citations. “At 14:32” is a verifiable reference; “somewhere in the middle” is not.
That’s why we’d pick SRT over TXT even for reading, and derive the text when we want it — the timings are the part you can’t reconstruct afterwards.
Anatomy of a cue: SRT vs VTT
Both formats are a list of cues. Here’s the same moment in each — the whole difference is punctuation and headers:
1
00:01:23,456 --> 00:01:25,902
So the first thing we had to solve was
the retry loop.
---
WEBVTT
00:01:23.456 --> 00:01:25.902
So the first thing we had to solve was
the retry loop.
The first block is SRT — index line, then the comma-millisecond range. The second is VTT — WEBVTT header, no index, dot-milliseconds.
- SRT — a mandatory incrementing index, milliseconds after a comma, no header. The SubRip format reference covers the dialect variations you’ll meet in the wild. Universally accepted by editors and players, which makes it the safe default.
- VTT — a required
WEBVTTheader, milliseconds after a dot, optional cue identifiers, and real styling/positioning extensions on top. It’s the W3C format designed for the HTML5 <track> element, so it’s what a web player wants. - TXT — the words with all of the above deleted. Great to read; useless for timing.
One subtlety that causes real bugs: neither format stores a frame rate. Cue times are wall-clock seconds from the start of the media, so a caption file made against a 25 fps master and dropped onto a 23.976 fps export will drift gradually — see drift below.
Extracting the timed file
Paste the video URL into YouTube Caption Downloader, take the track list, and choose SRT or VTT rather than TXT. Manual, auto-generated and translated tracks are all available in the timed formats; the tool is free with no signup and no install, and it works on Shorts and YouTube Music links too. If you want the process written out step by step, it’s in how to download captions from a YouTube video for free; the tool’s strengths and its two deliberate gaps are in our review.
For timed extraction specifically, three checks before you take the file to an editor:
- Track kind. An auto-generated track arrives with cue boundaries that follow the speech recogniser’s breathing, not the speaker’s. Manual tracks are punctuated and much better behaved in a lower third.
- Line count sanity. A 10-minute talk should yield several hundred cues. A handful means you got a partial or translated track — or that something failed silently.
- First and last timecode. The last cue should sit near the video’s duration. If it stops at 04:12 on a 40-minute video, you have a truncated file and should re-extract.
Getting it into an editor or player
- Premiere Pro / DaVinci Resolve / Final Cut: import the SRT as a subtitle/caption track, then convert to burned-in titles or render it as an open caption track. Resolve reads SRT under Audio > Import; Premiere puts it on a new captions track.
- CapCut and the short-form apps: all take SRT for auto-caption alignment, which is the fastest path from a long talk to subtitled vertical clips.
- Browser editors: no install and no upload of the source footage — our VideoEditorOnline review covers burning SRTs in from the browser.
- VLC / mpv / Plex: drop the SRT next to the media file with a matching name, or load it as a subtitle track.
- A website: use VTT and reference it from the HTML5 <track> element. Browsers want the .vtt extension and a served
text/vttcontent type; converting SRT→VTT takes one command with yt-dlp (--convert-subs vtt) or any subtitle converter.
Note that the video you cut and the captions you extracted both start at zero on their own timelines. If YouTube’s version has an intro, sponsor card or a channel bumper that your edit removed, that difference is the whole sync problem — which is the next section.
Three kinds of drift, and the fix for each
| Symptom | Cause | Fix |
|---|---|---|
| Out by the same amount from the first line to the last | Something added or removed at the very top (bumper, black frames) | Shift the whole file by a constant offset |
| Perfect at the start, worse as it goes | Cuts removed from the middle, or a frame-rate mismatch | Re-time against your edit (two sync points, or re-transcribe) |
| Right text, wrong length on screen | Auto-caption cues written for reading speed, not your pacing | Adjust cue durations, or split/merge cues in a subtitle editor |
Constant offset. The one-liner people reach for is ffmpeg’s input offset — test it on a short clip first, since it rewrites the timing lines rather than tagging them:
ffmpeg -itsoffset 2.5 -i in.srt out.srt
Or do it in a subtitle editor with an explicit “shift by” control: Aegisub and the open-source Subtitle Edit both shift all cues, and Subtitle Edit can point-sync a file against another. If you’d rather not install anything for a one-off shift, a few lines of Python over the timecode lines will do it — but keep a copy of the original extract.
Growing drift. A fixed offset can’t fix this one, because different parts of the file need different shifts. Two options: re-time against your edit at several sync points (Subtitle Edit’s point sync exists for exactly this), or accept the honest answer — captions extracted from the platform’s copy of a video are timed for that copy, and a heavily re-cut edit deserves captions re-made against the edit.
Frame-rate drift. If you conform 25 fps source to 23.976 fps, wall-clock timings stretch by about 4%. Long videos show it as a second or two of lag by the end. Conforming the media, not editing the subtitle file, is the clean fix.
Clip hunting with a timed transcript
The workflow we use most from this page, because it’s the one people don’t expect: download the SRT, open it in a plain text editor, and search for the phrase rather than the timestamp. Every hit shows you its own in-point on the line above, so a “find every moment where the guest mentions pricing” pass takes a couple of minutes and gives you a list of candidate clips with start and end times already written down. It’s also the fastest way to see a video’s structure without watching it — which cue repeats, where the energy is, what got said twice.
Pair it with the untimed version for reading: our guide to extracting subtitle text covers turning the same track into clean prose, and saving captions to a .txt covers converting an SRT you already have.
Keeping both versions
Extract the timed and untimed files in the same session — it costs ten seconds each and they answer different questions later. Name them as a pair with the video ID so nothing gets mixed across a project: kubecon-keynote-VIDEOID.srt and kubecon-keynote-VIDEOID.txt. If you only keep one, keep the SRT: text is derivable from timings, timings are not derivable from text. And if the file is going to burn into a video you’ll publish, remember that an automatic track full of mangled names is a public embarrassment — fix the words before you render, or upload a corrected manual track to your own video instead.
Frequently asked questions
How do I download YouTube captions with timestamps?
Choose SRT or VTT instead of TXT when you extract the track. Both keep every cue’s start and end time; TXT is the format that throws the timings away. The same caption track is available in all three, so you can download both versions in seconds with a caption extractor.
What is the difference between SRT and VTT timestamps?
SRT writes milliseconds after a comma, as 00:01:23,456, and numbers every cue. VTT writes them after a dot, as 00:01:23.456, starts with a WEBVTT header and allows optional cue identifiers plus styling markup. The cue timings mean the same thing; the punctuation and the surrounding syntax differ.
Why are my extracted captions out of sync in the editor?
Almost always because the footage you edited is not the same timeline the captions were written against. Cutting material out near the start shifts everything after it, and the drift grows across the video. Shift the whole file by a fixed offset if the cut is at the top, or re-time it against your edit if there are many cuts.
Do timestamps survive if I convert an SRT to plain text?
No — that is the point of the conversion. Keep the SRT alongside the TXT so you can always find where something was said, and treat the text file as a working copy rather than the original. The text-file guide has the exact find-and-replace patterns.
Related reading
YouTube Caption Downloader Review: Free SRT, VTT & TXT Downloads
What the extractor returns for each track type, and the two things it deliberately doesn't do.
Oct 9, 2026 · 7 min read Video ToolsVideoEditorOnline Review: A Free Browser Video Editor
Where a freshly extracted SRT gets burned into the cut — in the browser, without uploading footage.
Sep 16, 2026 · 8 min read Video ToolsHow to Extract Captions From a YouTube Video Online
The extraction itself: track inventories, manual vs auto vs translated, and what to do next.
Oct 12, 2026 · 8 min read