XiaDown, a local-first media library manager built on Wails and yt-dlp
🐣一款支持视频下载的资源库管理应用 A media library manager with video download support
At a glance
- What is it?
- XiaDown is a Go and React desktop app for macOS and Windows that keeps downloaded media in a local library, sniffs web media for capture, and doubles as a client for YouTube, YouTube Music and RSS. It runs on yt-dlp and FFmpeg under the hood, stores its library in SQLite, and is released under Apache-2.0 with no pull request acceptance.
- Who is it for?
- Adopt XiaDown when you want one application to hold a personal media library, save media you have the right to keep, and browse YouTube, YouTube Music or RSS feeds alongside a local collection, and you are on macOS or Windows. Do not adopt it for Linux, for a shared or multi-user library, or if you need an application that accepts outside contributions, since the project states it does not accept pull requests at present.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 88 days ago.
- What is it written in?
- Mainly Go, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A library manager first, a downloader second
The project describes itself as a local-first resource library management application with video download support, and the ordering of the feature list matters. The library is the centre: video download, transcoding and library management sit together as one core capability. Around that sit a sniffer for web media, a YouTube Music browser with local music playback, a YouTube browser for watching and downloading, and an RSS client for subscriptions, reading and media downloading. The homepage is xiadown.app and the documentation is at xiadown.app/docs/, with separate pages for the library, sniffing, music, YouTube and RSS areas. The distinction from a plain downloader is that downloaded files end up in a managed, searchable collection rather than in a downloads folder, and that the same application can also play back what it fetched.
The dependency list tells you how the sniffing actually works
The go.mod file is the most informative document in the repository, because it names the libraries doing the hard work. Two entries stand out. github.com/chromedp/chromedp with its cdproto companion is a Chrome DevTools Protocol client, and its presence is what makes browser-level media sniffing possible: the app can drive a real browser and observe the network requests a page makes. github.com/tetratelabs/wazero is a WebAssembly runtime in Go, which is how a WebAssembly-compiled extractor can be executed inside the desktop app without shipping a separate binary process. There is a nativewebp library for WebP handling, an xurls library for URL extraction, dhowden/tag for media metadata, and mimetype for content type sniffing. The data layer is github.com/ncruces/go-sqlite3 for SQLite plus the bun query builder with its sqlitedialect. The project also depends on yt-dlp and FFmpeg, named in the credits section as open source projects the work builds on.
Building the Go side and the Wails shell
The module is named xiadown and it declares a specific Go toolchain:
module xiadown
go 1.25.12The build stack is Wails 3, and the go.mod pins it to an alpha release along with the webview2 component for Windows:
github.com/wailsapp/wails/v3 v3.0.0-alpha2.117
github.com/wailsapp/wails/webview2 v1.0.28Working on the project locally needs Go 1.25.12, Node.js 24, Bun 1.3.5 and Wails 3 alpha2.117, and the install and dev commands are given in the README:
go install github.com/wailsapp/wails/v3/cmd/[email protected]
wails3 task devOther build and check tasks live in Taskfile.yml, and there is a taskfile_contract_test.go file at the root that appears to assert something about that task file. A Wails application pairs a Go backend with a webview frontend, which is why Node and Bun are both needed even though the backend is Go, and why the frontend directory holds the React code and its own third party notices file.
Installing on macOS with Homebrew, or from a DMG
macOS users can install through a Homebrew cask:
brew install --cask arnoldhao/tap/xiadownThere are also direct download links for four combinations: a DMG for Apple silicon macOS, a DMG for Intel macOS, an installer executable for Windows x64, and a portable zip for Windows x64. The platform floors are explicit, with macOS 14 Sonoma or newer required for the macOS build and Windows 10 or newer for the Windows build. On first launch the application walks you through setting language, appearance, network and runtime dependencies, and the installation and first-launch document covers those steps in detail. Worth noting for anyone planning to contribute: the project does not currently accept pull requests and asks for issues instead, so the build commands above are for reading the codebase rather than for landing a patch.
The disclaimer puts the legal weight on the user
The README carries a four-point disclaimer, and it is unusually direct. XiaDown is only for managing media and saving content the user has the right to access and use. Users are told to confirm for themselves that downloading, saving, converting and using the content complies with local law, the rights holder's authorisation and the target platform's terms of service. It asks users not to process infringing, unauthorised, paywalled, privacy-sensitive or otherwise unlawful material, and it puts copyright, platform rules, account, network and other liability on the user. Since the app sits on top of yt-dlp and FFmpeg, both of which are general purpose tools, this is the practical place where the app draws its line: the engineering is content-neutral and the policy is documented rather than enforced in code.
Where XiaDown is the wrong tool
The first constraint is platform. The published binaries cover macOS on Apple silicon and Intel, and Windows on x64, and there is no Linux build listed even though the topic tags mention several Chinese communities and the developer runs a Ko-fi page, so a Linux user has no packaged route. The second is that this is a version 1.0 project. The release history is three tags in three days, v1.0.2 on 2026-07-24, v1.0.3 on 2026-07-25 and v1.0.4 on 2026-07-27, which suggests fast iteration and equally fast churn, and the last push was on 2026-07-27. An early version that pins Wails to an alpha release is a moving target. The third is scale. SQLite in bun, one user, a local library: there is no account system, no sharing, no server component and no synchronisation, so a household library that several people add to is out of scope. The fourth is that mobile clients for iPhone and iPad are still in development, so the phone side is a promise rather than a feature.
Licence, credits and the shape of the ecosystem
The repository is licensed Apache-2.0, with the licence file at the root and a THIRD_PARTY_NOTICES.txt in the frontend public directory for dependency licences. The credits list Go, Wails, React, yt-dlp, FFmpeg and SQLite as the open source projects the application is built from. The topic tags give a better sense of the intended use than the feature headings do: alongside rss, music-player and sniff sit bilibili, douyin, kuaishou, xiaohongshu and tiktok, which says the download side is aimed at short-form and Chinese platforms as much as at YouTube. The music section covers YouTube Music browsing and downloading together with local music playback, and the sniff section covers web media sniffing and download, which is the piece that depends most on the Chrome DevTools Protocol library in the dependency list. Local music playback is bundled, but the mobile client for iPhone and iPad remains under development.
Editorial conclusion
Adopt XiaDown when you want one application to hold a personal media library, save media you have the right to keep, and browse YouTube, YouTube Music or RSS feeds alongside a local collection, and you are on macOS or Windows. Do not adopt it for Linux, for a shared or multi-user library, or if you need an application that accepts outside contributions, since the project states it does not accept pull requests at present. Check first which platform binaries you need and your OS floor, since the macOS build needs macOS 14 or newer and the Windows build needs Windows 10 or newer, and read the disclaimer about your own responsibility for what you download. The last push was on 2026-07-27 and v1.0.4 was published the same day, so the project is at an early version.
Frequently asked questions
What platforms does XiaDown support?
The published builds cover macOS on both Apple chip and Intel, and Windows x64 as either an installer or a portable zip. The macOS build requires macOS 14 Sonoma or newer and the Windows build requires Windows 10 or newer.
How do I install XiaDown on macOS with Homebrew?
The README documents a cask install with brew install --cask arnoldhao/tap/xiadown. Direct DMG downloads are also published for both Apple chip and Intel Macs, and the first launch walks through language, appearance, network and runtime dependency setup.
What does XiaDown use to download and convert media?
The credits name yt-dlp and FFmpeg as the open source projects it builds on. The Go module also depends on chromedp for browser automation used by the sniffing feature, and on wazero to run a WebAssembly component in process.
Can I contribute code to XiaDown?
Not at the moment. The README states the project does not currently accept pull requests and asks for feedback and suggestions through GitHub Issues instead. The licence is Apache-2.0.
Does XiaDown store its library in a local database?
The project is described as local-first and the go.mod pulls in a pure Go SQLite driver along with the bun query builder and its sqlitedialect. There is no server component or account system in the repository.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/arnoldhao-xiadown)Was this useful?