A minimal Windows/macOS desktop downloader powered by yt-dlp and Tauri 2.
中文 · Quick Start · Configuration · Verification · Documentation
yt-dlp-tauri is a small desktop app for downloading videos with yt-dlp without writing command-line options by hand. Paste a video URL from a site supported by yt-dlp, preview the metadata, choose a quality, and download an MP4-friendly file from a focused desktop UI.
The project is desktop-first and local-first. It is not a hosted downloader service, does not provide multi-user accounts, and is not affiliated with yt-dlp, FFmpeg, Deno, or Tauri.
- Parse video metadata through
yt-dlpand preview title, thumbnail, duration, source URL, description, and quality options. - Download with live progress, speed, ETA, cancellation, and a saved output folder.
- Use Cookie files for authenticated sites, including Netscape
cookies.txtand one-line browser Cookie headers. - Install, repair, and verify the app-managed platform toolchain from Settings.
- Verify tools against fixed source URLs and SHA-256 hashes from a pinned manifest.
- Switch the UI between English and Chinese.
- Check GitHub Releases for app updates, with optional
gh-proxyrouting for update and release access. - Keep local operational logs for recent app activity.
| Layer | Choice |
|---|---|
| Desktop runtime | Tauri 2 |
| Backend | Rust |
| Frontend | Vanilla TypeScript, Vite |
| UI | Fixed-size product-style desktop interface |
| Toolchain | App-managed Windows/macOS yt-dlp, ffmpeg, ffprobe, deno |
| Installer | Windows NSIS, macOS DMG |
Use Windows or macOS for real app builds. WSL can run many checks, but release installers should be built on their target OS or by the GitHub Actions release workflow.
- Windows 10/11 with WebView2 Runtime, or macOS
- Node.js 20+ or 22+
- Rust stable with the platform toolchain
- PowerShell 5+ or PowerShell 7+ on Windows
npm ci.\scripts\download-tools.ps1This is optional for normal app use. If tools are missing, open the app, go to Settings, and click Install tools.
npm run tauri devnpm run tauri buildThe configured bundle targets are nsis and dmg. Build output is written under platform-specific bundle directories such as:
src-tauri\target\release\bundle\nsis\
src-tauri/target/release/bundle/dmg/
| Item | Purpose |
|---|---|
src-tauri/tools-manifest.json |
Fixed tool versions, source URLs, target names, and SHA-256 hashes. |
src-tauri/tauri.conf.json |
Tauri app metadata, fixed window size, bundle target, icons, and resources. |
scripts/download-tools.ps1 |
Optional development script that restores the pinned win-x64 toolchain into the checkout. |
| Settings: output folder | User-facing download directory selection, save, reset, and open actions. |
| Settings: GitHub site | Direct or gh-proxy mode for update checks and release links. Project home always opens GitHub directly. |
Current release scope:
- Populated tool targets:
win-x64,macos-x64,macos-arm64. - Planned manifest target:
win-arm64, once every tool URL and hash is pinned. - Tool binaries are not committed to the repository.
Downloaded videos default to:
%USERPROFILE%\Downloads\yt-dlp-tauri\
App state and logs are stored under:
%LOCALAPPDATA%\yt-dlp-tauri\state\
%LOCALAPPDATA%\yt-dlp-tauri\logs\app.log
Installed app tools are written under:
%LOCALAPPDATA%\yt-dlp-tauri\Tools\win-x64\
Development checkout tools can live at:
src-tauri\Tools\win-x64\yt-dlp\yt-dlp.exe
src-tauri\Tools\win-x64\ffmpeg\bin\ffmpeg.exe
src-tauri\Tools\win-x64\ffmpeg\bin\ffprobe.exe
src-tauri\Tools\win-x64\deno\deno.exe
Frontend tests:
npm testFrontend build:
npm run buildRust backend tests:
cargo test --manifest-path .\src-tauri\Cargo.toml --libRust backend check:
cargo check --manifest-path .\src-tauri\Cargo.tomlFull Tauri build:
npm run tauri buildBefore publishing a release:
- Run the verification commands above.
- Push a version tag such as
v0.1.3. - Wait for the
Releaseworkflow to upload Windows NSIS and macOS DMG artifacts to the draft GitHub Release. - Confirm
src-tauri/tools-manifest.jsonuses fixed release URLs, notlatest. - Confirm generated folders and restored tools are not staged.
- Include the GPL license and third-party notices with the release.
This project is licensed under GPL-3.0. The app downloads and uses third-party command-line tools with their own licenses and redistribution obligations. See THIRD-PARTY-NOTICES.md.
This project is not affiliated with yt-dlp, FFmpeg, Deno, or Tauri.
