VideoDownloader is a Windows desktop app for downloading videos via yt-dlp, with a bundled custom FFmpeg for merging and remuxing. Paste a link or a list of links, pick a video/audio quality or let it auto-select the best available, and queue batch downloads with configurable concurrency, per-job progress, and cancel support. Every attempt is logged to a searchable download history with one-click redownload. Available in English and Polish, with Light/Dark/System UI themes.
README
VideoDownloader
A Windows desktop app (.NET 8, WPF) for downloading videos via yt-dlp, with a stripped-down FFmpeg bundled for post-processing/remuxing.
Features
Paste a link (or let it auto-detect one from the clipboard) and pick a video/audio quality, or let it auto-select the best available. Videos with multiple audio tracks (e.g. original + auto-dubbed languages) and HLS/m3u8 streams are supported.
Batch downloads: drag-and-drop a list of URLs, or load them from a .txt file, to queue many downloads at once.
Configurable number of simultaneous downloads.
Per-job progress (percentage, speed, ETA) with cancel support.
Automatically keeps yt-dlp.exe up to date (yt-dlp -U) on startup. The self-updating copy lives in %LOCALAPPDATA%\APPIT\VideoDownloader, so updates work without admin rights and never touch the installed files.
UI available in English and Polish (auto-detected from the OS, or set manually).
Light/Dark/System UI theme, switchable at runtime.
Download history: every attempt (completed, failed, or canceled) is logged to a local SQLite database, browsable with search, one-click redownload, "open in browser", and a clear-history action.
Installing
Download the .msi installer or the portable .zip from Releases, or install with winget:
winget install APPIT.VideoDownloader
Solution structure
VideoDownloader.Wpf — the WPF application (net8.0-windows). Uses YoutubeDLSharp to drive yt-dlp.exe.
VideoDownloader.Core — shared, UI-framework-agnostic library: download/queue logic, localization, registry persistence, error parsing, the yt-dlp -U self-updater (Tools/YtDlpUpdater.cs), and a SQLite-backed download history (History/).
FFmpegBuild — native (vcxproj) project that produces the FFmpeg binaries bundled with the app. Not part of the default solution build; see FFmpegBuild/README.md for how to (re)build it.
Installer — WiX v5 project (VideoDownloader.Installer.wixproj) producing the MSI package (Installer/bin/x64/Release/VideoDownloader-{version}-Setup.msi), installed per-machine with a Start Menu shortcut.
ExternalLib — third-party executables (yt-dlp.exe, ffmpeg.exe) copied into the build output on PostBuild.
Requirements
Windows
.NET 8 SDK
The WiX Toolset (dotnet tool install --global wix) if you want to build the MSI installer — not needed to just build/run the app. The HeatWave Visual Studio extension adds IDE support for editing/building it inside Visual Studio.
Building
Open VideoDownloader.sln in Visual Studio and build, or from the command line: