CLI tool
mhogomchungu/media-downloader avatar
mhogomchungu/media-downloader

Media Downloader: a Qt front end for yt-dlp and seven other CLI downloaders

Media Downloader is a Qt/C++ front end to yt-dlp, youtube-dl, gallery-dl, lux, you-get, svtplay-dl, aria2c, wget and safari books..

5,023 stars341 forksC++GPL-2.0

At a glance

What is it?
Media Downloader is a GPL-2.0 Qt/C++ desktop GUI that wraps yt-dlp, gallery-dl, you-get, svtplay-dl, aria2c, wget and get-sauce behind one window. The default backend is yt-dlp, and the app downloads the current yt-dlp build itself on first run.
Who is it for?
Adopt Media Downloader if you want yt-dlp's coverage with a window for batch links, playlist monitoring and format presets, and you are comfortable that the app fetches yt-dlp and extensions from the network on first run. Do not adopt it if you need a browser extension, a hosted web app, or a notarized macOS bundle, because the README offers none of those and says the macOS bundles may be reported as corrupted.
Can I use it commercially?
Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What Media Downloader adds on top of the command line tools

yt-dlp already downloads from a very large set of sites. What it does not give you is a window in which you can paste forty links, watch each one's progress, pick a format preset per download, and keep a list of playlists you want to check again later. That is the gap Media Downloader fills. It is a Qt/C++ front end, described in the README as a GUI frontend to CLI-based tools that deal with downloading online media, and yt-dlp is the default backend.

The audience is a desktop user who is willing to install a native application rather than run a command, and who wants more than one downloader engine available from the same interface. The README lists yt-dlp, gallery-dl, you-get, svtplay-dl, aria2c, wget and get-sauce as the tools the GUI fronts. That mix matters: gallery-dl targets image galleries, svtplay-dl targets Swedish broadcasters, and aria2c and wget are general-purpose transfer tools rather than site scrapers. One GUI, several engines, each installed separately as an extension.

How the GUI talks to yt-dlp and the other extensions

The architecture is a wrapper, not a reimplementation. Media Downloader does not parse site pages itself; it invokes the installed CLI tool and reads what that tool reports. The repository layout supports this: there is an extensions/ directory at the top level, and the README points to a wiki page that manages the list of supported extensions.

The consequence is that site support is exactly the site support of the backend you install. If yt-dlp stops handling a site, the GUI stops handling it too, and the fix is a newer yt-dlp, not a newer Media Downloader. The README acknowledges this dependency by making the first run a network operation: the app attempts to download the latest version of yt-dlp when you start it for the first time. Installing most extensions also causes the app to access the internet to fetch the extension's executable.

Two features follow from having a persistent GUI rather than a shell. The first is an unlimited number of concurrent downloads, which the README flags with an explicit warning that too many concurrent downloads may cause the host to ban you. The second is batch input: you can enter individual links in the UI or tell the app to read them from a local file. Playlist downloads and a managed list of playlist links for monitoring subscriptions round out the set.

Installing Media Downloader on Linux, Windows and macOS

On Fedora the project is in the official repositories, so installation is one command. The README gives it directly:

bash
sudo dnf -y install media-downloader

After that, launch the application from your desktop menu or by running media-downloader. The README states that you should have internet access on this first launch, because the app will try to fetch the latest yt-dlp for you.

Windows users have an installer for 64-bit systems built with Qt6, with a minimum requirement of Windows 10, and a 32-bit Qt5 installer with a minimum requirement of Windows 7. A portable ZIP exists for both architectures, and scoop can install it:

powershell
scoop bucket add extras
scoop install media-downloader

The portable build keeps everything in the application folder and does not need to be installed first. Note the README's warning that Windows Defender and other antivirus tools occasionally flag this application as a virus or potentially unwanted, which the project tracks as false positives.

macOS users get arm64 and x86_64 DMG bundles, and the README says these work on macOS 14.0 or later. It also warns that the bundles are not notarized, so the system may report them as corrupted. Flatpak users can install from Flathub, AppImage users can get a package from the pkgforge-dev repository, and Arch users can build from the AUR package. Building from source on Linux is a clone plus a shell script:

bash
git clone https://github.com/mhogomchungu/media-downloader && cd media-downloader
chmod +x build_linux.sh
./build_linux.sh

The repository also carries build_fedora.sh and build_arch.sh for those distributions, and build_linux-qt5.sh for a Qt5 build.

Your first batch download and where the extensions live

The GUI opens on a tabbed window. The Configure tab contains an Extensions sub tab, and that is where you add backends beyond the default. The README describes the flow: go to Configure, then Extensions, click Add An Extension, and select the extension you want from the list. Installing one downloads that tool's executable, so the app needs network access at this point.

Once yt-dlp is present, the practical first use is a batch. Paste links into the input area, or point the app at a local file of links, and start the downloads. If a site offers several formats, the GUI presents its configurable list of preset options so you can choose one rather than typing format selectors. For a playlist URL, the playlist download path handles the whole list. If you want to keep an eye on a channel over time, the playlist link management feature stores the link so you can check it again rather than re-pasting it.

Concurrency is worth setting deliberately. The README allows an unlimited number of simultaneous downloads and warns in the same breath that this can get you banned by the host. A modest number is the safer starting point; the GUI does not appear to cap it for you.

Language coverage is broad for a project of this kind. The README lists English, Chinese, Spanish, Polish, Turkish, Russian, Japanese, French, Italian, Portuguese, Arabic, Korean, Swedish, German, Greek and Ukrainian.

Where Media Downloader is the wrong tool

The most concrete limitation is packaging trust on macOS. The README states plainly that the DMG bundles are not notarized and that the system may report them as corrupted, then refers the reader to the internet for instructions on installing non-notarized bundles. If you manage Macs under a policy that blocks unsigned applications, this project is not a drop-in.

The second is the antivirus situation on Windows. The project treats Defender detections as false positives and tracks them in an issue, but a false positive still costs you time, and on a managed machine it may cost you the install entirely.

The third is the first-run network dependency. The application wants to download yt-dlp for you, and extensions fetch their own executables. On an air-gapped machine, or one behind a proxy that blocks those hosts, the GUI starts without a working backend. The README does not document an offline install path for the bundled yt-dlp.

Finally, the wrapper design means the GUI is only as current as the backend it invokes. When a site changes and yt-dlp ships a fix, you are waiting on the yt-dlp update, not on Media Downloader. That is normally an advantage, because yt-dlp releases quickly, but it does mean the GUI's own release cadence tells you little about whether a given site works today.

How it compares with running yt-dlp directly

The honest alternative is yt-dlp itself, and the difference is not capability but interface. yt-dlp gives you flags, config files and a terminal; Media Downloader gives you a persistent window with format presets, a batch link box, playlist monitoring and a queue you can watch. If you already have a yt-dlp config file you like, or you script downloads in a pipeline, the GUI adds a layer you will not use.

The other comparison worth making is within the project's own extension list. aria2c and wget are general transfer tools, useful when you have a direct URL and want segmented or resumable downloading rather than site extraction. gallery-dl is the opposite case: it exists for image galleries, where yt-dlp is not the right backend. Media Downloader's value proposition is that you can install both and use the same window, rather than remembering which tool handles which URL.

A browser extension is a different shape of solution and this project is not one. The README describes a desktop application with packages for Fedora, Windows, macOS, Flathub, AppImage and the AUR. If you want a button in your browser toolbar, look elsewhere.

Licence, releases and what upgrades cost you

Media Downloader is GPL-2.0. The repository carries GPLv2, GPLv3, LICENSE and LICENSE.txt files, so if you plan to redistribute a modified build, read those files rather than assuming a single licence text applies to every part. This is a description of what the repository contains, not legal advice.

Upgrade cost is low for the application itself. Releases 5.6.4, 5.6.5 and 5.6.6 arrived between 2026-08-02 and 2026-09-09, and the last push to the main branch was on 2026-09-22, so the project is being worked on now. Because the GUI delegates the hard part to yt-dlp, a stale Media Downloader install is usually still functional as long as the backend updates.

That cuts both ways. You are maintaining two things: the GUI package and the CLI tools behind it. The README's first-run behaviour handles the yt-dlp part automatically, which reduces the burden, but it also means the version of yt-dlp on your disk is managed by the application rather than by your package manager. If you prefer to pin yt-dlp yourself, check whether the GUI respects an existing binary before you rely on it.

Editorial conclusion

Adopt Media Downloader if you want yt-dlp's coverage with a window for batch links, playlist monitoring and format presets, and you are comfortable that the app fetches yt-dlp and extensions from the network on first run. Do not adopt it if you need a browser extension, a hosted web app, or a notarized macOS bundle, because the README offers none of those and says the macOS bundles may be reported as corrupted. Before committing, install the yt-dlp extension from the Configure tab, then Extensions, and confirm the app can reach the network, since that first fetch is what makes the GUI usable at all.

Frequently asked questions

Is Media Downloader safe?

The README addresses this directly: it states that Windows Defender and other antivirus tools occasionally report the application as a virus or potentially unwanted, that these are false positives, and that they are tracked in the project's issue tracker. The macOS bundles are not notarized, which is why the system may report them as corrupted.

How do I install Media Downloader?

On Fedora it is in the official repositories, so sudo dnf -y install media-downloader works. Windows users can run the Qt6 installer for 64-bit systems or install the portable build with scoop, and macOS users can download an arm64 or x86_64 DMG. Linux users also have Flathub, AppImage, AUR and openSUSE build service options.

How do I use Media Downloader for bulk downloads?

The README states that batch downloads work either by entering individual links in the UI or by telling the app to read them from a local file. It also notes that concurrent downloads are unlimited, with a warning that too many at once may cause the host to ban you.

Official sources

  1. Issues
  2. License: GPL-2.0
  3. mhogomchungu/media-downloader on GitHub
  4. README
  5. Releases
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.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/mhogomchungu-media-downloader.svg)](https://hysenlabs.com/projects/mhogomchungu-media-downloader)