explaingit

elsakane2015/ytbdowngui

0RustAudience · generalComplexity · 3/5ActiveLicenseSetup · moderate

TLDR

macOS desktop wrapper around yt-dlp and ffmpeg built with Tauri 2 and React, with an embedded WebView login so session cookies pass to yt-dlp automatically.

Mindmap

mindmap
  root((YtbDownGUI))
    Inputs
      Video URL
      Playlist URL
      WebView login session
    Outputs
      Downloaded video file
      Subtitle srt
      Task history
    Use Cases
      Save YouTube videos in 4K
      Batch grab a channel
      Login-gated Bilibili downloads
    Tech Stack
      Rust
      Tauri
      React
      TypeScript
      yt-dlp
      ffmpeg

Things people build with this

USE CASE 1

Download YouTube videos in 4K with subtitles burned in

USE CASE 2

Batch download a playlist filtered by date range and keyword

USE CASE 3

Grab login-gated Bilibili or X videos using an in-app browser session

Tech stack

RustTauriReactTypeScriptViteyt-dlpffmpeg

Getting it running

Difficulty · moderate Time to first run · 30min

Ad-hoc signed dmg needs a one-time xattr -dr com.apple.quarantine, and building from source requires Rust, Node, pnpm, and a sidecar-binary fetch script.

No license declared on this repo, so by default all rights are reserved; the bundled yt-dlp is Unlicense and ffmpeg is LGPL or GPL.

In plain English

YtbDownGUI is a desktop video downloader for macOS. Underneath it uses two well-known open-source tools, yt-dlp and ffmpeg, and wraps them in a graphical app built with Tauri version 2, which combines Rust on the backend with a React frontend. The README presents it as a personal-use utility and reminds users to only download content they have the right to access and to respect each site's terms of service. The main difference from other yt-dlp wrappers, according to the README, is a built-in login window. The app opens a small browser window inside itself where the user can log in to a target site as if they were in a regular browser. Once you log in, the app captures the session cookies and passes them to yt-dlp automatically, so you no longer need to export a cookies.txt file by hand. Sites listed as supported for this login flow include YouTube, Bilibili, X (Twitter), Tencent Video, Douyin, TikTok, and Pinterest, while public videos on the roughly thousand sites yt-dlp supports can still be downloaded as a guest. Features include single-video downloads with quality selection, batch downloads from playlists or channels with filters for date range and keywords, three-stage quality picking that lets you choose codec (H.264, VP9, or AV1), resolution up to 4K, audio codec, and container format. Subtitles can be saved as separate .srt files or burned into the video. The app bundles its own copies of yt-dlp 2026.03.17 and ffmpeg 7.1.1 so a friend installing it does not need any other tools, and it can check GitHub for a newer yt-dlp and update the bundled copy. The README walks through installing from a .dmg, including a one-time xattr command needed because the app uses ad-hoc signing rather than a paid Apple Developer certificate. It also shows how to build from source with Rust, Node, and pnpm, explains the version-number scheme with an auto-incrementing build number, and lists known limits: no DRM-protected content, occasional Google blocks on the embedded WebView login, and progress percentages that come from polling the partial download file rather than from yt-dlp's own output.

Copy-paste prompts

Prompt 1
Walk me through running YtbDownGUI from source with pnpm tauri dev on Apple Silicon
Prompt 2
Show me where the WebView cookies are extracted and serialized into Netscape cookies.txt for yt-dlp
Prompt 3
Add a new supported login site to the accounts tab and define its marker cookie
Prompt 4
Replace the part-file polling progress with a real yt-dlp JSON progress hook
Open on GitHub → Explain another repo

Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.