Retro-style Downloads folder with outdated file names alongside a terminal window running a modern media downloader command.

The 5 Best Downloaders for Videos, Music & Images (No Browser Needed)

Before YouTube, Spotify, and Netflix dominated the internet, the only way we could get our hands on videos and music was to download them. Also, internet speeds weren’t ever measured in Mbps or Gbps.

We downloaded on Kbps. Let that sink in for a moment.

A vintage Windows download dialog box showing a file with 0.49% completed and an estimated time left of 39 years.

That meant a movie would take an entire day if you were lucky. If not, you’d wait a couple of days at least (and pray the landline didn’t start ringing!).

When I was a teen, you could grab a pirated copy of just about anything via torrents or apps like Kazaa, LimeWire, or Napster, but those weren’t ever meant to last anyway.

In this article, we’ll explore new ways to download videos, images, and music with the resurgence of some clever CLI tools and a little tinkering.

You might have heard about youtube-dl, once the undisputed YouTube downloader, only to be dethroned by a newer tool called yt-dlp. But there are options available now. Some don’t even need you to download anything and instead allow you to directly stream media onto your favorite media app.

Let’s take a look at five standout tools and the unique tricks each one brings to the table.

Download Everything With yt-dlp

Let’s start with the tool that took the crown from youtube-dl.

yt-dlp is what most folks (not just the cool kids who wear sunglasses indoors) reach for these days when they want to download videos from YouTube or pretty much any popular media site.

It’s fast, reliable, supports thousands of platforms, and has so many flags you’ll spend more time reading flags than watching the actual video.

Here’s are some quick install instructions (if you’re on macOS or Linux):

brew install yt-dlp
# or for the hardcore
pip install -U yt-dlp

Now say you want to download an entire YouTube channel. That’s easy:

yt-dlp https://www.youtube.com/@beetlejuicearchives3490

Want just the audio in MP3?

yt-dlp -x --audio-format mp3 https://www.youtube.com/@beetlejuicearchives3490

Here’s where things get wild: yt-dlp also integrates with SponsorBlock. That means it can automatically skip over sponsored segments in videos. You don’t have to do anything fancy, just pass a flag:

yt-dlp --sponsorblock-remove sponsor https://www.youtube.com/watch?v=hH2I8rR07aM

You can also sort and filter download formats with fine-grained control. Want only the highest-quality MP4 with AAC audio?

yt-dlp -f "bv[ext=mp4][height<=1080]+ba[ext=m4a]" https://www.youtube.com/watch?v=xyz

All that and we’re still only just scratching the surface. It can handle playlists, metadata, cookies, rate-limits, and even merge video and audio streams with FFmpeg under the hood.

That said, if you’re not into downloading anything and you just want to watch a video straight from the source, right inside your media player app, there’s a tool for that too!

Stream It Like You Stole It With you-get

That’s exactly what you-get does. It pulls media from sites like YouTube, Vimeo, Twitter, and others, and streams it directly into apps like MPV or VLC without leaving the terminal.

Here’s how to install it:

brew install you-get
# or if you're managing Python packages manually
pip install -U you-get

Now, say you’ve found a video and just want it to play instantly:

you-get --player vlc https://www.youtube.com/watch?v=jNQXAC9IVRw

This hands the video off directly to VLC, and the stream begins, no file clutter and no fussing with browser extensions. Most of all, no more mystery files named video_final_FINAL_v2(1).mp4 cluttering your desktop. You treat it like a streaming service shortcut.

Of course, for the control-freaks among us, yes, you can still save the file.

you-get https://twitter.com/username/status/1234567890

Or inspect the available formats before deciding:

you-get -i https://vimeo.com/12345678

If you like the simplicity of you-get but want something faster, with more control over formats and playlists, there’s a tool that fits that profile perfectly.

Let’s take a look at annie.

Speed & Simplicity With annie

Built in Go and made for speed, annie is a no-nonsense media downloader that covers most of the popular platforms, just like the others. It doesn’t try to be fancy. It just works, and it’s fast!

To install:

brew install annie

The default usage is exactly what you’d expect:

annie https://youtu.be/dQw4w9WgXcQ

But annie really shines when you want to preview available formats before downloading:

annie -i https://youtu.be/dQw4w9WgXcQ

This gives you a clean, numbered list of all available video and audio streams, including resolution and size. Once you pick the one you want, just specify it:

annie -f 18 https://youtu.be/dQw4w9WgXcQ

It also handles full playlists with a simple flag:

annie -p https://www.bilibili.com/bangumi/play/ep198061

annie doesn’t panic when the Wi-Fi hiccups. It just picks up where it left off like nothing happened, and it splits files into chunks for faster downloading. It’s quick and gets the job done. If you want something faster than you-get but leaner than yt-dlp, annie strikes a solid balance.

Now, if you’re curious about something newer, with clean subcommands and stream decryption built in, then it’s worth checking out rustube-cli.

Clean & Modern With rustube-cli

If you’re the kind of person who appreciates tools that feel like they were built this decade (instead of something that still thinks Flash is relevant), rustube-cli might be right up your alley. Written in Rust and designed to be simple but robust, it gives you just the essentials: clean command structure and reliable stream decryption for YouTube.

You can install it via Cargo:

cargo install rustube-cli

Once installed, downloading a video is as straightforward as with all the other tools:

rustube fetch https://www.youtube.com/watch?v=dQw4w9WgXcQ

Want to see what stream qualities are available before downloading anything? Use check:

This will show you all available streams, including resolution and codec info, so you can make an informed choice without wasting time or bandwidth.

rustube check https://www.youtube.com/watch?v=dQw4w9WgXcQ

You don’t need to memorize obscure flags here. rustube-cli keeps things clean by using subcommands instead of arguments, which makes it much easier to read and reason about.

It’s a younger project, and still growing, but it’s fast and thoughtful. Even though it currently only supports YouTube, it doesn’t come with the overhead that bigger tools carry.

But what if you’re after images instead? Twitter threads, art sites, galleries, basically stuff you can’t just “right-click and save”? There’s a tool for that too.

Download Images Like a Wizard With gallery-dl

If yt-dlp is the multitool for video, then gallery-dl is more like a precision instrument for images. It’s not just for generic image URLs either; it actually understands how full galleries work on sites like Twitter, Reddit, DeviantArt, Pixiv, Danbooru, and even Tumblr.

Here’s the quick install:

brew install gallery-dl
# or for the hardcore
pip install -U gallery-dl

Want to download every image from a specific Reddit post?

gallery-dl https://www.reddit.com/r/EarthPorn/comments/abc123

Or maybe you’ve found an artist’s full portfolio on Twitter?

gallery-dl https://twitter.com/username

You can even go full hacker mode and just extract the direct image URLs without downloading them:

gallery-dl --get-urls https://twitter.com/username/status/1234567890

This prints out the raw image links to your terminal so you can inspect and pass them into another script or tool. It’s great if you’re building an automation pipeline or if you just want to see what’s actually behind a page without committing to a full download.

There’s full config support too. Want everything downloaded into folders named by artist and source? Done. Want to skip posts that don’t match a certain tag, language, or resolution? You can do that. It’s almost scary how much you can tweak.

Here’s a taste of what a config file might look like (totally optional, but quite powerful):

{
  "base-directory": "~/Pictures/gallery",
  "twitter": {
    "cookies": "twitter-cookies.txt",
    "username": "your_username"
  },
  "output": {
    "mode": "tagged"
  }
}

You might be collecting memes or just downloading reference material, whatever your image downloading needs are, gallery-dl handles it all surprisingly easy.


Back in the day, apps like Kazaa and LimeWire made things feel easy. You searched, you clicked, and the download started (eventually).

There was a kind of thrill to it, even though it was very likely the file turned out to be mislabeled or corrupted.

These CLI tools might not have the glossy buttons or cartoonish logos, but for developers, tinkerers, and anyone who lives in the terminal, they’ve become indispensable. They’re faster and definitely more flexible.

In many ways, they’re more reliable than anything we had back then.

Hopefully you found something new in this lineup that you didn’t know you needed. If this kind of nerdy deep dive is your thing, consider subscribing. There are more posts like this already in the pipeline.


Related Posts.