Discovering VidBee: A modern GUI for yt-dlp
I download a lot of videos for offline reference. Usually, I use yt-dlp in the terminal. It works great. But recently I discovered VidBee, an open-source video downloader built by nexmoe.
It is an Electron app that acts as a modern UI for yt-dlp. It supports downloading from over 1,000 websites, including YouTube, TikTok, and Twitter. It also has a really interesting RSS auto-download feature.
Here is a look at what it is, how it works, and a few problems you might run into.
Table of Contents¶
- Wait, but why a GUI?
- How it works
- Shell detection and your PATH
- Verification commands
- Problems
- Notes
Wait, but why a GUI?¶
You might wonder why you need a GUI for a tool that works perfectly fine in the terminal.
For a long time, I just typed yt-dlp <url> and called it a day. But keeping track of background downloads, queuing multiple videos, and managing format selection can get tedious. VidBee gives you a clean interface for one-click pause and resume, real-time progress tracking, and queue management.
The standout feature is RSS subscriptions. You can subscribe to feeds (like RSSHub) and it will automatically download new content in the background.
How it works¶
VidBee executes fully locally. There is no backend tracking. It just acts as a bridge between you and the yt-dlp engine.
Here is a rough diagram of the architecture:
graph LR
A[VidBee UI] -->|User Input| B[Electron Process]
B -->|Spawns| C[yt-dlp Engine]
C -->|Fetches| D[Video Website]
D -.->|Streams| C
C -.->|Progress| B
B -.->|Updates| A Shell detection and your PATH¶
If you decide to stick with the CLI instead of VidBee, you need to make sure yt-dlp is available in your shell. It is helpful to know exactly which shell you are running. You can check this by running:
ps -p $$ -o pid,comm=
This works across bash and zsh. If you use fish, $$ is not the current PID, so you would use echo $FISH_VERSION or ps -p %self instead.
To make sure you can run the CLI tools smoothly, you need to add them to your PATH. It is generally best to prepend new directories so they take precedence. You should also use $HOME instead of hardcoding your home directory path.
For bash or zsh, you might add this to your .bashrc or .zshrc:
export PATH="$HOME/bin:$PATH"
Verification commands¶
If you already have yt-dlp installed and want to know where it is coming from, you can check your system paths.
Run:
which -a yt-dlp
This will print every location of yt-dlp in your PATH. It helps you figure out if you have conflicting versions installed via Homebrew, pip, or a manual download.
Problems¶
VidBee has over 8,000 stars on GitHub and is actively developed. However, because it relies on yt-dlp, it is subject to the constant cat-and-mouse game with video platforms. Here are some known issues.
YouTube 403 Forbidden errors Users frequently report HTTP 403 Forbidden errors. This is usually related to YouTube's anti-bot measures. Sometimes you will also see prompts that a sign-in is required to access a specific video.
Extraction failures When site layouts change, extraction breaks. For example, there are open issues about the app being "unable to extract video data" for TikTok URLs.
Streaming protocol changes Changes in YouTube's SABR streaming protocol have caused some formats to be skipped or result in post-processing errors.
Notes¶
- VidBee is frequently updated to integrate newer versions of
yt-dlp. - If you change your
.bashrcor.zshrcto update yourPATH, remember to runsource ~/.bashrcor restart your terminal. Sourcing is usually faster than a full restart. - Some installer scripts automatically modify your
PATH, but they might append instead of prepend. It is always good to check what they actually did.
— Nadeem