Main Interface Overview
The main panel (MainPanel.java:30) is the primary interface for downloading media. It features:
- URL input field - Text field for pasting video URLs (
urlField) - Download button - Initiates the download process
- Audio-only checkbox - Extract audio as MP3 instead of video
- Progress bar - Real-time download progress tracking
- Play button - Opens the last downloaded file
- Advanced options - Custom yt-dlp arguments
Downloading Videos
Paste the Video URL
Copy a YouTube or supported platform URL and paste it into the URL field at the center of the main panel (
MainPanel.java:358).The field has a tooltip: “Paste Video URL”Click Download
Click the Download button to start the download process (
MainPanel.java:362).The application will:- Validate the URL is not empty
- Check that yt-dlp path is configured
- Retrieve the download directory from config
- Start a background download using SwingWorker
Monitor Progress
Once the download starts:
- The Download button changes to “Downloading…” and becomes disabled
- A progress bar appears showing real-time percentage completion (
MainPanel.java:382-384) - The progress bar parses yt-dlp output to extract percentage values (
MainPanel.java:630-637)
Download Completion
When the download completes successfully:
- A success dialog appears: “Download completed successfully!”
- The “Play Last Downloaded File” button becomes visible (
MainPanel.java:665) - The URL field displays: “Insert new URL to download new video”
- If M3U playlist creation is enabled, a playlist file is generated
The download runs in a background SwingWorker thread (
MainPanel.java:546) to prevent the UI from freezing during long downloads.Download Configuration
The download process uses several configuration options:yt-dlp Path
The application reads the yt-dlp executable path fromconfig.txt (MainPanel.java:174-191):
Download Directory
Media files are saved to the configured download directory (MainPanel.java:199-216):
%(title)s.%(ext)s (MainPanel.java:565)
Speed Limiting
If the speed limiter is enabled in Preferences, downloads are rate-limited using yt-dlp’s--limit-rate option (MainPanel.java:559-562):
Playing Downloaded Files
After a successful download, the Play Last Downloaded File button appears (MainPanel.java:386-395).
Click the Play button
The button opens the most recently downloaded file using your system’s default media player.
Advanced Options
The Advanced toggle button (tglAdvancedOptions) reveals a custom arguments panel for power users (MainPanel.java:785-796).
Using Custom Arguments
Click Advanced ▼
Click the Advanced ▼ button to expand the custom arguments panel.The button changes to Advanced ▲ when expanded.
Enter Custom yt-dlp Arguments
Enter any valid yt-dlp command-line arguments in the text area (
txtAreaCustomArgs).Example:Error Handling
The download process includes comprehensive error handling:Common Errors
Empty URL
Empty URL
Error: “Please enter a valid video URL”Cause: The URL field is empty or contains placeholder textSolution: Paste a valid video URL
yt-dlp Not Configured
yt-dlp Not Configured
Error: “yt-dlp path not configured. Please go to Edit > Preferences to set the path.”Cause: The
config.txt file doesn’t contain a valid yt-dlp pathSolution: Go to Preferences and set the yt-dlp locationDownload Failed
Download Failed
Error: “Download failed with exit code: X”Cause: yt-dlp process exited with a non-zero exit codeSolution: Check the console output for yt-dlp error messages. Common causes:
- Invalid URL
- Video unavailable or region-locked
- Network connectivity issues
- Disk space issues
Progress Tracking
The download progress is tracked by parsing yt-dlp’s stdout output (MainPanel.java:597-639):
Keyboard Shortcuts
- ESC - Exit the application (
MainPanel.java:158-168) - Enter (in URL field) - Trigger URL field action
Next Steps
Extract Audio
Learn how to download audio-only files as MP3
Manage Downloads
Browse, search, and manage your downloaded media

