Windows 11/10  ·  SRT / WebVTT  ·  Auto & manual captions

Download YouTube Subtitles & Closed Captions with yt-dlp on Windows

Save subtitles as separate SRT/VTT files or embed them directly into MKV. Supports auto-generated captions, creator-provided subs, multiple languages and playlists.

⬇ Download yt-dlp.exe FFmpeg setup →

Auto-generated vs creator-provided subtitles

Two types of subtitles on YouTube — pick the right flag for each.

Auto-generated (machine captions)

YouTube's speech-to-text captions. Available on most videos. Use --write-auto-sub.

yt-dlp --write-auto-sub --sub-langs "en,*" --sub-format srt "URL"

en,* = English if available, otherwise any language

Manual (creator-provided)

Subtitles uploaded by the video creator. More accurate when available. Use --write-sub.

yt-dlp --write-sub --sub-langs en --sub-format srt "URL"

Only downloads if manual subs exist — falls back to nothing if not found

Tip: To get subs regardless of type, combine both flags: --write-sub --write-auto-sub — yt-dlp will prefer manual if available and fall back to auto.

yt-dlp subtitle download commands

Copy and paste into PowerShell. Replace URL with your video or playlist link.

Download video + subtitles as separate SRT files
yt-dlp --write-sub --write-auto-sub --sub-langs en --sub-format srt "URL"
Convert to SRT (YouTube natively provides WebVTT)
yt-dlp --write-sub --sub-langs en --sub-format srt --convert-subs srt "URL"
Embed subtitles into MKV (recommended)
yt-dlp -f "bv+ba/best" --write-sub --write-auto-sub --sub-langs en --embed-subs --merge-output-format mkv "URL"
Multiple languages at once
yt-dlp --write-sub --write-auto-sub --sub-langs "en,es,de,fr" --sub-format srt "URL"
Download all available subtitle languages
yt-dlp --write-sub --write-auto-sub --all-subs --sub-format srt "URL"
Playlist with subtitles — organised filenames
yt-dlp --write-sub --write-auto-sub --sub-langs "en.*" --yes-playlist -o "%(playlist)s/%(playlist_index)02d-%(title)s.%(ext)s" "PLAYLIST_URL"

Sub-lang patterns and format options

--sub-langs patterns

English only
--sub-langs en
English variants (en-GB, en-US etc.)
--sub-langs "en.*"
English preferred, any as fallback
--sub-langs "en,*"
Multiple specific languages
--sub-langs "en,es,de"

Format options

Prefer SRT format
--sub-format srt
Convert to SRT (needs FFmpeg)
--convert-subs srt
Keep WebVTT (native YouTube format)
--sub-format vtt
Embed into MKV (best for soft subs)
--embed-subs --merge-output-format mkv

Subtitles with yt-dlp — common questions

No subtitles found — what should I try?
First try --write-auto-sub — most YouTube videos have auto-generated captions. If you still get nothing, the video may not have subtitles at all. Try --all-subs to check all available languages. Some videos are audio-only or have captions disabled.
SRT or WebVTT — which should I use?
YouTube natively provides WebVTT. SRT is more universally supported by media players. Use --sub-format srt --convert-subs srt to get SRT. The conversion requires FFmpeg in the same folder as yt-dlp.exe.
Embedded subtitles don't show in my player
Make sure you use --merge-output-format mkv — MKV has the best subtitle track support. MP4 with embedded subs can be problematic in some players. Also check that your media player has subtitle display enabled.
Can I download subtitles only — without the video?
Yes. Add --skip-download to only download the subtitle files without saving the video: yt-dlp --write-sub --write-auto-sub --sub-langs en --skip-download "URL"
Can I hardcode subtitles into the video?
yt-dlp embeds subtitles as soft tracks (selectable in player). Hardcoding (burning subtitles into the image permanently) requires FFmpeg post-processing and is outside the scope of yt-dlp's built-in options.