yt-dlp + gallery-dl: When the DIY Combo Stops Scaling
If you have read the docs for either of these tools and felt a small surge of respect, that is the correct response. yt-dlp and gallery-dl are two of the most quietly impressive open-source projects on the web. Together they cover almost every social media platform, every video host, every image gallery worth archiving. They are free, well-maintained, and run anywhere. So why does this post exist? Because at some point, the combo stops scaling. The point of this post is to tell you honestly when, and to do that without pretending the underlying tools are anything other than excellent.
Short answer
The yt-dlp + gallery-dl combo is the right answer for most archiving needs. It stops scaling at around 100+ creators across 3+ platforms, when wrapper scripts start being a project of their own, or when you need a library to actually find what you have already saved. StreamStash sits on top of those tools (it uses them under the hood) and adds the workflow layer they intentionally don't ship: scheduled monitoring, cross-platform deduplication, a unified searchable library, and a UI. Not a replacement, a graduation point.
What the DIY Combo Actually Does Well
Let's start with the praise, because it is deserved.
yt-dlp is the descendant of youtube-dl. It is a video and audio extractor that supports an absurd number of platforms. Pick any video site, run yt-dlp <url>, and the file lands in your current directory in original quality. It has format selectors, post-processing, archive-file tracking, cookie support, rate limiting, and roughly fifteen years of compounding edge-case handling. The maintainers respond to platform changes within days. It is the single best general-purpose video downloader that exists.
gallery-dl covers the image and gallery side of the same problem. It has its own deep list of supported sites, a similar configuration model, and the same general philosophy: a command-line tool that does one thing well, with sensible defaults, with a config file you can extend.
The two tools are complementary, not competing. Most archiving workflows use both: gallery-dl for the image-heavy sites, yt-dlp for the video ones. Together they cover most of what anyone would want to archive from the public web.
For a single capture, on a single platform, run on demand, this is the optimal stack. It is free, it is offline-friendly, it does not phone home, it produces files you own. There is no honest comparison where a wrapper beats the underlying tool at its core job.
Where the Combo Is Fine
Specific scenarios where the DIY combo is the right answer and there is no reason to look further:
- Occasional captures. A handful of videos a week. A specific clip you saw and want to keep. Saving things you bookmarked once. The combo does this without ceremony.
- Single-platform use. If you are only archiving from YouTube, or only from Twitter, or only from one image board, the per-platform complexity stays manageable. The combo handles it.
- You are comfortable in a terminal. If
yt-dlp -f bestvideo+bestaudio --merge-output-format mp4reads as obvious to you, the friction of running these tools is zero. There is nothing for a wrapper to remove. - Fewer than around 50 creators tracked. The exact number depends on platform mix, but at this scale it is feasible to maintain a folder per creator, run a periodic
yt-dlpcommand, and not lose track of anything. - Long-tail sites. If most of what you archive is from sites the major wrappers don't natively support, the combo's sheer breadth is unmatched. Keep using it.
If your situation looks like that, you can stop reading. The DIY combo will keep working for you. The rest of this post is for the case where it has stopped.
The Breakpoint
The shape of "the combo stopped scaling" is recognisable. It usually arrives slowly, then all at once.
Common signals, in roughly the order they appear:
- You have started writing wrapper scripts. A bash file that loops over a list of URLs. A Python script that calls yt-dlp with the right flags per site. The wrapper grew arguments. The wrapper has its own bugs now.
- You have added cron. Now the scripts run on a schedule. Now the scripts fail silently when the schedule fires while you are asleep. Now you have a separate concern called "checking if the cron jobs are still working."
- Cookie management has drifted. One platform needs an updated cookie jar. The Firefox profile path moved. The cookies from your daily browser are in a different format from what the tool wants. The script breaks until you remember to fix it.
- You have downloaded the same clip three times. Same creator posted to Snapchat Spotlight, then to TikTok, then to Instagram Reels. Each platform is in its own folder. There is no automatic dedup across folders. The library is full of duplicates and you do not know which copy is the original.
- You cannot find anything. The library is several terabytes. You vaguely remember a clip from a creator from a year ago. The folder structure does not help. There is no search beyond
find. - You missed something live. Live recording is the use case the DIY combo is least built for. By the time you got the script running, the stream had ended.
If three or more of these are true, the combo has stopped being a tool and started being a side project. That is the breakpoint.
What Is Actually Missing
It is worth being specific about what a wrapper adds. Otherwise the conversation degenerates into "GUI vs CLI" tribalism, which is not the point.
The DIY combo is intentionally minimal. yt-dlp's job is to be a download utility. It is not the project's job to be a library, a scheduler, a deduplication system, or a player. The maintainers have correctly drawn the line at "do downloads well." The whole reason the tool stays maintainable is that it doesn't try to be anything more.
What that means in practice: every higher-order concern is your job. The specific concerns that come up in archival workflows:
- Cross-platform deduplication. Same clip on three platforms produces three files. Detecting that they are the same clip requires perceptual hashing, a database, and a comparison pass. None of which is in scope for yt-dlp.
- A library to browse. A folder full of MP4s with random filenames is not browsable. A library that knows the creator, posting timestamp, source platform, and engagement counts is browsable. That is metadata storage, search, and a UI.
- Scheduled monitoring with backoff. Polling every creator every 30 minutes will get your IP rate-limited fast. Adaptive cadence (poll active creators more often, dormant ones less often) needs activity classification per creator. Cron does not do this.
- Cookie management as a feature, not an exception. A wrapper can read your browser's cookie jar in the right format, refresh on demand, and surface "this account needs re-auth" before the next scheduled run silently fails.
- Live recording. Detecting when a creator goes live, starting the recording immediately, and stopping cleanly at the end is a different shape of problem from "given a URL, download the file."
- Storage as a first-class concern. A growing archive needs a way to see what is taking up space and selectively prune. Not every captured video is worth keeping forever.
None of these are reasons to stop using yt-dlp. They are reasons to put something between you and yt-dlp once your archive is past hobby scale.
The Honest Comparison
Some clarifying points so this is not read as a hit piece on tools the post explicitly respects:
- StreamStash is not faster at downloading than yt-dlp. The download speed is the engine's speed. yt-dlp is the engine. The arithmetic is the same.
- StreamStash is not better at extracting from individual platforms than the underlying tools. Where it uses yt-dlp or gallery-dl under the hood, the extraction quality is whatever those tools produce. Better extractors get adopted as upstream releases.
- StreamStash supports fewer platforms than the combo. Eight, specifically: TikTok, Instagram, Twitter/X, Telegram, Reddit, Snapchat, XenForo forums, and web album hosts. The DIY combo covers more sites. That is a feature of the DIY combo, not a bug.
- The wrapper is the value. The library, the scheduler, the dedup, the UI, the live recording, the storage management. Those are the parts the underlying tools intentionally don't do.
This is the same framing we used in the dedicated StreamStash vs yt-dlp comparison and the broader yt-dlp GUI alternatives survey. The tools are a layer. StreamStash is a layer on top. They coexist.
When to Keep Using the DIY Combo
To be explicit about who should not graduate:
- Power users on Linux who like their scripts. If you are happy maintaining your own setup, you are getting value from the maintenance, not enduring it. Stay where you are.
- Single-platform archivers. If you only care about one site, the per-platform tooling is enough.
- Small archives. If the total library would fit on a single hard drive and you are not adding much, the wrapper's overhead is not worth it.
- Long-tail site archivists. If most of what you archive is from sites a wrapper does not natively support, the wrapper would not help with the part you actually do.
- People who archive irregularly. The wrapper's value compounds with continuous monitoring. If you archive in occasional bursts, on-demand tools are the better fit.
The StreamStash Approach
StreamStash is a self-hosted desktop app for Windows that wraps the DIY tools into an archive workflow. It is one of the answers to "what does a wrapper around yt-dlp look like if you take the workflow problem seriously." Concretely:
- Eight platforms in one library. TikTok, Instagram, Twitter/X, Telegram, Reddit, Snapchat, XenForo forums, web album hosts. SQLite-backed, browseable, searchable.
- Scheduled monitoring per creator. Add a creator once, pick a check interval (or let Instagram's smart-schedule classifier pick one for you), let it run.
- Cross-platform perceptual-hash deduplication. Same clip on Snapchat, TikTok, and Instagram is recognised as one item.
- TikTok live recording. Auto-detect when a creator goes live, capture in original quality, hardware-accelerated compression with NVIDIA, Intel, and AMD GPU support.
- Engagement analytics on every tier. Top performers, engagement volume over time, posting-cadence heatmap, per-post history. Free tier covers TikTok and X analytics.
- Storage management. A dashboard showing library size, drive free space, growth chart, per-creator size rollup, and bulk-delete tools.
- Local AI semantic search on the Power tier, powered by a CLIP model running locally with optional GPU acceleration. Scales to large libraries without query lag.
None of that replaces yt-dlp at what yt-dlp does. It is what sits around the downloads.
For a deeper feature-by-feature side view there is the dedicated yt-dlp alternative with a dashboard walkthrough.
The Coexistence Path
The realistic path for someone moving from the DIY combo to a wrapper is not "uninstall yt-dlp." It is:
- Keep the existing archive in place. Don't migrate it. The files are fine where they are.
- Install the wrapper. Add the creators you actively follow as monitored feeds.
- Let the wrapper handle ongoing capture for those creators on the eight supported platforms.
- Keep using
yt-dlpdirectly for the long-tail sites the wrapper doesn't cover, and for the occasional one-off captures where opening a terminal is faster than opening an app.
That gets you the best of both: the DIY tools for the breadth and the long tail, the wrapper for the platforms that have moved past hobby scale.
Why the Graduation Matters
The case for archiving at all is the case made in the save a creator's content before they get banned hub: platform purges, bans, and self-deletes are permanent, and the only winning move is to archive in advance. That argument is independent of which tool you use. The point of this post is the second-order question: once the archiving habit takes hold and the library starts to matter to you, does your tooling actually scale with it? For most people the answer is "yes for the first hundred creators, then it stops." The graduation step is a wrapper. The wrapper does not change the answer to the first question, it just keeps you from drowning in the second.
FAQ
What's the difference between yt-dlp and gallery-dl?
yt-dlp is a video extractor descended from youtube-dl, focused on video and audio platforms. gallery-dl is an image and gallery extractor for sites that host photo sets and image-heavy content. They're complementary tools rather than competing ones, which is why the combo works: one handles the video sites, the other handles the image sites.
Does StreamStash use yt-dlp under the hood?
Yes. yt-dlp and gallery-dl are part of the underlying engine for several supported platforms. StreamStash isn't a competitor to those tools, it's a workflow layer on top of them: scheduled monitoring, deduplication, a unified library, and a UI for the parts that the command-line tools intentionally don't ship.
When should I actually graduate from the DIY combo?
Common breakpoints are around 100+ creators tracked across 3+ platforms, when wrapper scripts start to feel like a project of their own, when cookie management drift starts breaking your cron jobs, or when you realise you have downloaded the same clip three times because each platform is in its own folder. If those signals haven't hit yet, the DIY combo is still the right answer.
Is StreamStash faster at downloading than yt-dlp?
No. The download speed is the underlying engine's speed, which is the same. The point of a wrapper isn't faster downloads, it's everything around the downloads: scheduling, deduplication, library management, and the UI that lets you find the file again six months later.
What about long-tail sites StreamStash doesn't cover?
Keep using gallery-dl or yt-dlp directly for those. The combo is excellent for one-off captures on the long tail of sites the wrapper doesn't natively support. The two approaches coexist fine: StreamStash handles the eight platforms it covers as a managed library, and the DIY combo handles everything else as ad-hoc captures.
Can I keep my existing yt-dlp archive separate?
Yes. The two coexist on the same machine without interference. StreamStash maintains its own SQLite library and folder structure, so an existing yt-dlp archive in a different directory is unaffected. Most people who graduate run both for a while: new captures go through the wrapper, the old archive stays where it is.
Try the Wrapper
Free tier covers TikTok and Twitter/X end-to-end with no card needed. If the eight-platform library workflow makes sense, Personal (£20) and Power (£40) are one-time payments, not subscriptions. Keep your yt-dlp install where it is.
Get StreamStash · Free download