Use yt-dlp to download and organize a YouTube playlist, and use FFmpeg when separate audio and video streams need merging. Point yt-dlp at a directory on your mounted SSD; keep a download archive there if you want later runs to skip videos already downloaded successfully. FFmpeg alone does not find or download playlist videos.
What you need before downloading
- A Raspberry Pi whose USB or other storage interface supports the SSD and its enclosure. Support depends on the exact Pi model; check that model’s storage and boot documentation before choosing a connection or assuming the SSD can boot the system.
- An SSD attached and mounted by Raspberry Pi OS, with a directory you can write to. The mount path varies by board, operating system, filesystem, and setup; do not assume the drive always appears at a particular path.
yt-dlpfor playlist extraction and downloading, andFFmpegfor merging separate audio and video formats when needed. Install both using the current instructions for your operating system; the appropriate command depends on the OS and installation method.- Enough free space for the videos you intend to keep. The size depends on the formats and duration of the playlist items, so check available formats and estimate storage rather than assuming every video has the same size.
Raspberry Pi’s OS boot-media recommendations are not estimates for a video library: its current documentation recommends at least 32 GB for Raspberry Pi OS desktop and Full, or 8 GB for Raspberry Pi OS Lite. Those figures concern OS boot media, not how much room playlist downloads need. The same documentation’s statement that SD cards above 2 TB are unsupported because of MBR limitations applies to SD cards, not external SSD capacity.
As an Amazon Associate I earn from qualifying purchases.
Prepare a reliable SSD destination
Confirm the drive is mounted and writable
In your desktop file manager or system’s storage tools, identify the SSD’s current mount location, then create a media directory on that drive. Use that directory’s actual path in the command below. Before scheduling a recurring download, verify that the SSD is mounted and writable at job start; a missing mount can otherwise cause a download to fail or write somewhere other than the intended drive.
Recommended Free Tools
Keep the archive on persistent storage
The archive file records identifiers for successfully downloaded videos. Store it on the SSD or another location that persists between runs, and use the same archive path each time. If you delete or replace the archive, yt-dlp loses that record and may download previously saved videos again.
#1 Best Overall
- Fully assembled for plug-and-play operation
- Includes Raspberry Pi 5 with 8GB RAM
- 256 GB PCIe Pi NVMe SSD (Pre-loaded with Pi 64-Bit OS)
- M.2 HAT+
- CanaKit Turbine Black Case for the Pi 5
Download the playlist and skip previously saved videos
Replace both example paths and PLAYLIST_URL with your own. This is a schematic command, not a tested Raspberry Pi-specific setup:
yt-dlp --download-archive "/path/on/ssd/archive.txt"
-P "/path/on/ssd/videos"
-o "%(playlist_index)03d - %(title)s [%(id)s].%(ext)s"
"PLAYLIST_URL"
What the options do
--download-archivetells yt-dlp to record downloaded video identifiers in the named file. On later runs with that same archive, it skips items already recorded; only successful downloads are added.-Psets the download destination. Make sure the path is on the mounted SSD, not a temporary or internal-storage directory.-osets an output filename template. This example prefixes each name with a zero-padded playlist position and includes the video title and identifier. The identifier helps distinguish videos with similar titles.- The quoted final argument is the playlist URL. Keep it quoted, especially if it contains shell-special characters such as
&.
The command leaves format choice to yt-dlp’s defaults. When YouTube provides audio and video as separate formats, yt-dlp needs FFmpeg available to merge them. A merge is not the same as transcoding: do not add conversion options unless you specifically need to change the media’s codec, resolution, or container. If you need a size or codec limit, inspect the formats available for the items and consult current yt-dlp format-selection documentation; playlist videos need not share the same properties.
Rank #2
- A Raspbery Pi SSD unlocks outstanding performance for I/O intensive applications on Raspbery Pi 5 and other devices, including super-fast startup when booting from SSD.
- It is a reliable, responsive, and high-performance PCIe Gen 3-compliant SSD capable of fast data transfer, available with 1TB capacity.
- [Speed] 90k IOPS (4kB random reads) / 90k IOPS (4kB random writes).
- [Features] Complies with PCIe Gen 3 standard. NVMe 1.4 register interface and command set.
- [Form Factor] M.2 2230.
Run it again or schedule downloads
To check for new playlist items, rerun the same command with the same archive file. yt-dlp can then skip identifiers already recorded and download items it has not recorded. This does not guarantee that every playlist item will be accessible: YouTube extraction behavior can change, and some media access may depend on cookies, headers, or matching network conditions.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →For a scheduled job, use the same command and persistent archive path, and make the job check that the SSD is mounted and writable before starting. Keeping a log makes failures easier to diagnose; arranging an error notification is useful if you need to know when a scheduled run fails. These are operational precautions, not a guarantee that a playlist will remain accessible or that every scheduled run will succeed.
Rank #3
- A Raspbery Pi SSD unlocks outstanding performance for I/O intensive applications on Raspbery Pi 5 and other devices, including super-fast startup when booting from SSD.
- It is a reliable, responsive, and high-performance PCIe Gen 3-compliant SSD capable of fast data transfer, available with 512GB capacity.
- [Speed] 50k IOPS (4kB random reads) / 90k IOPS (4kB random writes).
- [Features] Complies with PCIe Gen 3 standard. NVMe 1.4 register interface and command set.
- [Form Factor] M.2 2230.
Choose SSD storage for the Pi you actually have
There is no single SSD connection or capacity that can be recommended from the playlist title alone. Check your exact Raspberry Pi model and decide whether the SSD will hold only media or both the operating system and media. Raspberry Pi documentation describes storage options including SSDs, SSD kits, and M.2 HAT+ storage; which one fits depends on board support and your setup.
- Connection and power: Confirm the board, enclosure, cable, and SSD work together, including any power requirements.
- Capacity: Estimate the space needed from the playlist formats and how many videos you intend to retain, then leave room for future downloads.
- Mount behavior: Choose a destination that stays predictable across restarts, and make scheduled jobs verify it is available.
- Boot versus media: An SSD used for downloads does not have to be the boot drive. If you intend to boot from it, verify that your particular Pi supports the required boot method.
Copyright, access, and troubleshooting
Check rights and service terms
Do not assume that every YouTube playlist can be downloaded simply because it is visible. Confirm that you have the necessary rights or permission, and check applicable service terms and local law. Whether a particular download is permitted depends on the circumstances and jurisdiction; this guide does not make a legal determination.
Rank #4
- Compatibility: Pi 5 PCIe M.2 HAT only compatible with Raspberry Pi 5 2GB/4GB/8GB/16GB SBC (NOT include Raspberry Pi 5), NVMe base for Raspberry Pi 5, Model: X1001, the matching case is P579
- M2 Key-M NVMe SSD Supported: Support M.2 KEY-M NVMe SSD 2230/2242/2260/2280 length installation; Comes with SSD copper pillar for 2230/2242/2260 SSD installation
- User Manual and FAQ: Google Geekworm WiKi and search X1001 and its FAQ; Refer to the FAQ to do troubleshoot step by step if can't boot/recognize from NVMe SSD
- Designed as a basic PCIe expansion board for the Raspberry Pi 5, the X1001 features limited standalone hardware functionality and requires proper OS configuration, stable FFC cable connection, and compatibility between firmware and SSDs for reliable operation.
- Power Supply Requirements: The X1001 is powered directly through the PCIe FFC ribbon cable. For stable operation, use the Raspberry Pi 5 PD 27W USB-C Power Supply (5.1V/5A). Note: Standard phone chargers may not provide sufficient power for NVMe SSDs, which can result in SSD instability, data corruption or drive failure.
Common problems and fixes
| Symptom | Likely cause | What to check |
|---|---|---|
| The command cannot create files or reports a permission error. | The destination is not writable, or the SSD is not mounted where the command expects. | Confirm the current mount path and write access, then update -P and the archive path to locations on the mounted drive. |
| A later run downloads videos you already have. | The archive file was removed, replaced, or referenced at a different path. | Use the same persistent --download-archive file on every run. The archive records successful downloads. |
| Separate audio and video downloads do not merge. | FFmpeg may not be installed or available to yt-dlp. | Install FFmpeg using current instructions for your OS and confirm yt-dlp can invoke it. Merging separate formats requires FFmpeg. |
| A playlist item cannot be accessed or downloaded. | Access conditions may differ, or YouTube extraction behavior may have changed. | Check the current yt-dlp guidance and the specific error. Some cases may require cookies, headers, or matching network conditions; access is not guaranteed for every playlist. |
| A scheduled run fails or does not use the SSD. | The SSD may not be mounted or writable when the job starts. | Make mount availability and write access a precondition for the job, and inspect its log for the actual destination and error. |
Or let it run in the cloud
If your goal is not just to keep a copy on an SSD but to keep uploaded videos looping as a YouTube live stream, StreamNeo is a separate cloud option; it does not download playlists to your Pi or stream from a camera. Upload your recording or build a playlist, add your YouTube stream key, and go live. Nothing has to stay on at home. Your videos stream as uploaded, up to 4K 60fps, at one price per slot; StreamNeo automatically recovers if YouTube drops the stream. The first day is free with no card. Monthly: $9.99 per month. Start your free day with StreamNeo.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

