Yang

October 14, 2026

Migrating from Downie to yt-dlp: A Better Way to Download Videos on macOS

If you've been using Downie through a Setapp subscription, this guide helps you migrate to yt-dlp — a free, open-source, and more powerful alternative.

Background: Why Migrate from Downie

Downie is a well-regarded video downloader for macOS. It's polished, supports drag-and-drop, and is friendly to non-technical users. But if you're using it through a Setapp subscription, you may run into a few practical issues:

  • Subscription dependency: Once you stop paying for Setapp, Downie stops working.
  • Limited automation: Downie is built for manual, click-to-download workflows. It's not ideal for batch jobs or scripting.
  • Slower site support updates: As closed-source commercial software, it often lags behind open-source tools when sites change their rules.

yt-dlp addresses exactly these gaps:

AspectDownieyt-dlp
PriceSetapp subscription / one-time purchaseFree and open source
Site support1000+1000+, updated very fast
AutomationLimitedCLI, scriptable, batch-friendly
HD mergingBuilt-inRequires ffmpeg
Learning curveLowMedium (a few commands to learn)

If you're willing to spend half an hour getting comfortable with the command line, yt-dlp offers far more flexibility and long-term stability than Downie.


1. Installation

Install yt-dlp

On macOS, the recommended way is via Homebrew:

brew install yt-dlp

If you don't have Homebrew yet, install it first from brew.sh.

ffmpeg isn't a hard dependency of yt-dlp, but without it you'll hit two major problems:

  • No HD downloads: On YouTube and similar sites, 1080p and 4K videos have separate video and audio streams that need to be merged with ffmpeg.
  • No audio conversion: Extracting MP3, for example, requires ffmpeg.

Install it with:

brew install ffmpeg

Verify the installation

yt-dlp --version
ffmpeg -version

If both commands print version numbers, you're ready to go.


2. From Downie to yt-dlp: A Quick Reference

The hardest part of switching is going from "just click" to "type a command." Here's a side-by-side comparison of common tasks:

What you did in DownieEquivalent yt-dlp command
Paste link, click downloadyt-dlp "VIDEO_URL"
Pick highest qualityyt-dlp -f "bv*+ba" "VIDEO_URL"
Download audio onlyyt-dlp -x --audio-format mp3 "VIDEO_URL"
Download a playlistyt-dlp "PLAYLIST_URL"
Set save folderyt-dlp -P ~/Downloads/Video "VIDEO_URL"
Name file by titleyt-dlp -o "%(title)s.%(ext)s" "VIDEO_URL"

💡 Always wrap URLs in double quotes. YouTube playlist links often contain &, which the shell will truncate if unquoted.


3. Basic Usage

The basic syntax is simple:

yt-dlp [options] "VIDEO_URL"

Download a single video (best quality automatically)

yt-dlp "VIDEO_URL"

Download the highest quality with merged audio

yt-dlp -f "bv*+ba" "VIDEO_URL"

bv*+ba means best video + best audio, merged automatically with ffmpeg.

Force MP4 output

yt-dlp -f "bv*+ba" --merge-output-format mp4 "VIDEO_URL"

Extract audio only (MP3)

yt-dlp -x --audio-format mp3 "VIDEO_URL"

Download an entire playlist

yt-dlp "PLAYLIST_URL"

4. Specifying the Save Path

yt-dlp -P ~/Downloads/Video "VIDEO_URL"

Option 2: Use -o for the full filename template

yt-dlp -P ~/Downloads/Video -o "%(title)s.%(ext)s" "VIDEO_URL"

⚠️ Note: ~ isn't always expanded inside -o. Use $HOME or a full path instead.

Common filename template variables

VariableMeaning
%(title)sVideo title
%(ext)sFile extension
%(id)sVideo ID
%(uploader)sUploader name
%(upload_date)sUpload date (YYYYMMDD)
%(playlist_index)sPlaylist index

Example: Organize by uploader

yt-dlp -P "$HOME/Downloads/Video" -o "%(uploader)s/%(title)s.%(ext)s" "VIDEO_URL"

Example: Numbered playlist downloads

yt-dlp -P "$HOME/Downloads/Playlist" -o "%(playlist_index)s - %(title)s.%(ext)s" "PLAYLIST_URL"

5. Advanced: Turn Common Commands into One-Liners

Downie's strength is one-click downloads. With yt-dlp, you can replicate that via shell aliases — and go further.

Edit ~/.zshrc and add:

# Download best quality to a specific folder
alias yt-best='yt-dlp -f "bv*+ba" -P "$HOME/Downloads/Video"'
 
# Extract MP3
alias yt-mp3='yt-dlp -x --audio-format mp3 -P "$HOME/Music/yt-dlp"'

Save, then run source ~/.zshrc. From now on, just:

yt-best "VIDEO_URL"
yt-mp3 "VIDEO_URL"

That's Downie's one-click experience — but batchable and scriptable.


6. Troubleshooting

❓ The downloaded video has no audio

Cause: yt-dlp downloaded only the video stream because it couldn't find ffmpeg to merge the audio.

Fix:

  1. Confirm ffmpeg is installed: ffmpeg -version
  2. If the video was downloaded before you installed ffmpeg, just re-download it.
  3. If it still fails, point yt-dlp to ffmpeg explicitly:
yt-dlp --ffmpeg-location "$(brew --prefix ffmpeg)/bin" -f "bv*+ba" "VIDEO_URL"
  1. Check whether you used -f mp4 or -f bestvideo — those download video only, no audio. Use -f "bv*+ba" instead.

❓ Do I need to quote URLs?

Always use double quotes. If the URL contains &, ?, (, ), or $, the shell will misinterpret it without quotes. YouTube playlist links almost always contain &, so quoting is essential.

❓ Downloads are failing

Sites change their rules often. Update yt-dlp first:

brew upgrade yt-dlp

That fixes most issues.

❓ I still want a GUI

If you really prefer a graphical interface, try a GUI front-end built on yt-dlp:

  • Macabolic: a native-feeling yt-dlp GUI for macOS
  • Stacher: a modern cross-platform GUI

They call yt-dlp under the hood, so you get yt-dlp's site support with Downie-style click-to-download convenience.


7. Quick Command Cheat Sheet

TaskCommand
Best quality downloadyt-dlp -f "bv*+ba" "URL"
MP4 outputyt-dlp -f "bv*+ba" --merge-output-format mp4 "URL"
Extract MP3yt-dlp -x --audio-format mp3 "URL"
Custom save folderyt-dlp -P ~/Downloads/Video "URL"
Organize by uploaderyt-dlp -P ~/Downloads -o "%(uploader)s/%(title)s.%(ext)s" "URL"
Numbered playlistyt-dlp -P ~/Downloads -o "%(playlist_index)s - %(title)s.%(ext)s" "URL"
Update yt-dlpbrew upgrade yt-dlp

Final Thoughts

The biggest mental hurdle in migrating from Downie to yt-dlp is going from clicking to typing. But once you cross that line, you'll find:

  • No more subscription dependency — the tool is truly yours.
  • A much higher ceiling — batch jobs, scripting, and automation all become possible.
  • Faster community updates — new site support arrives almost instantly.

And if you occasionally want to skip the typing, aliases or a GUI front-end give you the best of both worlds. For long-term use, this is a migration worth making.

⚠️ A note on compliance: Please respect the terms of service and copyright rules of the sites you use. Only download content you have the right to access.