twitch-dlp
Simple script for downloading twitch VODs from start during live broadcast.
Features
- Download live VODs from start (
--live-from-start
) - Watch channel status. If it becomes live, start downloading (
--retry-streams DELAY
) - Supports VOD links and channel links
- Similar to
yt-dlp
(youtube-dl
) syntax
Usage
Install Node.js v20 or newer.
npx twitch-dlp LINK
pnpm dlx twitch-dlp LINK
yarn dlx twitch-dlp LINK
Examples
npx twitch-dlp https://www.twitch.tv/xqc --live-from-start
npx twitch-dlp https://www.twitch.tv/videos/2022789761
npx twitch-dlp https://www.twitch.tv/xqc
npx twitch-dlp https://www.twitch.tv/xqc --retry-streams 60
npx twitch-dlp https://www.twitch.tv/xqc --retry-streams 60 --live-from-start
npx twitch-dlp https://www.twitch.tv/videos/2022789761 -F
npx twitch-dlp https://www.twitch.tv/videos/2022789761 -f 480p30
npx twitch-dlp https://www.twitch.tv/videos/2022789761 -o "%(title)s [%(id)s].%(ext)s"
npx twitch-dlp https://www.twitch.tv/videos/2022789761 -r 720k
Options
-h, --help Show this help message and exit
-f, --format FORMAT Select format to download
Available formats:
- best: best quality (default)
- FORMAT: select format by format_id
-F, --list-formats List available formats and exit
-o, --output OUTPUT Output filename template
Available template variables:
- %(title)s
- %(id)s
- %(ext)s
- %(description)s
- %(duration)s
- %(uploader)s
- %(uploader_id)s
- %(upload_date)s
- %(release_date)s
- %(view_count)s
--live-from-start Download live streams from the start
--retry-streams DELAY Retry fetching the list of available
streams until streams are found
while waiting DELAY second(s)
between each attempt.
-r, --limit-rate RATE Limit download rate to RATE
--keep-fragments Keep fragments after downloading
Formats example
For VODs
┌─────────┬──────────────┬────────┬────────┐
│ (index) │ format_id │ width │ height │
├─────────┼──────────────┼────────┼────────┤
│ 0 │ 'Source' │ '1920' │ '1080' │
│ 1 │ '720p60' │ '1280' │ '720' │
│ 2 │ '720p30' │ '1280' │ '720' │
│ 3 │ '480p30' │ '852' │ '480' │
│ 4 │ '360p30' │ '640' │ '360' │
│ 5 │ '160p30' │ '284' │ '160' │
│ 6 │ 'Audio_Only' │ null │ null │
└─────────┴──────────────┴────────┴────────┘
For live streams (streamlink)
Available streams: audio_only, 160p (worst), 360p, 480p, 720p, 720p60, 1080p60 (best)
Available streams: audio_only, 160p (worst), 360p, 480p, 720p, 720p60_alt, 720p60 (best)
Requires
- ffmpeg
- curl (if using
--limit-rate
option) - streamlink (if downloading by channel link without
--live-from-start
)