A GUI For youtube-dl. Capable of many features + spotify-youtube translation support.
This is a python program providing an implementation of YTDL in a GUI form.
It uses a tkinter GUI along with the youtube_dl module for python to provide a simple, easy-to-use user interface.
The best way to install the program for use is to use the installer provided under the releases section.
Clone the repository and create a virtual env (NAMED ".venv") in the same file as __main__.py.Install the requirements into the environment.
git clone https://github.com/alex-ljohnson/ytdl-gui.git
cd ytdl-gui
python -m venv .venv
.\.venv\Scripts\activate"
pip install -r requirement.txt- Minimum python version:
3.10(type unions)
First time opening the program, you will be asked to give a directory. This will be the location which file will be downloaded to and scans will be taken from.
Once the GUI is open you must enter one url on each line of the textbox in the GUI window. Then, once saved, you may click the download button.
Under 'tools' you will find 'Download Options...'. When you click this a new menu pops up with different options for how and what should be downloaded.
Under 'file' you will find 'Preferences'. Clicking this brings up a menu with settings to customise the way the app behaves.
For more information visit "Help > Help & Instructions" in the app's menu.
In the view menu, under 'Font...' you can find a menu which allows you to select a font to be used in the text boxes.
If you wish to add custom functionality to the program you can write your own python extensions. All python modules under the "(_internal)/modules/extensions" folder will be loaded at runtime.
from modules.extension import Extension
# Class must inherit from Extension in order to be loaded
class MyExtension(Extension):
_name = "My custom extension" # (RECOMMENDED) Alternate name for use in UI
def __init__(self): # Called when first loaded after start-up
self.variable = "xyz"
# Called when enabled in menu by user
def enable(self):
super().enable() # (REQUIRED) Signals that extension is on and ready for use
# Logic here
def disable(self):
super().disable()
# Logic hereThe packages available to import in your module include:
- Python Standard library
- altgraph==0.17.5
- certifi==2026.2.25
- charset-normalizer==3.4.7
- idna==3.11
- mutagen==1.47.0
- packaging==26.1
- pefile==2024.8.26
- pillow==12.2.0
- psutil==7.2.2
- pyinstaller==6.19.0
- pyinstaller-hooks-contrib==2026.4
- pywin32-ctypes==0.2.3
- redis==7.4.0
- requests==2.33.1
- setuptools==82.0.1
- spotipy==2.26.0
- ttkthemes==3.3.0
- urllib3==2.6.3
- validators==0.35.0
- wheel==0.46.3
- yt-dlp==2026.3.17