JaTubePlayer is a feature-rich online and local media player built with Python, yt_dlp, and mpv. Designed for both online and offline playback, it supports online videos & live streams playback, playlist access, video archiving, secure OAuth login for personal content integration, and a lightweight GUI built with tkinter and sv_ttk.
Note: This application respects your privacy and encrypts Google credentials securely using a dual-key Fernet system. Our Fernet-based encryption module is already obfuscated for enhanced protection.
- Play local files and folders — enjoy your media directly from disk
- Stream online videos and live streams — just search or paste a link
- Search and play YouTube videos without leaving the app
- Supports more formats than WMP — including rare, uncommon file formats WMP can’t play
- Archive selected online videos from the listbox for offline viewing
- Get smart video recommendations based on your recent watch history
- Fullscreen mode support for an immersive playback experience
- “Open With” integration — launch videos directly from File Explorer
- Hot-update yt_dlp — simply replace the
yt_dlp.exeandyt_dlpfolder in_internal/to stay updated - Automatic version check — get notified if your
yt_dlpor player is out of date
- Access your personal YouTube playlists
- Browse your liked videos and subscribed channel list
⚠️ Client secrets and API keys are only required for these advanced features.
🔓 Basic functionality — local playback, video search, downloads — works fully without login.
You can enter your API key anytime inSettings.
- Music & video lovers who want full control
- Tech-savvy users tired of browser ads
- Anyone who wants to watch or listen offline
- Save lectures, music, or VODs for travel
- Use on low-resource systems (it's fast & lightweight)
- Double click the listbox item to play video
- space bar or click the video screen to pause/play
- version check system for both Player and yt_dlp
- Mouse wheel to adjust volume
Note:Please read the brief introduction of the relesase page to better understand more of the features and functions!
These are the minimum recommended specs for reference.
-
Processor (CPU):
- AMD Ryzen 3 1200
- Intel Core i3-6100
-
Memory (RAM):
- 8 GB
-
Graphics (GPU / iGPU):
- NVIDIA GeForce GTX 650, or GT1030
- AMD Radeon RX 460
- (Integrated options such as Intel UHD 610 are usable, but only for H.264 and VP9 8-bit — no HDR VP9 or AV1.)
-
Storage:
- At least 2 GB available.
-
Operating System:
- Windows 10 / 11 (64-bit)
- OAuth tokens are encrypted using Fernet with:
- A local machine-dependent key
- A second embedded static key inside the executable
- You can clear your local key via
Settings > Delete System Key. A new one is generated at next startup. - The encryption module is obfuscated for extra protection against tampering.
- Click the ⛶ icon beside the video screen to enter fullscreen
- Click the arrow icon at the bottom right to return to windowed mode
- Now v1.6.6 can toggle fullscreen with esc key
- Enter Playlist: Load your YouTube playlist (retrieved once per session after login).
- After selected a playlist, press the button again to get into the playlist!!
- Retreive video info including upload channel, upload date, description, video url with yt_dlp
-
Sub System:
- Stores your YouTube subscribed channel list along with the timestamp of each channel’s latest video at the time of retrieval locally.
- When accessing, the player uses the saved timestamps to check and display each channel’s newest content.
-
Like System: Displays your YouTube liked videos based on timestamp order. Navigate entries via
Like Prev/Like Nextbuttons. Pagination is not used.
-
Update Lists
update Subscribe channel list,update Liked video list,Update YouTube playlists- Fetch the latest data manually from YouTube server
-
Google Account & System Key
Login Google: Login and create a local encrypted token for YouTube data accessLogout Google: Delete the stored token, clear liked videos and subscriptionsDelete system key: Clear local encryption keys; new keys will be auto-generated at next startup
-
Download Video
- Select a format (
mp3ormp4) - Choose an available resolution
Download Selected Video: Downloads todownload_output/directory
Note:Do not click on other video while downloading
- Select a format (
-
YouTube API Key
Enter YouTube API: Insert the API keyDelete Stored API: Remove the saved API key
-
Cookie Management
Select Cookie: Load a YouTube cookie into the playerRemove Stored Cookie: Delete the loaded cookie from the player
Cookies are optional. Only needed to bypass the error's "Sign in to confirm you are not a robot" restriction.
Cookies are used solely for authentication bypass — no personal data is accessed or stored. -
Client Secret Management
Select Client Secret: Load your OAuth client_secret.jsonRemove Stored Client Secret: Delete the loaded secret
-
Advanced Player Setting
Max resolution: Set maximum playback resolution (to save PC resources)Auto retry: Enable automatic retry if MPV fails to loadFullscreen with console: Toggle between full-frame maximize vs real fullscreen behaviorShow MPV log: Observe error logs from MPV for troubleshooting
-
Recommendation & History (version >= v1.6.9)
Record History: When enabled, stores tags and channel info of watched videos locallyReset History: Clears all recorded data and restores default recommendation settings
-
Version & Info Panel
- Display current and latest versions of yt-dlp and JaTubePlayer
- Option to toggle "check for updates at startup"
- Direct links to yt-dlp and JaTubePlayer websites
-
Quick Startup Init (Ver 1.7.1 or up)
(Below the toggle): Shows which startup mode is currently active
toggle quick startup init: Enable or disable the startup auto-load featureinit search: Auto-start with a YouTube search (requires pressingset init search)init playlist: Load a selected YouTube playlist at launch (pressget→ select →set)init local folder: Auto-play from a local folder of media filesinit Recommendation: Load smart video suggestions- Requires
Record Historyto be ON
- Requires
set init ...buttons: Save your selected mode and parameters
- Go https://github.com/yt-dlp/yt-dlp/releases and download both
yt-dlp.exeandyt-dlp.tar.gz- Replace the
yt-dlp.exein the_internalfolder - Unzip the
yt-dlp.tar.gz, and find theyt_dlpfolder inyt-dlp.tar.gz(or yt-dlp~)/yt-dlp - Replace the
yt_dlpfolder in_internal.
- Replace the
- When the currently playing stream ends, please select another video or stream to continue playback.
- Before accessing the subscription list, it’s recommended to update it via
Settings > Update Subscribe Channel List. - We suggest not using the Recommendation List too frequently, as it may trigger the request limit of
yt_dlp. - If you open the application frequently, consider disabling Quick startup init in the
Settingspage to improve startup speed and avoid getting rate limited byytdlp. - For the best experience, please read this README and the release notes.
- While downloading, don't click on other video as it might cause unexpected error
-
If the player suddenly pauses:
- Try clicking the pause/play button again.
- If it still doesn't resume, try reloading the video.
-
If
yt_dlpprompts for authentication:- First, try reloading the video.
- If the issue persists, go to
Settings > Select Cookieand load your cookie file. This usually resolves the problem.
Follow this step-by-step guide to use advanced features (like accessing your playlists or subscriptions):
- Visit https://console.cloud.google.com/
- In the top bar, click the Project dropdown → New Project → enter any project name → click Create
- From the main dashboard, go to
API & Services > Library - Search for YouTube Data API v3, click it, and click Enable
- Go to
OAuth Consent Screenon the left - Choose External user type
- Fill in App name, User support email, and add your email in Developer Contact Info
- Click Save and Continue (Scopes can be left as default)
- In the Test Users section, add your Google account email (required for free-tier testing)
- Go to
API & Services > Credentials - Click
+ Create Credentials > OAuth Client ID - Choose Desktop App, name it anything
- Click Create and download the
client_secrets.json - Rename the file exactly to
client_secrets.jsonand place it inside the_internal/folder
- In the same
Credentialspage, click+ Create Credentials > API Key - Copy the API Key
- Open JaTubePlayer and go to
Settings > Enter YouTube API, paste your key - (Optional but recommended) In the same credentials list, click the 3-dot menu beside the key →
Edit API Key- Set Application Restrictions: None
- Set API Restrictions: Restrict to only
YouTube Data API v3
- Python 3.11+
tkinter,sv_ttk,ffmpeg,mpv,cryptography,google-auth,google-api-python-client,Pillow,requestsyt_dlp(included in_internal/folder)ffmpeg.exe,ffprobe.exe(bundled in root directory)libmpv-2.dll(inside_internal/)
All required binaries, modules, and dependencies must be placed in the same directory or proper subfolder (
_internal/, etc.) alongside the main executable.
Due to sensitive encryption and API mechanisms, pull requests (PRs) are not accepted directly.
If you have ideas, suggestions, or improvements, feel free to open an issue first to discuss proposed changes.
Forking the project and experimenting locally is always welcome.
To help users better understand how JaTubePlayer works, we’ve decided to open-source selected modules of the application.
You can refer to the corresponding _summary.md files and the .py source code available in the main branch.
- YouTube Data API (v3)
- python mpv
yt_dlp- Google OAuth Libraries
For bugs or feature requests, open an issue in this repo.


