How to Clean YouTube Auto-Generated VTT Subtitles (The Right Way)
YouTube's auto-captions download as messy, duplicated rollup VTT files. Here's the simplest way to clean them into a readable transcript without losing timing.
How to Clean YouTube Auto-Generated VTT Subtitles (The Right Way)
If you have ever downloaded YouTube's auto-generated subtitles and opened the file expecting a clean transcript, you already know the problem. Instead of one cue per sentence, you get the same words repeated dozens of times in growing fragments. The sentence "Hello, you are very welcome to the show" might appear across twelve consecutive cues, each one a single word longer than the last.
This is by design, not a bug, and it makes the file almost unusable for any purpose beyond playback inside a YouTube video. If you want to read it, translate it, search it, edit it, or feed it into a transcription workflow, you need to clean it first.
This guide walks through what's actually going on, why standard find-and-replace doesn't fix it, and the fastest way to turn that mess into a clean, properly-timed VTT file.
Why YouTube's Auto-Captions Look Like That
YouTube's auto-captions are produced by a live speech recognizer. The output format is called rollup or scrolling captions, and it works like this:
The recognizer doesn't know how a sentence ends until it ends. So as you speak, it emits a new cue every time it gets one or two more words. Each cue contains everything heard so far, with the new words appended. When the sentence finally completes, the next cue starts over with the first word of the next sentence.
When played back in a video, this produces the smooth scrolling effect you see beneath a YouTube live stream. The video player only renders the latest cue, so the duplication is invisible. But when you download the file, you see every snapshot the recognizer produced, stacked end to end.
A short real-world example:
00:00:34.040 --> 00:00:34.320
Hello,
00:00:34.320 --> 00:00:34.440
Hello, you
00:00:34.440 --> 00:00:34.600
Hello, you are
00:00:34.600 --> 00:00:34.720
Hello, you are very
00:00:34.720 --> 00:00:34.920
Hello, you are very welcome
In a 30-minute video, this can mean thirty to fifty thousand cues for what would be a few hundred actual sentences.
Why Find-and-Replace Doesn't Work
The natural first instinct is to open the file in a text editor and try to remove duplicate lines. This fails for a fundamental reason: there are no duplicates. Every cue is technically different from the cue before it, because each one has one or two extra words on the end.
A regex-based approach gets you a little further but breaks on edge cases. Some rollup cues span two lines as the top line scrolls off the visible caption area. Some sentences span multiple rollup "commits" because they were too long to fit on a single rendered line. Some files have legitimate spaced repetition in the underlying dialogue that you don't want to collapse.
The only reliable approach is to detect cumulative prefix chains — sequences of cues where each one's text starts with the full text of the previous one — and collapse each chain into its longest, most complete form.
The Fastest Way: Use the Subtitle Rollup Cleaner
The Subtitle Rollup Cleaner is built specifically for this. Upload your VTT file, click one button, and download a cleaned version where each rollup chain has been collapsed into a single cue with accurate inherited timestamps.
The whole thing runs in your browser. The file never leaves your device.
Step 1: Get the VTT file out of YouTube
If you own the video, this is straightforward:
- Open YouTube Studio
- Go to Content, click the video, and open the Subtitles section
- Find the auto-generated track and select Download
- Choose VTT as the format
If you don't own the video but it's publicly available, the most reliable approach is yt-dlp:
yt-dlp --skip-download --write-auto-sub --sub-format vtt URL
This writes a VTT file in rollup format, exactly what the cleaner is designed to handle.
Step 2: Run it through the cleaner
Open the Subtitle Rollup Cleaner, click Choose File, and select your VTT. Click Clean Rollup. The tool reports how many cues it collapsed — typically a 90% or greater reduction — and offers the cleaned file for download.
A 50,000-cue file from a multi-hour stream usually processes in a few seconds.
Step 3: Save the result
Click the download link. You'll get a new file with .cleaned.vtt appended to the name, leaving your original untouched.
What the Cleaned File Looks Like
Taking the rollup example above and running it through the cleaner produces:
00:00:33.720 --> 00:00:36.240
Hello, you are very welcome to the show and happy summer.
One cue, one sentence, accurate start and end times pulled from the first and last rollup snapshots. This is now a normal VTT file. You can convert it to SRT, shift its timing, translate it, or feed it into any other subtitle workflow.
When You Might Want to Skip the Cleaner
There are two situations where you don't need this tool.
The captions weren't auto-generated. Captions a creator uploaded themselves are usually pop-on style — one complete cue at a time, no accumulation. The cleaner would simply pass them through unchanged.
You want a flat plain-text transcript, not a timed file. If you don't need timestamps at all, use the VTT to TXT Converter directly. It strips timestamps but won't collapse rollup duplication, so you'll still want to clean first if your source is auto-generated.
What About SRT Files With the Same Problem?
Rollup is overwhelmingly a WebVTT phenomenon, because the speech recognizers that produce it (YouTube's, Otter, Zoom, Teams, Google Meet, Web Speech API) all export VTT natively. If you have an SRT file that came from one of these sources, it was almost certainly converted from VTT — and you should clean the original VTT before converting.
If you only have the SRT, convert it back to VTT using the SRT to VTT Converter, clean it, then convert back if needed.
A Quick Comparison: Manual vs Cleaner
| Approach | Time for a 1-hour video | Accuracy | Risk |
|---|---|---|---|
| Manual deletion in a text editor | Hours | Variable | High — easy to miss chains |
| Find-and-replace with regex | 30 min if you're experienced | Mixed | Breaks on two-line cues |
| ChatGPT or an LLM | Variable | Poor at scale | Hallucinated cues, dropped timestamps |
| Subtitle Rollup Cleaner | Seconds | Deterministic | None |
Language models in particular struggle here. They have token limits that fail on long files, they routinely drop or merge cues incorrectly across thousands of timestamps, and they invent text when the input gets noisy. Rollup cleaning is exactly the kind of work where a small deterministic script outperforms a multi-billion-parameter model — and that's by design.
A Word on Accuracy
The cleaner uses two safeguards to avoid mistakes:
- Time-gap detection. Cues only chain together if they touch in time, with a gap of less than two seconds. If two cues are minutes apart, they won't be collapsed even if they happen to have overlapping text.
- Strict cumulative-prefix matching. A cue only continues a chain if the previous cue's full text is a prefix of its own. Loose similarity isn't enough.
This means that if your underlying dialogue genuinely contains repeated phrases — "No, no, no, you don't understand" said as a complete sentence, or a chorus in a music caption track — the cleaner preserves it. It's specifically designed to handle the rollup pattern and leave everything else alone.
Frequently Asked Questions
What does "rollup captions" mean?
Rollup is the official W3C term for captions that scroll one line at a time, with new text pushing existing text upward as it appears. It's how live captioning works on YouTube and most meeting platforms.
Why does my YouTube VTT file have the same sentence dozens of times?
Because YouTube's auto-captions are produced live, word by word. Each cue is a snapshot of what the speech recognizer has heard so far. The duplication is intentional for display but unusable as a transcript.
Can I clean a YouTube VTT file in Microsoft Word or a text editor?
Not effectively. The duplication is cumulative, not exact, so find-and-replace can't remove it. You need a tool that detects prefix chains. The Subtitle Rollup Cleaner does this in your browser.
Does cleaning lose any of the spoken content?
No. The cleaner keeps the longest, most complete version of each sentence and inherits the correct start and end timestamps. Nothing the speaker said is dropped.
Can the cleaner handle files from Zoom, Teams, Otter, or Google Meet?
Yes. All of these produce rollup-style VTT files using the same underlying pattern. The cleaner detects rollup by structure, not by source.
Do I need to convert my file to SRT first?
No, the opposite. The cleaner operates on VTT. If your file is already SRT, convert to VTT first using the SRT to VTT Converter, clean it, then convert back if you need SRT for your downstream use.
Is anything uploaded to a server?
No. The cleaner runs entirely in your browser. Your file never leaves your device, isn't logged anywhere, and isn't accessible to anyone else.
How big a file can I clean?
There's no hard limit. Files from multi-hour streams with tens of thousands of cues clean in a few seconds on a typical laptop. The only constraint is your device's memory.
Why doesn't the cleaner just produce a plain-text transcript?
Because timestamps matter for many use cases — translation, subtitle editing, video re-cutting, accessibility. The cleaner produces a clean VTT so you can keep working with timed cues. If you want plain text afterwards, run the cleaned file through the VTT to TXT Converter.
Does the cleaner work on auto-translated captions too?
Yes. If you've downloaded an auto-translated track from YouTube, it carries the same rollup structure as the original-language auto-captions. The cleaner handles it the same way.
Is the tool free?
Yes, fully. No account, no signup, no usage limits, no AdSense gating, no premium tier. It's a free browser-based tool, like everything else on Subtitles Edit.
Wrapping Up
YouTube auto-captions are a useful starting point for transcription, but only if you can get them into a clean, sentence-per-cue format. Manual approaches don't scale; LLMs don't handle the volume reliably. A purpose-built rollup cleaner does the job in seconds without sending your files anywhere or making you sign up for anything.
Try the Subtitle Rollup Cleaner on your next YouTube VTT and see the difference. From there, you can convert formats, adjust timing, split files for translation, or do anything else you'd do with a normal subtitle file.