DEV Community

Cover image for Building a Windows yt-dlp GUI with Tauri, React, and Rust
HalalFrFr
HalalFrFr

Posted on

Building a Windows yt-dlp GUI with Tauri, React, and Rust

I built HalalDL because I wanted a Windows-first desktop workflow for yt-dlp that did not hide what yt-dlp was doing.

yt-dlp is already powerful. The problem I wanted to solve was not the engine. It was the day-to-day Windows experience around it: setup, presets, ffmpeg, tool paths, logs, and installer choices.

What HalalDL is

HalalDL is a local-first Windows desktop GUI for yt-dlp.

It currently focuses on:

  • Windows 10/11 x64
  • preset-driven downloads
  • visible raw yt-dlp logs
  • Full and Lite installers
  • WinGet support
  • no account system
  • no cloud service
  • no telemetry

Repo:
https://github.com/Asdmir786/HalalDL

Website:
https://halaldl.vercel.app

HalalDL downloads screen showing URL input, preset selection, queue controls, and the main download area

Main download queue and URL flow.

Why Tauri

I chose Tauri because I wanted a desktop app with a web UI, but I did not want to ship a huge runtime just to wrap a CLI workflow.

The stack is:

  • Tauri v2
  • React
  • TypeScript
  • Rust
  • Vite
  • Tailwind CSS

The frontend handles the user flow, presets, pages, and state. The Tauri/Rust side handles the local desktop integration and process/tooling boundary.

Full vs Lite builds

One design decision was to split releases into Full and Lite builds.

Full is for people who want the easiest install path.

Lite is for people who already manage their own yt-dlp, ffmpeg, aria2, and related tools.

That split exists because yt-dlp users are not all the same. Some want convenience. Others want control.

HalalDL presets screen showing built-in yt-dlp download profiles for video, audio, subtitles, compatibility, and editor workflows

Preset-driven download profiles.

Why raw logs matter

A lot of GUIs hide the backend output behind generic progress text.

I wanted the opposite.

If yt-dlp says something useful, the user should be able to see it. That makes bug reports better, makes troubleshooting easier, and avoids pretending the GUI knows more than the underlying tool.

Installer trust

One rough edge right now is code signing.

HalalDL releases are not code-signed yet, so Windows SmartScreen may warn. For now, I try to make that clear instead of hiding it:

  • source code is public
  • release workflows are public
  • SHA256 checksums are attached to releases
  • downloads point to GitHub Releases

Code signing is something I want to improve later.

HalalDL tools screen showing status checks for yt-dlp, ffmpeg, aria2, and optional runtime support

Tool status checks for yt-dlp, ffmpeg, aria2, and optional runtime support.

What I learned

The hard part was not just calling yt-dlp.

The hard part was making the surrounding workflow understandable:

  • what preset should a beginner choose?
  • what should happen when ffmpeg is missing?
  • how visible should advanced options be?
  • how do you explain Full vs Lite without confusing people?
  • how do you make an unsigned Windows app feel trustworthy?

What I want feedback on

I am still looking for feedback from real yt-dlp users and Windows users:

  • Are the default presets useful?
  • Is Full vs Lite clear?
  • What would make the installer feel more trustworthy?
  • What logs or diagnostics should be easier to export?
  • What would make this worth using over raw yt-dlp or existing GUIs?

HalalDL is open source here:

https://github.com/Asdmir786/HalalDL

Top comments (0)