yt-dlpの使い方とよく使うコマンド・オプション一覧(Windows/Mac対応)

コマンドリファレンス

yt-dlp は、YouTube をはじめとする多数の動画サイトから動画や音声をダウンロードできるコマンドラインツールです。
youtube-dl をベースに改良されており、より多くのサイト対応・高速化・便利なオプションが追加されています。

この記事はよく使うコマンドの早見表用途別のオプション一覧から引けるようにまとめています。Windowsでの yt-dlp.exe の入手・配置、-F でのフォーマット確認と出力の読み方、エラー対処までは目次から該当箇所へ移動してください。

掲載しているコマンドと出力例は yt-dlp 2026.07.04 で実行して確認したものです。ターミナルで動くことが前提のツールなので、黒い画面に苦手意識がある方は 「ターミナルは怖くない」や、「Bash」で基本的な使い方を先に確認しておくとスムーズです。

  1. 構文(Syntax)
  2. よく使うコマンド早見表
  3. オプション一覧(用途別)
    1. フォーマット・画質を選ぶ
    2. 音声を取り出す
    3. 字幕を扱う
    4. 保存先とファイル名を決める
    5. プレイリスト・部分取得
    6. サムネイル・メタデータ
    7. ログイン・アクセス制限まわり
    8. 速度・エラー時の挙動
    9. 確認・デバッグ
    10. -t(--preset-alias)でまとめて指定する
  4. yt-dlp.exe をWindowsで使う
    1. 1. どのファイルをダウンロードするか
    2. 2. どこに置くか
    3. 3. ffmpegも一緒に用意する
    4. 4. exe版の更新
    5. yt-dlp.exe でよくあるつまずき
  5. その他の導入方法(winget・pip・Homebrew)
    1. Windows:wingetでインストール(Windows 11/10対応)
    2. Windows:Scoopでインストール
    3. macOS・Linux:pip(Pythonパッケージ)でインストール
    4. macOS・Linux:Homebrewでインストール
    5. macOS・Linux:バイナリ(単体ファイル)を使う
    6. YouTubeを扱うならJavaScriptランタイムも用意する
  6. 画質・フォーマットの確認と指定
    1. 1. -F で利用可能なフォーマットを確認する
    2. 出力の読み方(列の意味)
    3. 2. -f でIDを指定してダウンロードする
    4. 3. IDを固定せず条件で選ぶ(推奨)
    5. 角括弧フィルタ(条件で絞り込む)
    6. -S(--format-sort)で優先順位を細かく指定
    7. よくあるつまずき
  7. 音声・字幕・プレイリストの取得
    1. 音声のみをMP3などで保存
    2. 字幕を確認・埋め込む
    3. プレイリストを取得する
    4. サムネイル・説明文・メタデータも保存
  8. 保存先とファイル名の指定
  9. バージョン確認と更新
  10. エラー別の対処方法
    1. 「yt-dlp: command not found」と出る
    2. 「HTTP Error 403: Forbidden」が出て取得できない
    3. TVerなど特定サイトがダウンロードできなくなった
  11. 全オプションと対応サイトの調べ方
  12. よくある質問
    1. Q. yt-dlpとは何ですか?
    2. Q. yt-dlp.exe と yt-dlp に違いはありますか?
    3. Q. yt-dltとは?
    4. Q. yt-dlgとは何ですか?
    5. Q. 音声のみ(MP3など)をダウンロードするコマンドは?
    6. Q. プレイリストを一括ダウンロードするには?
  13. 関連コマンド
    1. yt-dlp と youtube-dl の違い(早見表)
  14. 備考
  15. 参考
  16. 関連記事

構文(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 形式。既定は5yt-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-mtimeyt-dlp --mtime "URL"

プレイリスト・部分取得

オプション用途記述例
-I, --playlist-items取得する項目を番号や範囲で指定(START:STOP:STEPyt-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-removeSponsorBlockの該当区間を削除するyt-dlp --sponsorblock-remove sponsor "URL"

ログイン・アクセス制限まわり

オプション用途記述例
--cookies-from-browserブラウザのCookieを読み込んでログイン状態を再現yt-dlp --cookies-from-browser chrome "URL"
--cookiesNetscape形式の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"
--proxyHTTP/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.exeWindows 8以降・64bit通常はこれ。公式も Windows 向けの推奨として案内している
yt-dlp_x86.exeWindows 8以降・32bit32bit環境向け。--impersonate 用の curl_cffi は含まれない
yt-dlp_arm64.exeWindows 10以降・ARM64Snapdragon搭載機など
yt-dlp_win.zipWindows 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を通す方法をおすすめします。アンインストールや更新のときに扱いやすく、管理者権限も不要です。

  1. C:\tools\yt-dlp\ のようなフォルダを作り、yt-dlp.exe を置く
  2. 同じフォルダに ffmpeg.exeffprobe.exe も置く(後述)
  3. 「システム環境変数の編集」→「環境変数」→ ユーザーの Path にそのフォルダを追加
  4. ターミナルを開き直して 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.exeffprobe.exeyt-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 ffmpegbrew 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程度までしかないことが多く、「そのまま落とすと画質が低い」原因はここにあります。
  • storyboardmhtml の行はサムネイル画像なので、動画として指定しても意味がありません。

一覧を見ずに「結局どれが選ばれるのか」だけ知りたい場合は、--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/fpstbr/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」が出て取得できない

配信側の仕様変更やアクセス制限が主な原因です。次の順で確認してください。

  1. まず最新版に更新する:yt-dlp -U または pip install -U yt-dlp
  2. ブラウザのCookieを渡してログイン状態を再現する:yt-dlp --cookies-from-browser chrome "URL"
  3. User-Agentを明示的に指定する:yt-dlp --add-headers "User-Agent:Mozilla/5.0" "URL"
  4. TLS指紋で弾かれている場合はブラウザを偽装する:yt-dlp --impersonate chrome "URL"

それでも解決しない場合は、配信サイト側で一時的にアクセス制限がかかっている可能性があるため、時間をおいて再試行してください。

TVerなど特定サイトがダウンロードできなくなった

代表的な原因は次のとおりです(複数が同時に絡むこともあります)。

  1. サイト側の仕様変更
    再生ページ構造やトークン取得手順が変わると、旧バージョンの yt-dlp は失敗します。まずは最新版へ更新してください。yt-dlp -U(配布形態によっては権限が必要)
  2. DRM(著作権保護)による暗号化
    作品や時期により Widevine などのDRM が用いられる場合があり、DRM付き配信はyt-dlpではダウンロードできません(技術的・法的に非対応)。
  3. ログイン・地域・年齢制限
    アカウント必須や日本国内限定(ジオブロック)のケースがあります。ブラウザCookieを渡すと解決することがあります。
    yt-dlp --cookies-from-browser chrome "URL"
  4. 広告スキームやセグメント取得方法の変更
    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.exeWindows向けに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-dlpyoutube-dl
開発状況活発(頻繁に更新)更新が緩やか
対応サイトの追従仕様変更に早く対応反映が遅れがち
ダウンロード速度並列処理などで高速標準的
拡張オプションフォーマット選択・字幕・SponsorBlock対応など豊富基本的な機能が中心
コマンド互換性youtube-dlのオプションをほぼ踏襲

迷ったら、活発にメンテナンスされているyt-dlpを選んでおけば安心です。youtube-dlから乗り換える場合も、多くのオプションがそのまま使えます。

備考

  • ダウンロード対象によっては利用規約に違反する可能性があるため、利用は自己責任で行う必要があります。
  • フォーマットID・オプション名は yt-dlp のバージョンによって変わることがあります。エラーが出た場合はまずバージョン更新を試してください。
  • --user-agent--referer など一部の古いオプションは --help に表示されなくなりましたが、指定自体は引き続き受け付けられます。新しく書くなら --add-headers を使うのが確実です。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント

  1. わきた より:

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