Download your favourite YouTube videos
criminallyvulgar.devArchiving is a given in today's tech ecosystem, I personally use Youtarr (https://github.com/DialmasterOrg/Youtarr) to archive all my playlists and some channels I really want to save.
Most of my YouTube playlists say something like "15 unavailable videos are hidden", or about ~10% for a 5 years old playlist. The same ratio holds true for most bookmarks of YouTube videos I have.
There's videos from ~15 years ago that I consider gone for good - lost to the great copyright apocalypse - having been unable to find them anywhere on the today's internet.
Scrape, my friend.
I saw a similar thing some years back: playlists I had created began to be missing videos.
Been scraping ever since…
The problem is that people don't have 100TB of spare storage to hoard everything they want local. It's obvious that you should be hoarding them all.
I don't download YouTube videos, but my grandmother's cousin does. I'm trying to get her to stop. Anyway, she has a strategy of downloading the 720p version of videos if the content is something that doesn't merit the full 4K resolution. Typical cases would be commentary consisting of mostly someone talking, comedy, or old TV shows.
> I'm trying to get her to stop.
...what? Why? Do you feel the videos she likes should be allowed to just vanish into the mists of time? To me that sounds like saying 'my sister takes pictures at her daughters' birthdays and I'm trying to get her to stop'.
>> I'm trying to get her to stop.
> ...what? Why? Do you feel the videos she likes should be allowed to just vanish into the mists of time? To me that sounds like saying 'my sister takes pictures at her daughters' birthdays and I'm trying to get her to stop'.
Anything, even good things, can be done to excess.
r/datahoarders would like to have a word with you.
I've had luck going to my liked videos, hitting the 3 dots under "Liked videos", selecting "Show unavailable videos", and copying the video watch?= ID into google. If the video is popular enough its text should pop up in a forum somewhere with some discussion at least where you'll find the right clues. Example: 9_1Qn370IIY
internet archive also has a decent portion of old popular videos
Same experience. I have years of notes and many link to specific youtube video sources (with time stamp). Unfortunately those URLs don't even give a title of a video, so tracking down removed videos can be hard. However, I've had some luck using LLMs! (obviously only when I can remember the context of a quote or some details about the video, even if vague). Once you know the video title it can often be found on unofficial youtube mirror sites.
Tidal playlist are so as well. Maddening. Ruins the joy of listening, among several other things. I am quitting this stream on demand crap.
YouTube has among the worst linkrot. Stuff gets deleted , hidden, or channels deleted for even the tiniest of supposed violations or reasons.
Same for downloading content. Over 15+ years, there have been so many tools that purport to download YouTube videos and they either don't work or get patched or full of bugs or malware. It's surprisingly hard to do, especially at any scale. more of an art than science. understandably, YouTube does not want people just downloading their content easily without paying for premium.
Any luck with the wayback machine?
Downloading your favourite stuff is absolutely what you should do, but it doesn't solve the bigger problem.
Many from my generation, who grew up during an era of information scarcity, have huge stashes of hoarded data. But what can we do with it? There is no way to legally share it, so we take it with us in our graves.
EDIT: Many good comments, but they all suffer from one blind spot, so I answer here instead of individually.
A lot of content is only legal because it is on YouTube (or any other platform that has deals with the content industry). Sure, we can share illegally in a way that is obscure enough that no one gets sued. But what help is that, eventually it will get either popular and sued out of existence or forgotten and fade.
Then there is old content that is not legally shareable at all, like old game ROMs. Plenty of millennial stuff there but the Gen-X world is already half forgotten.
Cooyright is just too long and too unreliable. What we need at least is exemptions from Copyright for archivists, otherwise a lot of stuff will simply be lost in the coming decades.
Seed it. That is how you share it.
... and risk getting expensive nastygrams from lawyers? Oh hell no
Just use a seedbox or vpn.
I suppose you can distribute YouTube videos the same you distribute Linux ISOs. Something like IPFS (RIP(?)) would work even better for random videos than it ever did for Linux ISOs.
Put it on the Internet Archive and let the future discover it.
IA accepts and follows takedown requests from almost anybody about almost anything.
Certainly, but many don't bother to check, let alone file for removal.
I went down an IA hole a month or so ago, and discovered someone uploading random Jaz + Zip drives images, that appeared to be backups from random businesses and people in the late 1990s There were diary entries, letters to a lawyer about divorce, business accounting data, invoices, and period-era porn, that if i were to guess, was organized to be offered on BBSes. tl;dr: encrypt that data at rest, you never know where it will end up.
I have mixed feelings about that stuff (which I've seen there too). There's historic value in it and I think it should be preserved. It also feels a bit icky and wrong for it to be publicly available so soon after its creation.
honestly, for stuff that old i kinda like the idea of seeding it anyway... i know that is a naïve PoV in the modern era, but i kinda miss the days of the internet being innocent enough that you got a real slice of someone's life sometimes.
> ytdl-sub
> This is the only yt-dlp wrapper that allowed me to properly maintain the Playlist structure to any extent
I have the same requirement and it's possible to do it with the default yt-dlp:
yt-dlp --embed-metadata --parse-metadata "playlist_index:%(track_number)s" "PLAYLIST_URL"
I agree with the sentiment (and have several TB of archived Youtube videos) but I can't help but think "Keep this on the down-low!". I feel the same way every time someone mentions Youtube RSS feeds (which drive my archiving rig). Keep quiet or they'll take them away!
TBF when I wrote the post I wasn't planning for it to reach any kind of sizeable audience. That said, I feel like yt-dlp is mainstream enough that talking about ways to make it suit your needs probably won't ruin everything?
Tough balance, and not one where I have any real confidence in my own answer.
>Keep quiet or they'll take them away!
But you just mentioned the RSS thing ... Doctor, heal thyself!
> the RSS thing
Ssshh, you just did it again!
> which drive my archiving rig
and yt-dlp I guess?
But also? Let things die. Let them languish half-remembered for years until they're gone forever. (Until they're not and then are again.) Let things go. What's that, your 'tism won't let you? Learn to. Grow. (Is that effectively impossible for some? Sure. But clearly that's a different problem. If you're reading this, most likely you can accomplish it.) I'm glad we have the Internet Archive and all those amazing things. But I'm convinced that just because it is technologically possible to personally save everything forever, it is in most cases entirely unnecessary and probably ultimately unhealthy.
I'm sorry, but that's a terrible perspective. Just in the last few months, I've run into issues in finding original texts for archaeological records from Iran and Iraq site digs from the 19th century. The archaeologists published books with artifact photographs, but it's extremely difficult to find the books because they're out of print. Because of wars and looting [0], many of the physical sites and structures are gone. Hundreds of thousands of artifacts have been looted.
There used to be web sites that also had the images, but those sites are now gone. The sites have also been removed from archive.org, too. Luckily on Anna's Archive, I found a digital scan of one of the books, but it's partially corrupted.
There is serious money being spent by powerful people to erase history. I can't see how anyone who values truth be ok with that.
[0] an interesting and unknown fact is that immediately after the start of the U.S. gulf wars "professional looters" came in with heavy equipment and dug up some sites 10 meters down. Apparently, you can see the damage from satellite photos, but I haven't checked.
I thought it was obvious enough that that's an entirely different thing: personal accumulation vs preservation of human knowledge.
One man's personal accumulation is another man's human knowledge.
Exactly. Yes, keep some stuff that you cherish but this idea of data hoarding everything is a little odd ball.
Back in 2001 the Taliban destroyed the Buddhas of Bamiyan statutes. The only people who didn't get to upset were the Buddhists. That is because if the Taliban did destroy them, maybe a flood would, or an earth quake, or eventually just erosion. It doesn't mean just accept reckless destruction but also is a lesson as accept that everything passes with enough time.
Dont strangle life and hold everything in place but let it flow like sand or water. Some sticks, most doesn't.
Enough to save your favourites. Something that matters to you. As said.
I have a nightly job that looks at all my youtube playlists, and downloads them to disk. It also sends me an email whenever a video that I haven't watched becomes unavailable so I can watch the local version. It took about 2 days to setup, but probably 30 minutes with AI today.
Are you running this locally? This is something I've considered but never felt like putting the effort to complete
Yes, on my local box that's on 24x7.
would be interested to have a look if you happened to have a repo setup or a blog post explaining! prob won't necessarily setup something myself but always been curious about this kind of thing
It's really as easy as asking Opus 5.5 and/or DeepSeek 4.1 (if Opus has moral issues) to set this up. I have the same. I've got a Download playlist which synchronises everything automatically. It had some issues where YouTube detected ytdl and throttled the download or limited video quality, so I set up a container with a full browser and fake browser fingerprint attributes, then downloaded at 1.5x (that was the limit before it throttled again). Just spar with Opus a bit if you encounter these issues.
How often do you get those emails?
Less often than what I would've expected. But when it did happen I was very glad I had it running.
One of the things I wish I could solve better, was a way to search for and show decent search results that you could then pipe into `yt-dlp`. Every method of doing this I've seen is basically a "hack" and often breaks or doesn't work at all. Anyone have a better solution to this that lets you basically build a frontend/proxy to Youtube or lets you Search, Show results and Download what you want to see lateR?
>, was a way to search for and show decent search results
Not sure what you're exactly asking for. Google/Youtube does provide an "official" API for youtube searches:
https://developers.google.com/youtube/data/reference/rest/v3...
It's rate-limited but other hacks to scrape Youtube without the API will also be rate-limited as well unless you try to trick Google via unapproved hostile methods such as commanding an army of residential ip zombies and aggregate it.
Fundamentally, the index of Youtube videos lives in Google's servers so you're beholden to Google to get results from it. If the issue is that the Google's official results from search queries are not surfacing the videos you think are actually there, it means you'd have to build a duplicate (massive) "shadow" index to return those missing videos. To build such a beast, you're back to hitting the brick wall of rate-limits again.
Do you know if this requires a GCP/Google account or can be it be used freely, but rate-limited to a reasonable rate for personal use?
Answering my own question. No.
> API key not valid. Please pass a valid API key.
https://github.com/offline-ant/await-clipboard/blob/main/awa...
A script that streams clipboard changes.
Next i run a bunch of user services that do:
`await-clipboard.sh | grep --line-buffered -z -e "youtu" | ...`
I just use youtube like normal, but instead of clicking a video i right-click copy to clipboard and a mpv+sponsorblock window pops up
What hacks have you found? I guess my first thought is some sort of snippet to run in the browser console, or an extension, that you can just run when using youtube itself that copies the yt-dlp command to downloads all the page's search results to your clipboard. Definitely a hack I'm just curious what else you've seen.
copy( 'yt-dlp ' + [...document.querySelectorAll('ytd-video-renderer a#video-title')] .map(a => { const u = new URL(a.href); return `"https://www.youtube.com/watch?v=${u.searchParams.get('v')}"`; }) .join(' ') )I was messing around with the new coding agent in Xcode and built an app that would let me put in a bunch of channels I subscribe to, then basically made a YouTube RSS app around that. It would fetch new videos and show the thumbnails, times, descriptions, etc. If I wanted to watch something it will download it with yt-dlp on the backend. Watched videos would get cleaned up periodically, but videos marked as favorites would stick around.
It worked decently well. However, I started running into API limits when it would refresh to fetch updates. Things could likely be tweaked to avoid this, but I haven’t revisited it yet.
I didn’t make a generic search, but did allow pulling up one-off videos to download and favorite them.
Due to the nature of youtube updating so often all methods utilizing youtube's search would break often, but in the age of coding agents I don't think it matters as much anymore. Tell that to claude code and it will do it in 15 minutes. Being annoyed with youtube's search interface regressions I've basically built something similar by having an alternative frontend to better sort by date ranges, view count etc. It has already broken twice in last 6 months but fixing it is trivial by pointing a coding agent at it. The way it works is by piping the search query to automated playwright browser which returns the parsed search results and thumbnails. Also dabbled with Youtube's API in the past which sometimes shows results that don't show up on its regular search.
> Anyone have a better solution
Since youtube api won't help with this someone needs to build a video index and a good search algorithm on top. Would be nice to be able to search through indexed subtitles too.
I don't even want an "algorihtm" per se. Just search, show results and a download or paly. That's it.
By algorithm I mean a scoring function to tell which video is relevant to the search.
Freetube but if you want HD you have to separate out the video and audio downloads then combine them after. A little annoying but it does have download right there in the client
freetube removed the download feature a while ago. see my other comment above on how i use freetube to download videos.
Dang really? Guess I just haven’t needed it in a while
I used a self-hosted Invidious instance in the past. Im not sure of the current state, but it’s a privacy front end similar to redlib.
i use freetube to search. i can select videos that i want to watch with a single click into a playlist and then export that playlist and feed it to yt-dlp. since my internet is often slow, that is the main way i watch videos. i don't even open them directly in freetube, but wait until yt-dlp is done downloading.
Podsync will download videos from a playlist and then publish an XML feed of videos it's downloaded. You can set it up so that you interact with it by just adding videos to a (public or unlisted) playlist.
It's intended to be used as a youtube-to-podcast-player tool, but seems like it fits your use, too.
> and often breaks
That's kinda the nature of YouTube downloaders/scrapers including yt-dlp. It's not exactly a public API that YouTube's offering to support.
You can use google site search operator to get a better youtube search
Many of my "Watch Later" playlist items have been removed, which is why I currently:
1. Vibed a firefox extension that polls my youtube watch later list and saves as bookmarks
2. Vibed a second firefox extension that syncs bookmarks to a self-hosted karakeep (bookmark manager)
3. Configured karakeep to download videos from youtube bookmarks (it uses yt-dlp internally).
It's pretty nifty.
In addition to what's included in the post, I'll recommend Tube Archivist as a self-hosted solution. Utilizes yt-dlp, you can configure download speeds to avoid getting temporarily blocked, handles subscriptions and playlists. I've been enjoying it!
Pretty good tip! This thread inspired me to set up Tube Archivist and use their provided plugin to hook it into Jellyfin (which I already had set up). Now I have a self-hosted backup for the YouTube videos I care most about.
I'm using the External Application Button browser extension along with yt-dlp so that I can download YT videos with a single click. https://webextension.org/listing/external-application-button...
My arguments line for the extension looks something like this:
/C C:\Users\[user]\youtube-dl\yt-dlp.exe -v -P "D:\Media\Videos" -f "bv*[vcodec!*=av01]+ba/b" --write-subs --embed-subs --sub-langs "en.\*" --compat-options no-keep-subs --merge-output-format mkv [HREF]The other year I came to the same conclusion so I built a web frontend for yt-dlp with queue support. I have 'profiles' that I can pick from at the time of download that allow custom yt-dlp configs to be active at any given time, which routes videos to different locations and jellyfin being one of those locations.
I made a telegram bot for my mother that takes yt urls and downloads stuff to my jellyfin directory so she can download it from jellyfin. She downloaded like 2 tb of audio books the last 3 years.
First I had a simple script. Now I use a little more complex approach with queuing, mqtt and direct replies with wormhole codes so one can download it directly.
Around 2018, someone had done a lot of work and there were videos like "The Adventures of Tyrion the Imp (Season 1)" in Youtube. They had taken all Tyrion's storyline scenes from all the episodes, and put them together in one video. And they had done these for all of the Game of Thrones main characters, so there were lots of these videos.
At some point, all those videos were removed.
fyi: filesystems have max path length/byte count limits, and yt-dlp can exceed that(e.g. "/var/home/username/Documents/Videos/YouTube/Five-reasons-you-want-powdered-detergents-for-your-dishwasher-fourth-one-surprises-you.mp4.part.012" > $THE_MAX_LEN). If this happens, it throws a Python `[Errno 36] File name too long` error and yt-dlp gives up.
This can be mitigated by adding `-o "%(title).150B [%(id)s].%(ext)s" ` to command line, which trims filenames to 150 bytes max. There are other options like --trim-filenames, but yt-dlp don't apply those to the interim part files and that triggers the failure anyway. The relevant issue has been reported on GH years ago and closed by the maintaining author with no PR from me(hey).
Using Youtube titles for filenames is an exercise in wild and crazy non-ASCII characters. Make sure your filesystem, OS, and client tooling can handle it.
I regret not archiving all the videos from the youtuber Myles Power (pseudoscience-debunker). He was one of my more favorite YouTubers but a few years ago he nuked his entire channel and all the videos on it (I suspect because his employer didn't like him arguing with people on the internet).
I wanted to rewatch some of his videos recently and as far as I can tell most of his videos are now lost media. I should have downloaded them when I had the chance.
just fyi, youtube premium lite is $7.99 a month (subscribe via web, not App store), removes in-video ads and allows downloads. at that price it’s just worth it for me.
Are the downloads DRM-encumbered and capable of having access revoked in the future, though?
Read the comments and combined with my personal experience, made me wanna have a full on offline library, and in a better case, "decentralized" libraries of such things, although at the very least videos prolly won't work all that well.
I've been saying this for ages: if you care about something, seek your own copy.
I've been (manually) download my favourite youtube videos to my cloud since I've noticed some videos gone forever for any reasons.
There is a solution to this for videos you upload from now on. The problem is decoupling persistence and access. Imagine a decentralized network where you could “pin” videos the way you do in IPFS, but they’d be streamed and end-to-end encrypted.
Websites could ask their visitors to keep a tab open and their browsers will automatically store chunks (and earn safebux for serving videos, if they want to turn that on). This was designed to be far simpler than IPFS, with no “sealing” … just open a browser tab and get paid.
https://www.helpnetsecurity.com/2026/06/19/safecloud-browser...
It works now, you can try it locally:
https://github.com/Safebots/Safecloud
The real interesting part is when it connects with Safebox remote attestation. Here you can prove that the server has not been compromised, and that together with HTTPS proves that the JS is official. You don’t need men with guns for DRM or copyright… you can enforce it this way. An individual user might hack the JS they got but someone else can’t distribute the hack at scale (unless it is with a rogue jailbroken browser). The Jets in safecloud wouldn’t release the chunks unless there was a recent assertion + TPM attestation from the Safebox serving the player iframe.
This way you can enforce revenue streams like “pay per minute” and have the client side actually enforce it for nearly all users.
@tptacek you would love Safecloud I think
I've always downloaded entire YT channels I enjoyed. I now have free/forever access to tons of content that now sits behind paywalls on topics I care about.
All automated for years
What are you using?
Not the poster you're replying to, but my archiving rig uses my personal fork of "tt-rss" to pull in the RSS feeds for the channels I care about and a script to query the database. That script uses yt-dlp to download the videos and subs, then marks them downloaded in the database. It's a bunch of glue-and-tape scripting code but was easy to hack together in an afternoon. Tweaking yt-dlp to run at a velocity that didn't get my IP address put into "you must login" hell was the most difficult part. The only long-term care-and-feeding has been keeping yt-dlp updated in the face of the arms race.
> Tweaking yt-dlp to run at a velocity that didn't get my IP address put into "you must login" hell was the most difficult part. YouTube is pretty hassle-free in that regard, at least for my IP region.
I have a script that downloads sequentially, and there’s an optional variable interval in between—though I don’t think I’ll actually need that. I once downloaded the entire contents of a YouTube channel that had over 400 GB of audiobooks. After a while, YouTube throttled the speed to 1/2 MB/s—which didn’t bother me, but everything still downloaded successfully. That was already two years ago, though.
A few days ago, I spent two consecutive days nonstop downloading playlists from YouTube Music, but that didn't trigger anything either.
Rather than using Tdarr, wouldn't it be simpler to use yt-dlp's `--recode-video` option?
Yeah what the other person said - the Tdarr instance was for my other media and I figured, might as well use it across the board. It was less work to just add another library to Tdarr and let the server go brrrr than to work out how to get ytdl-sub to do that, especially when the library was already in the hundreds of GB.
`--recode-video` is probably the better solution if starting from scratch.
If the jellyfin receives content from anywhere else, a separate job for transcoding would cover those too.
Does anyone have a better solution for watching this stuff on my TV? I'm not thrilled with using Jellyfin for this purpose because of the limitations (some in the article, others not) but also because I have a lovely Jellyfin library of actual TV and movies that I don't want to gum up.
Ideally I want videos on my home server organised into arbitrary folders and a nice simple video player on my Android TV that I can browse the folder tree with. Just like the old days. I don't care about accessing this stuff outside of my home network.
As far as not polluting your Jellyfin library, you could just have a separate Jellyfin instance for the YT videos, no?
Somewhere in early 2013 some ethical hacker communities had tooling to share the hashes and general metadata of downloaded videos from Youtube so that "spy marks" could be detected.
At the time I was already concerned that what would later be called deep fakes would be abused by big sites to mass-manipulate the bifurcated segments of the larger population in near real-time. At that time in 2013 I was told I must be smoking some really good shit, and perhaps I was.
But now in 2026 about twelve years after Google's primitive artificial neural networks showed us an on-silicon view of tripping balls in a grocery store, and now the mediocre enthusiasts both technical and not are no longer like "oh yeah that's cool man" but has been exposed to what artificial neural networks are doing day to day, the concern for targeted convincing-as-totally highly manipulative edits of hour long podcasts is not so "out there".
https://brand.io/article/spymarks/
Pouff - Grocery Trip
https://www.youtube.com/watch?v=DgPaCWJL7XII did so with regards from Tales from the crypt; the early seasons were great, so I have them locally. Or, at the least the better ones; some are not so good.
For this purpose I also kept list, in .yml files, for the most recent URL. Not just on youtube but also dailymotion etc...
Interestingly there are some surges of URLs suddenly being eliminated. Naturally we know the copyright mafia is trying to hinder us, the people here, but it is interesting how that works. Because ... it sometimes works. And then it does not work. Which is quite strange to me.
For instance, you can often still find new videos on youtube here, even full movies. Sometimes you can download them; then suddenly they are gone, but they were up before that for months or even years. So it is really really strange to see some videos suddenly vanishing, others being around for decades literally. Even when you'd assume these have ... "copyright issues".
Lol would love to sue this to download some of the movies on youtube
>The corporate internet is hostile to art and the things you love
Agreed. I mourn the deletion of legendary Hair cake video from FilthyFrank every now and then. But at least we have AI slop videos or in better case videos with "The inevitable rise and fall of XXX" title" with human narrator reading AI written script. But hey at least everyone censor word fck and sht.
Backing up videos seems increasingly a consideration, it's disappointing to see videos I've organized and paid for via Youtube Premium to support creators and invest in organizing meaningful playlists.
Every time you watch a youtube video you are downloading the youtube video to disk. It is just to prevent the lawyers from exploding that we all pretend that deleting it afterword means it never was downloaded.
But yes, everyone should be not deleting the videos they've downloaded.
Technically watching a video only streams video chunks into memory. But of course there are tools pretending to be a youtube client to stream it to a file.
to the layman download means the whole video is stored in its entirety on my disk. and possibly to lawyers too. that is not happening with streaming videos. youtube videos in particular most likely never hit the disk. not even the cache. when i am watching youtube then i am not deleting the video after it is done. the "downloaded" segments disappear automatically as i watch. so there is no delete step that i could skip in order to keep the file. rather, actually downloading a video requires an entirely different operation.
"to the layman download means the whole video is stored in its entirety on my disk."
Yes, that's exactly what it means.
No its the same operation just you save instead of not save.
It used to be but not now. Your browser is served little slices of the video and audio, and the player adapts in realtime, giving you lower or higher bitrate, depending on your network congestion.
yt-dlp, as far as I know, always asks for the same consistent quality/bitrate of your choosing (and saves them to disk and joins the segments and muxes the video and audio into one stream)
Bitrate is irrelevant. It’s a download either way. Serving little slices is downloading.