How to Add Subtitles to a YouTube Video (SRT or VTT)
A step-by-step walkthrough for uploading SRT or VTT captions to YouTube, plus what to do if YouTube rejects your file.
YouTube supports timed-text captions, and adding your own file gives you far more accurate subtitles than YouTube’s auto-generated ones, especially for technical terms, names, or non-English audio.
Uploading a caption file
- Open YouTube Studio and go to Content.
- Click the video you want to caption, then open the Subtitles tab.
- Click Add language if the language you’re captioning in isn’t listed yet.
- Under the language, click Add next to Subtitles, then Upload file.
- Choose With timing (not “Transcript only”: that option strips your timestamps and asks YouTube to re-sync them, which defeats the point of a pre-timed file).
- Select your
.srtor.vttfile and publish.
Why YouTube sometimes rejects the file
A few things reliably break the upload:
- Wrong timestamp format. SRT uses commas (
00:00:01,000), VTT uses periods (00:00:01.000). Mixing them up is the single most common cause of a rejected or garbled upload. - Missing the
WEBVTTheader. If you’re uploading a.vttfile, the very first line must beWEBVTT. Without it, YouTube treats the file as invalid. - Encoding issues. Non-UTF-8 files (common if the subtitles were exported from older software) can cause accented characters or non-Latin scripts to show up as garbled text.
- Overlapping cues. If two cues have overlapping time ranges, some platforms silently drop one of them.
SRT or VTT: does it matter for YouTube?
YouTube accepts both, so this mostly comes down to what you already have. If you’re starting from a transcript tool or an editing suite that exports SRT (the more common default), there’s no need to convert, just upload it as-is. If you already have VTT from a web-based workflow, that uploads fine too.
Where this matters more is if you’re also embedding the same captions on your own website using the HTML5 <video> element: browsers specifically expect VTT there, so you’d want both formats on hand. Converting between the two is purely mechanical (timestamp separator, header, cue numbering), so you don’t need to re-time anything by hand. Our SRT to VTT converter handles it instantly in your browser, with nothing uploaded to a server.