A Bilibili Downloader That Actually Lets You Pick the Stream
You've probably been there: you want to save a video from Bilibili for offline viewing, and the tool you find gives you one file at whatever quality it decided you deserved. No choice of codec, no choice of resolution, no danmaku to speak of. yutto is a command-line downloader for Bilibili that takes a different approach—it shows you every available stream and lets you decide. It's a Python tool distributed on PyPI, and it handles everything from single videos to batch downloads, including anime series and courses.
What It Does
yutto downloads Bilibili content from the command line. Point it at a URL and it pulls down the video—but before it does, it inspects what's available and prints a numbered list of every video and audio stream it found. In the README's example, a single video yields 15 video streams across AVC, HEVC, and AV1 codecs at resolutions from 1080P down to 360P, plus three audio streams at different bitrates. You pick what you want, and it downloads.
Beyond the basic video download, yutto generates ASS-format danmaku—the scrolling comments that overlay Bilibili videos—so you can keep that part of the experience when you watch offline. It also supports logging in with a premium account (the example output shows a successful 大会员 login), which matters because higher-quality streams are gated behind membership. The tool reads configuration from a yutto.toml file if one exists, so you don't have to retype options every time.
Why It's Cool
Stream selection is the headline feature. Most downloaders hide the complexity of codec and bitrate choices behind a quality preset. yutto puts it all in front of you with a numbered menu. If you specifically want AV1 at 720P—maybe for file size, maybe for compatibility—you can have exactly that. The default (marked with an asterisk) is highlighted, so you can just hit enter if you don't care. It's a small design decision that respects the fact that people downloading video often have opinions about how it's encoded.
ASS danmaku means you keep the comments. Plenty of tools strip danmaku because rendering it is hard. yutto generates it as an ASS subtitle file, which most video players can load. That's a much better answer than baking the comments into the video or dropping them entirely—you get the full Bilibili viewing experience offline, but you can also turn the subtitles off if you just want the video.
The installation options meet you where you are. Homebrew on macOS, AUR or archlinuxcn on Arch, Docker if you'd rather not install anything, and plain pip, pipx, or uv if you live in Python land. The Docker invocation is worth noting: you mount your download directory to /app, or mount $(pwd) to match the native behavior of downloading to the current directory. That's a thoughtful touch.
It's honest about its requirements. Python 3.11 or newer, and FFmpeg needs to be configured—the README links to documentation for that rather than pretending it's optional. Muxing separate video and audio streams is how modern streaming works, and yutto doesn't try to hide it.
How to Try It
Pick whichever install path fits your setup.
-
Homebrew:
brew tap siguremo/tap brew install yutto -
Arch Linux (via AUR or archlinuxcn):
yay -S yutto # or sudo pacman -S yutto -
Docker:
docker run --rm -it -v /path/to/download:/app siguremo/yutto <url> [options] -
pip, pipx, or uv (make sure you have Python 3.11+ and FFmpeg configured first):
pip install yutto # or pipx install yutto # or uv tool install yutto
Once installed, just pass a URL:
yutto https://www.bilibili.com/video/BV1CTMHziEaB/
You'll see the stream listing, make your selection, and the download starts with a progress bar. The full documentation lives at yutto.nyakku.moe, and the source is at github.com/yutto-dev/yutto. If you hit a bug, the maintainers ask that you use Issues; general questions go to Discussions.
Final Thoughts
yutto is a focused tool for a specific audience: people who download Bilibili content regularly and care about what they're getting. The stream selection and ASS danmaku generation are the two features that set it apart from a generic downloader, and the breadth of installation methods means there's little friction to trying it. If you're on Windows, the README's truncated install section doesn't cover you in what's shown here—check the full docs before assuming. Otherwise, if you've ever wanted to grab a video at a specific codec or keep the danmaku intact, this is worth a look.
Follow @githubprojects for more developer tools and open source projects.