yt-dlp は、YouTube をはじめとする多数の動画サイトから動画や音声をダウンロードできるコマンドラインツールです。youtube-dl をベースに改良されており、より多くのサイト対応・高速化・便利なオプションが追加されています。
この記事はよく使うコマンドの早見表と用途別のオプション一覧から引けるようにまとめています。Windowsでの yt-dlp.exe の入手・配置、-F でのフォーマット確認と出力の読み方、エラー対処までは目次から該当箇所へ移動してください。
掲載しているコマンドと出力例は yt-dlp 2026.07.04 で実行して確認したものです。ターミナルで動くことが前提のツールなので、黒い画面に苦手意識がある方は 「ターミナルは怖くない」や、「Bash」で基本的な使い方を先に確認しておくとスムーズです。
構文(Syntax)
yt-dlp [オプション] <URL>
よく使うコマンド早見表
まずはこの表だけで、よく使う操作の大半をカバーできます。詳しい説明は各見出しを参照してください。
| 用途 | コマンド例 | 説明 |
|---|---|---|
| 通常ダウンロード | yt-dlp "URL" | そのサイトでの標準的な画質・形式で保存 |
| 最高画質で保存 | yt-dlp -f "bv*+ba/b" --remux-video mp4 "URL" | 映像・音声とも最良を選び、MP4に詰め替え |
| MP4で保存(簡単) | yt-dlp -t mp4 "URL" | MP4向けの設定をまとめて適用するプリセット |
| 1080pまでに制限 | yt-dlp -f "bv*[height<=?1080]+ba" --remux-video mp4 "URL" | 解像度の上限を指定してダウンロード |
| 720pまでに制限 | yt-dlp -f "bv*[height<=?720]+ba" --remux-video mp4 "URL" | 回線・容量が気になる場合に |
| フォーマットを確認 | yt-dlp -F "URL" | 利用できる画質・形式の一覧を表示 |
| MP3など音声のみ保存 | yt-dlp -x --audio-format mp3 "URL" | 映像を除いて音声だけ抽出 |
| 保存先・ファイル名を指定 | yt-dlp -P ./downloads -o "%(title)s.%(ext)s" "URL" | 保存フォルダとファイル名テンプレートを指定 |
| プレイリストを取得 | yt-dlp -o "%(playlist_index)s-%(title)s.%(ext)s" "PLAYLIST_URL" | 再生リストをまとめてダウンロード |
| バージョン確認・更新 | yt-dlp --version / yt-dlp -U | 導入方法によって更新コマンドが異なる(詳細は後述) |
フォーマット選択で使っている bv*+ba/b は「映像と音声を別々に取得して結合、無理なら一体型にフォールバック」という意味です。-f 22 のように固定のフォーマットIDを直接指定する書き方は動画によってIDが変わるため推奨しません。詳しくは後述の「画質・フォーマットの確認と指定」を参照してください。
オプション一覧(用途別)
やりたいことから逆引きできるよう、よく使うオプションを用途別にまとめました。ショートオプション(-f)とロングオプション(--format)は同じ働きをします。
フォーマット・画質を選ぶ
| オプション | 用途 | 記述例 |
|---|---|---|
-F, --list-formats | 利用できるフォーマットを一覧表示(ダウンロードはしない) | yt-dlp -F "URL" |
-f, --format | ダウンロードするフォーマットを選ぶ | yt-dlp -f "bv*+ba/b" "URL" |
-S, --format-sort | 候補のなかでの優先順位を指定する | yt-dlp -S "res,fps,codec:avc1" "URL" |
--merge-output-format | 映像と音声を結合するときのコンテナを指定 | yt-dlp --merge-output-format mp4 "URL" |
--remux-video | 再エンコードせずコンテナだけ詰め替える(高速) | yt-dlp --remux-video mp4 "URL" |
--recode-video | 再エンコードして形式を変換する(低速・画質劣化あり) | yt-dlp --recode-video mp4 "URL" |
-t, --preset-alias | 定番の設定をまとめて適用するプリセット | yt-dlp -t mp4 "URL" |
音声を取り出す
| オプション | 用途 | 記述例 |
|---|---|---|
-x, --extract-audio | 映像を捨てて音声のみを取り出す | yt-dlp -x "URL" |
--audio-format | 音声の保存形式を指定(mp3 / m4a / opus など) | yt-dlp -x --audio-format mp3 "URL" |
--audio-quality | 音質を指定。0(最高)〜10(最低)または 128K 形式。既定は5 | yt-dlp -x --audio-quality 0 "URL" |
字幕を扱う
| オプション | 用途 | 記述例 |
|---|---|---|
--list-subs | 利用できる字幕の言語を一覧表示 | yt-dlp --list-subs "URL" |
--write-subs | 字幕を別ファイルとして保存 | yt-dlp --write-subs --sub-langs ja "URL" |
--write-auto-subs | 自動生成字幕も保存対象にする | yt-dlp --write-auto-subs --sub-langs ja "URL" |
--sub-langs | 取得する字幕の言語を指定(all で全言語) | yt-dlp --write-subs --sub-langs ja,en "URL" |
--embed-subs | 字幕を動画ファイルに埋め込む | yt-dlp --write-subs --sub-langs ja --embed-subs "URL" |
保存先とファイル名を決める
| オプション | 用途 | 記述例 |
|---|---|---|
-o, --output | ファイル名をテンプレートで指定 | yt-dlp -o "%(title)s.%(ext)s" "URL" |
-P, --paths | 保存先ディレクトリを指定 | yt-dlp -P ./downloads "URL" |
--restrict-filenames | ファイル名をASCIIのみにし、空白と & を避ける | yt-dlp --restrict-filenames "URL" |
-w, --no-overwrites | 既存ファイルを上書きしない | yt-dlp -w "URL" |
--force-overwrites | 常に上書きする | yt-dlp --force-overwrites "URL" |
-c, --continue | 途中まで落ちたファイルを再開する(既定で有効) | yt-dlp -c "URL" |
--download-archive | 取得済みIDを記録し、次回以降スキップする | yt-dlp --download-archive archive.txt "URL" |
--mtime | ファイル更新日時を配信側の Last-Modified に合わせる(既定は --no-mtime) | yt-dlp --mtime "URL" |
プレイリスト・部分取得
| オプション | 用途 | 記述例 |
|---|---|---|
-I, --playlist-items | 取得する項目を番号や範囲で指定(START:STOP:STEP) | yt-dlp -I 1:5 "PLAYLIST_URL" |
--no-playlist | プレイリスト付きURLでも動画1本だけ取得 | yt-dlp --no-playlist "URL" |
--yes-playlist | 動画URLでもプレイリスト全体を取得 | yt-dlp --yes-playlist "URL" |
--max-downloads | 指定件数をダウンロードしたら打ち切る | yt-dlp --max-downloads 10 "PLAYLIST_URL" |
--download-sections | チャプター名や時間範囲を指定して部分取得(* は時間範囲) | yt-dlp --download-sections "*30-90" "URL" |
--split-chapters | チャプターごとにファイルを分割して保存 | yt-dlp --split-chapters "URL" |
サムネイル・メタデータ
| オプション | 用途 | 記述例 |
|---|---|---|
--embed-thumbnail | サムネイルを動画・音声ファイルに埋め込む | yt-dlp --embed-thumbnail "URL" |
--write-thumbnail | サムネイルを画像ファイルとして保存 | yt-dlp --write-thumbnail "URL" |
--embed-metadata | タイトルなどのメタデータを埋め込む | yt-dlp --embed-metadata "URL" |
--embed-chapters | チャプター情報を埋め込む | yt-dlp --embed-chapters "URL" |
--write-description | 説明文を .description ファイルに保存 | yt-dlp --write-description "URL" |
--write-info-json | 動画情報を .info.json に保存 | yt-dlp --write-info-json "URL" |
--sponsorblock-remove | SponsorBlockの該当区間を削除する | yt-dlp --sponsorblock-remove sponsor "URL" |
ログイン・アクセス制限まわり
| オプション | 用途 | 記述例 |
|---|---|---|
--cookies-from-browser | ブラウザのCookieを読み込んでログイン状態を再現 | yt-dlp --cookies-from-browser chrome "URL" |
--cookies | Netscape形式のCookieファイルを読み込む | yt-dlp --cookies cookies.txt "URL" |
-u / -p | ユーザー名・パスワードを指定 | yt-dlp -u USER -p PASS "URL" |
--add-headers | 任意のHTTPヘッダーを追加する | yt-dlp --add-headers "User-Agent:Mozilla/5.0" "URL" |
--impersonate | ブラウザのTLS指紋を偽装する(要 curl_cffi) | yt-dlp --impersonate chrome "URL" |
--proxy | HTTP/HTTPS/SOCKSプロキシ経由で接続 | yt-dlp --proxy socks5://127.0.0.1:1080 "URL" |
--js-runtimes | 使用するJavaScriptランタイムを追加指定 | yt-dlp --js-runtimes node "URL" |
速度・エラー時の挙動
| オプション | 用途 | 記述例 |
|---|---|---|
-N, --concurrent-fragments | 分割配信の断片を並列取得して高速化(既定1) | yt-dlp -N 4 "URL" |
-r, --limit-rate | ダウンロード速度の上限を指定 | yt-dlp -r 2M "URL" |
-R, --retries | リトライ回数(既定10、infinite も可) | yt-dlp -R infinite "URL" |
--fragment-retries | 断片単位のリトライ回数 | yt-dlp --fragment-retries 20 "URL" |
--sleep-interval | 各ダウンロードの前に待機してアクセスを抑える | yt-dlp --sleep-interval 10 "URL" |
-i, --ignore-errors | 一部が失敗しても中断せず続行する | yt-dlp -i "PLAYLIST_URL" |
確認・デバッグ
| オプション | 用途 | 記述例 |
|---|---|---|
-s, --simulate | 実際には保存せず、取得可否だけ確認する | yt-dlp -s "URL" |
-O, --print | 指定したフィールドだけを画面に出力する | yt-dlp -O "%(title)s" "URL" |
-j, --dump-json | 動画情報をJSONで出力する | yt-dlp -j "URL" |
-v, --verbose | 詳細なデバッグ情報を表示する | yt-dlp -v "URL" |
--version | バージョンを表示する | yt-dlp --version |
-U, --update | 更新を確認する(配布形態により挙動が異なる) | yt-dlp -U |
-t(--preset-alias)でまとめて指定する
-t は、よく使うオプションの組み合わせに名前を付けたプリセットです。長い -f や -S を覚えなくても、目的だけ指定すれば済みます。
| プリセット | 展開される内容 |
|---|---|
-t mp3 | -f 'ba[acodec^=mp3]/ba/b' -x --audio-format mp3 |
-t aac | -f 'ba[acodec^=aac]/ba[acodec^=mp4a.40.]/ba/b' -x --audio-format aac |
-t mp4 | --merge-output-format mp4 --remux-video mp4 -S vcodec:h264,lang,quality,res,fps,hdr:12,acodec:aac |
-t mkv | --merge-output-format mkv --remux-video mkv |
-t sleep | --sleep-subtitles 5 --sleep-requests 0.75 --sleep-interval 10 --max-sleep-interval 20 |
たとえば -t mp4 は「MP4コンテナに揃えつつ、H.264とAACを優先する」設定です。実行するとどのフォーマットが選ばれたかがログに出ます。
$ yt-dlp -t mp4 --simulate "URL"
[info] BigBuckBunny_124: Downloading 1 format(s): 2
-t sleep は連続アクセスを避けたいときのプリセットで、プレイリストをまとめて取得する場合に役立ちます。プリセットは複数指定でき、後から個別のオプションを足して上書きすることもできます。
yt-dlp.exe をWindowsで使う
Windowsでは、Pythonを入れなくても yt-dlp.exe というファイル1つで動かせます。ここでは入手から配置・起動・更新までをまとめます。
1. どのファイルをダウンロードするか
配布ページには似た名前のファイルが並んでいます。通常のWindows PCなら yt-dlp.exe を選べば問題ありません。
| ファイル名 | 対象 | 備考 |
|---|---|---|
yt-dlp.exe | Windows 8以降・64bit | 通常はこれ。公式も Windows 向けの推奨として案内している |
yt-dlp_x86.exe | Windows 8以降・32bit | 32bit環境向け。--impersonate 用の curl_cffi は含まれない |
yt-dlp_arm64.exe | Windows 10以降・ARM64 | Snapdragon搭載機など |
yt-dlp_win.zip | Windows 8以降・64bit | 展開して使う形式。-U による自動更新は使えない |
ダウンロードは GitHub の Releases ページから行います。PowerShellならコマンドでも取得できます。
# PowerShell でexeをダウンロード
Invoke-WebRequest https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe -OutFile yt-dlp.exe
# 実行テスト
.\yt-dlp.exe --version
2. どこに置くか
C:\Windows\System32 はOSが管理する領域なので、専用フォルダを作ってそこにPATHを通す方法をおすすめします。アンインストールや更新のときに扱いやすく、管理者権限も不要です。
C:\tools\yt-dlp\のようなフォルダを作り、yt-dlp.exeを置く- 同じフォルダに
ffmpeg.exeとffprobe.exeも置く(後述) - 「システム環境変数の編集」→「環境変数」→ ユーザーの
Pathにそのフォルダを追加 - ターミナルを開き直して
yt-dlp --versionが通れば完了
PATHを通さずに使う場合は、yt-dlp.exe を置いたフォルダで先頭に .\ を付けて実行します。PowerShellはカレントディレクトリのファイルを暗黙には実行しないため、この .\ が必要です。
# PowerShell(PATHを通していない場合)
.\yt-dlp.exe "URL"
# コマンドプロンプト(cmd)ではそのままでも動く
yt-dlp.exe "URL"
3. ffmpegも一緒に用意する
yt-dlp.exe 単体でもダウンロードはできますが、映像と音声の結合・MP4への詰め替え・音声のMP3変換には ffmpeg が必要です。ffmpeg.exe と ffprobe.exe を yt-dlp.exe と同じフォルダに置くだけで認識されます。
なお公式ドキュメントでは、必要なのは ffmpeg の実行ファイルであって、同名のPythonパッケージではないと明記されています。pip install ffmpeg では動きません。
4. exe版の更新
公式配布のexeは、-U で自分自身を書き換えて更新できます。これが使えるのは exe版・バイナリ版だけです。
yt-dlp.exe -U
ウイルス対策ソフトが書き換えをブロックすることがあります。その場合は新しい yt-dlp.exe をダウンロードして手動で置き換えてください。
yt-dlp.exe でよくあるつまずき
- 「’yt-dlp’ は、内部コマンドまたは外部コマンド…として認識されていません」
PATHが通っていないか、ターミナルを開き直していません。.\yt-dlp.exeで実行できるか確認してください。 - ダウンロードしたexeが警告される
SmartScreenやブラウザが未署名の実行ファイルを警告することがあります。必ず公式のGitHub Releasesから取得し、配布元が正しいことを確認してください。 - MP4にならない・音声が出ない
ffmpegが見つかっていません。ffmpeg.exeを同じフォルダに置いてください。 - ファイル名が文字化けする
--restrict-filenamesを付けるとASCIIのみのファイル名になり、扱いやすくなります。
その他の導入方法(winget・pip・Homebrew)
Windows:wingetでインストール(Windows 11/10対応)
winget install yt-dlp
Windows:Scoopでインストール
scoop install yt-dlp
scoop install ffmpeg # 音声変換や結合に必要
winget・Scoopいずれの方法でも、ffmpegも別途インストールが必要です。
macOS・Linux:pip(Pythonパッケージ)でインストール
Python 3.10以降が入っていれば利用できます。
# インストール
pip install -U yt-dlp
# インストール確認
yt-dlp --version
システムのPythonを汚したくない場合は、仮想環境を作ってその中に入れる方法が安全です。
python3 -m venv ~/.venv/yt-dlp
~/.venv/yt-dlp/bin/pip install -U yt-dlp
~/.venv/yt-dlp/bin/yt-dlp --version
macOS・Linux:Homebrewでインストール
brew install yt-dlp
macOS・Linux:バイナリ(単体ファイル)を使う
wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp
chmod a+rx yt-dlp
sudo mv yt-dlp /usr/local/bin/
いずれの方法でも、音声抽出や動画の結合にはffmpegが必要です(apt install ffmpeg や brew install ffmpeg などであわせて導入しておくと安心です)。手軽に始めたいならバイナリ版・exe版、普段からPythonを使うならpip版が便利です。
YouTubeを扱うならJavaScriptランタイムも用意する
現在のyt-dlpは、YouTubeを完全にサポートするためにJavaScriptランタイムを必要とします。未導入のままYouTubeを扱うと、次の警告が出ます。
WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is
enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to
your command/config. YouTube extraction without a JS runtime has been deprecated,
and some formats may be missing.
既定で使われるのは deno です。インストールしてPATHを通しておけば、yt-dlp側の設定は不要でこの警告は消えます。
# macOS / Linux
curl -fsSL https://deno.land/install.sh | sh
# Windows(winget)
winget install DenoLand.Deno
Node.jsやBunなど別のランタイムを使う場合は --js-runtimes node のように明示します。警告が出ていても取得自体はできることが多いため、すぐに困っていなければ後回しでも構いません。ただし公式には非推奨とされており、動画によっては一部のフォーマットが取得できなくなります。
画質・フォーマットの確認と指定
フォーマットIDは動画ごとに異なるため、まず一覧を確認してから指定するのが基本の流れです。
1. -F で利用可能なフォーマットを確認する
yt-dlp -F "URL"
実行すると次のような表が出ます(--list-formats も同じ動作です)。これは実際に archive.org の動画に対して実行した出力です。
$ yt-dlp -F "https://archive.org/details/BigBuckBunny_124"
[info] Available formats for BigBuckBunny_124:
ID EXT RESOLUTION | FILESIZE PROTO | VCODEC ACODEC MORE INFO
-----------------------------------------------------------------
0 ogv 533x300 | 44.76MiB https | unknown unknown derivative
1 mp4 640x360 | 59.01MiB https | unknown unknown derivative
2 avi 1280x720 | 316.85MiB https | unknown unknown derivative
YouTubeのように映像と音声が別々に配信されるサイトでは、列がさらに増えます。
ID EXT RESOLUTION FPS CH | FILESIZE TBR PROTO | VCODEC VBR ACODEC ABR ASR MORE INFO
--------------------------------------------------------------------------------------------------------
sb0 mhtml 320x180 0 | mhtml | images storyboard
139 m4a audio only 2 | 3.69MiB 49k https | audio only mp4a.40.5 49k 22k low, m4a_dash
140 m4a audio only 2 | 9.80MiB 129k https | audio only mp4a.40.2 129k 44k medium, m4a_dash
160 mp4 256x144 30 | 4.12MiB 55k https | avc1.4d400c 55k video only 144p, mp4_dash
18 mp4 640x360 30 2 | ≈ 27.21MiB 360k https | avc1.42001E mp4a.40.2 44k 360p
299 mp4 1920x1080 60 | 245.69MiB 3248k https | avc1.64002a 3248k video only 1080p60, mp4_dash
315 webm 3840x2160 60 | 1.27GiB 17174k https | vp9 17174k video only 2160p60, webm_dash
出力の読み方(列の意味)
| 列 | 意味 |
|---|---|
ID | -f に渡すフォーマットID。動画ごとに異なる |
EXT | 拡張子・コンテナ形式(mp4 / webm / m4a など) |
RESOLUTION | 解像度。audio only なら音声だけのフォーマット |
FPS | フレームレート |
CH | 音声のチャンネル数 |
FILESIZE | ファイルサイズ。≈ が付くものは推定値 |
TBR | 全体のビットレート(kbps)。大きいほど高品質・大容量 |
PROTO | 取得に使う通信方式(https / m3u8 など) |
VCODEC | 映像コーデック。audio only は音声のみ、images はサムネイル用 |
VBR | 映像のビットレート |
ACODEC | 音声コーデック。video only は映像のみで音が入っていない |
ABR / ASR | 音声のビットレート / サンプリングレート |
MORE INFO | 品質ラベルや storyboard などの補足 |
ここで押さえておきたいのは次の3点です。
video onlyの行を単体で指定すると、音のない動画になります。音声フォーマットと+で結合してください(例:-f "299+140")。- 高解像度(1080p以上)はたいてい
video onlyです。18のような映像・音声一体型は360p程度までしかないことが多く、「そのまま落とすと画質が低い」原因はここにあります。 storyboardやmhtmlの行はサムネイル画像なので、動画として指定しても意味がありません。
一覧を見ずに「結局どれが選ばれるのか」だけ知りたい場合は、--print で確認できます。
$ yt-dlp -f "bv*+ba/b" --print "%(format_id)s %(ext)s %(resolution)s" "URL"
2 avi 1280x720
2. -f でIDを指定してダウンロードする
# 例:映像137 + 音声140 を結合
yt-dlp -f "137+140" "URL"
注意:
-Fで見えたフォーマットIDは動画・配信サイトごとに変わります。「22」のように特定のIDが常に使えるわけではなく、動画によっては存在しない場合もあります。IDを直接指定するときは、必ずその動画の-F結果を確認してください。
存在しないIDを指定すると、次のエラーになります。
ERROR: [archive.org] BigBuckBunny_124: Requested format is not available.
Use --list-formats for a list of available formats
3. IDを固定せず条件で選ぶ(推奨)
毎回IDを調べるのが手間な場合は、「最良の映像+最良の音声」のような選択子で指定すれば、動画が変わってもそのまま使い回せます。
# 最高画質 分離ストリーム優先 → まとめて1ファイルに
yt-dlp -f "bv*+ba/b" --remux-video mp4 "URL"
# 1080p上限
yt-dlp -f "bv*[height<=?1080]+ba/b[height<=?1080]" --remux-video mp4 "URL"
# 720p上限
yt-dlp -f "bv*[height<=?720]+ba/b[height<=?720]" --remux-video mp4 "URL"
# H.264優先(古い再生環境向け)
yt-dlp -f "bv*[vcodec~=^avc1][height<=?1080]+ba[acodec~=^mp4a]/b[ext=mp4][height<=?1080]" --remux-video mp4 "URL"
# 音声のみ m4a
yt-dlp -f "bestaudio[ext=m4a]/bestaudio" -x --audio-format m4a "URL"
bv/bestvideo(映像のみ最良)、ba/bestaudio(音声のみ最良)、b/best(映像+音声一体型の最良)といったショートハンドが用意されています。+ で複数フォーマットを結合、/ は「無ければ次を試す」フォールバックです。画質を変換する場合には ffmpeg が必要になるので、あらかじめインストールしておいてください。
角括弧フィルタ(条件で絞り込む)
選択子の末尾に [key OP value] を重ねて、条件で絞り込みます(複数可)。
- よく使うキー:
ext(拡張子)、vcodec/acodec(コーデック)、height/width/fps、tbr/vbr/abr(ビットレート)、filesize - 演算子:
=、!=、<、<=、>、>=。文字列向けに^=(前方一致)$=(後方一致)*=(部分一致)~=(正規表現) - 安全比較:比較記号の直後に
?を付けると、値が不明な場合も「合格扱い」になります。例:[height<=?1080]
-S(--format-sort)で優先順位を細かく指定
-f は「どのグループから選ぶか」、-S は「その中でどれを優先するか」の指定に向いています。
# 解像度 → fps → H.264優先 → ビットレートの順で最良を選ぶ
yt-dlp -S "res,fps,codec:avc1,tbr" -f "bestvideo+bestaudio/best" --remux-video mp4 "URL"
よくあるつまずき
- 結合にffmpegが必要:
sudo apt install -y ffmpeg - 条件が厳しすぎてヒットゼロ:
[height<=1080]→<=?1080のように安全比較を使う - MP4が出てこない:
--remux-video mp4(詰め替え)か、無理なら--recode-video mp4(再エンコード) - 固定フォーマットIDが「Requested format is not available」になる:そのIDが今回の動画には存在しない可能性が高いので
-Fで再確認する
音声・字幕・プレイリストの取得
音声のみをMP3などで保存
yt-dlp -x --audio-format mp3 "URL"
-x(--extract-audio)で音声のみ抽出し、--audio-format で形式を指定します。変換にはffmpegが必要です。プリセットを使って yt-dlp -t mp3 "URL" と書くこともできます。取り出した音声から文字起こしまで行いたい場合は whisper と組み合わせると便利です。
字幕を確認・埋め込む
# 利用可能な字幕言語を確認
yt-dlp --list-subs "URL"
# 日本語字幕を埋め込んでダウンロード
yt-dlp --write-subs --sub-langs ja --embed-subs "URL"
# 自動生成字幕を含む全言語の字幕を埋め込む
yt-dlp --write-auto-subs --write-subs --sub-langs all --embed-subs "URL"
プレイリストを取得する
# プレイリストをまとめて(連番付きで保存)
yt-dlp -o "%(playlist_index)s-%(title)s.%(ext)s" "PLAYLIST_URL"
# プレイリストの特定アイテムだけ取得(1, 3, 5番目)
yt-dlp --playlist-items 1,3,5 "PLAYLIST_URL"
# 1〜5番目をまとめて取得(範囲指定)
yt-dlp -I 1:5 "PLAYLIST_URL"
件数が多いときは -i(失敗しても続行)と --download-archive(取得済みを記録)を併用すると、途中で止まっても再実行しやすくなります。
サムネイル・説明文・メタデータも保存
yt-dlp --embed-thumbnail --write-description --write-info-json "URL"
保存先とファイル名の指定
| オプション | 説明 | 使用例 |
|---|---|---|
-o TEMPLATE | 保存ファイル名を指定 | yt-dlp -o "%(title)s.%(ext)s" "URL" |
-P PATH | 保存先ディレクトリを指定 | yt-dlp -P ./downloads "URL" |
--download-archive FILE | ダウンロード済みを記録して重複防止 | yt-dlp --download-archive archive.txt "URL" |
-o のテンプレートには %(title)s(タイトル)や %(ext)s(拡張子)、プレイリストなら %(playlist_index)s(再生順)などが使えます。--download-archive は、一度ダウンロードした動画のIDをファイルに記録し、次回以降スキップするためのオプションです。
バージョン確認と更新
yt-dlpはサイト側の仕様変更に追従するため頻繁に更新されます。ダウンロードに失敗する場合は、まずバージョンを確認して最新化してください。
$ yt-dlp --version
2026.07.04
更新コマンドは導入方法によって異なります。
| 導入方法 | 更新コマンド |
|---|---|
| 公式バイナリ/exe版 | yt-dlp -U |
| pip(Pythonパッケージ) | python -m pip install -U yt-dlp |
| winget(Windows) | winget upgrade yt-dlp |
| Scoop(Windows) | scoop update yt-dlp |
| Homebrew(macOS/Linux) | brew upgrade yt-dlp |
注意:
-U(--update)が実際にファイルを書き換えて更新できるのは公式配布のバイナリ/exe版だけです。pip版で実行すると「You installed yt-dlp with pip or using the wheel from PyPi; Use that to update」と案内され、更新は行われません。winget・Scoop・Homebrewの場合も、そのパッケージマネージャの更新コマンドを使ってください。
エラー別の対処方法
「yt-dlp: command not found」と出る
主な原因はPATHが通っていないことです。バイナリ版を使っている場合は、配置したディレクトリが PATH に含まれているか確認してください。
# どこに配置したか確認
which yt-dlp
# pip版が見つからない場合はユーザーローカルのbinを確認
python3 -m pip show yt-dlp
echo $PATH
pip でインストールしたのに実行できない場合は、pip install --user -U yt-dlp でインストールされた場所(~/.local/bin など)が PATH に含まれているかを確認しましょう。Windowsで 'yt-dlp' は、内部コマンドまたは外部コマンド… と出る場合は、前述の「yt-dlp.exe をWindowsで使う」を参照してください。
「HTTP Error 403: Forbidden」が出て取得できない
配信側の仕様変更やアクセス制限が主な原因です。次の順で確認してください。
- まず最新版に更新する:
yt-dlp -Uまたはpip install -U yt-dlp - ブラウザのCookieを渡してログイン状態を再現する:
yt-dlp --cookies-from-browser chrome "URL" - User-Agentを明示的に指定する:
yt-dlp --add-headers "User-Agent:Mozilla/5.0" "URL" - TLS指紋で弾かれている場合はブラウザを偽装する:
yt-dlp --impersonate chrome "URL"
それでも解決しない場合は、配信サイト側で一時的にアクセス制限がかかっている可能性があるため、時間をおいて再試行してください。
TVerなど特定サイトがダウンロードできなくなった
代表的な原因は次のとおりです(複数が同時に絡むこともあります)。
- サイト側の仕様変更
再生ページ構造やトークン取得手順が変わると、旧バージョンのyt-dlpは失敗します。まずは最新版へ更新してください。yt-dlp -U(配布形態によっては権限が必要) - DRM(著作権保護)による暗号化
作品や時期により Widevine などのDRM が用いられる場合があり、DRM付き配信はyt-dlpではダウンロードできません(技術的・法的に非対応)。 - ログイン・地域・年齢制限
アカウント必須や日本国内限定(ジオブロック)のケースがあります。ブラウザCookieを渡すと解決することがあります。yt-dlp --cookies-from-browser chrome "URL" - 広告スキームやセグメント取得方法の変更
HLS(M3U8)の取得手順や署名付きURLの挙動が変わると失敗します。バージョン更新・時間を置いた再試行が必要になることがあります。
注意:配信サービスの利用規約・著作権法に必ず従ってください。視聴目的の範囲を超える保存やDRM回避は法律・規約に抵触する可能性があります。
全オプションと対応サイトの調べ方
ここまでで紹介しきれていないオプションも多数あります。全一覧はヘルプコマンドか公式ドキュメントで確認してください。
# 全オプション一覧をターミナルで確認
yt-dlp --help
# 実際にダウンロードせず、取得可否だけ確認
yt-dlp -s "URL"
yt-dlp --help の出力は900行近くあるため、grep で目的のオプションを探すと早いです。
yt-dlp --help | grep -- "--sub"
対応サイトの正式な一覧は、公式の supportedsites.md にまとまっています(数千サイト対応)。YouTube・Vimeo・SoundCloud・Twitch・X(旧Twitter)・Instagram・Facebook・TikTok・Bilibili・ニコニコ動画など、メジャーどころは広く対応していますが、対応リストを探すより実際にコマンドを打つ方が確実です。
注意:DRM付き配信や海賊版サイトは非対応だったり、利用規約に反するダウンロードは違法になる場合があります。合法かつ規約に従って使ってください。最近は「海賊版用途が主」と判断されたサイトがサポート外と明言されるケースもあります。 The FreeBSD Forums
よくある質問
Q. yt-dlpとは何ですか?
yt-dlp は、動画配信サイトからのダウンロードやメタデータ抽出を行うコマンドラインツールです。元祖の youtube-dl をフォークしており、対応サイトの多さ・更新の速さ・高度なオプション(字幕・サムネ・チャプター・プレイリスト一括取得、リマックス/再エンコード制御 など)が特徴です。
Q. yt-dlp.exe と yt-dlp に違いはありますか?
中身は同じツールで、yt-dlp.exe はWindows向けにPythonごと1ファイルにまとめた実行ファイルです。Pythonのインストールが不要で、置くだけで使えます。コマンドやオプションはpip版とまったく同じなので、この記事の内容はそのまま yt-dlp.exe でも使えます。
Q. yt-dltとは?
yt-dlt はしばしば見かける誤記です。正式名称は yt-dlp。関連用語として、フォーク元の youtube-dl(更新が緩やか)や、GUIフロントエンドの yt-dlg(後述)があります。
Q. yt-dlgとは何ですか?
yt-dlg(「YouTube-DL GUI」)は、yt-dlp/youtube-dl をボタン操作で使えるGUIフロントエンドです。ダウンロード先のテンプレート、画質や字幕の選択、キュー管理などを画面から設定できます。「コマンドは苦手だがyt-dlpの機能を使いたい」という場合に役立ちます。
Q. 音声のみ(MP3など)をダウンロードするコマンドは?
yt-dlp -x --audio-format mp3 "URL" を実行してください。映像を除外して音声のみを抽出・変換できます(※変換にはffmpegが必要です)。
Q. プレイリストを一括ダウンロードするには?
動画のURLの代わりにプレイリストのURLを指定するだけで、デフォルトで一括ダウンロードが始まります。-o "%(playlist_index)s-%(title)s.%(ext)s" などを付けると連番付きで保存されて便利です。
関連コマンド
youtube-dl: 元になったツール(開発停滞中)。ffmpeg: 動画や音声の変換で併用されることが多い。yt-dlpの結合・変換処理はffmpegに依存している。whisper: yt-dlpで抽出した音声から文字起こしを行うCLI。
yt-dlp と youtube-dl の違い(早見表)
| 項目 | yt-dlp | youtube-dl |
|---|---|---|
| 開発状況 | 活発(頻繁に更新) | 更新が緩やか |
| 対応サイトの追従 | 仕様変更に早く対応 | 反映が遅れがち |
| ダウンロード速度 | 並列処理などで高速 | 標準的 |
| 拡張オプション | フォーマット選択・字幕・SponsorBlock対応など豊富 | 基本的な機能が中心 |
| コマンド互換性 | youtube-dlのオプションをほぼ踏襲 | – |
迷ったら、活発にメンテナンスされているyt-dlpを選んでおけば安心です。youtube-dlから乗り換える場合も、多くのオプションがそのまま使えます。
備考
- ダウンロード対象によっては利用規約に違反する可能性があるため、利用は自己責任で行う必要があります。
- フォーマットID・オプション名は yt-dlp のバージョンによって変わることがあります。エラーが出た場合はまずバージョン更新を試してください。
--user-agentや--refererなど一部の古いオプションは--helpに表示されなくなりましたが、指定自体は引き続き受け付けられます。新しく書くなら--add-headersを使うのが確実です。
参考
- GitHub: https://github.com/yt-dlp/yt-dlp
- ドキュメント: https://github.com/yt-dlp/yt-dlp#usage
- JavaScriptランタイムについて: yt-dlp Wiki – EJS

コメント
判りやすい解説、ありがとうございます。
windows環境なら、yt-dlp & ffmpeg ともに、msys2 でも利用可能です。
ビルド環境違いで、mingw64, ucrt64, clang64, clangarm64 の、4つのバージョンがあります(私は ucrt派です)
msys2 の bash で yt-dlp、便利で快適です。