A desktop music player built with Electron that streams audio from YouTube Music. Clean UI, no accounts, no ads.
Warning
The app is still constantly being worked on and may contain a few bugs or experimental features, use at your own discretion.
- Search — Find songs, artists, and albums via YouTube Music
- Playback — Stream audio directly with play/pause, seek, skip, volume
- Queue — View and manage upcoming tracks, drag reorder
- Smart Queue — Auto-fills with similar songs when the queue runs out
- Shuffle & Repeat — Shuffle queue, repeat one or all
- Playlists — Create, rename, delete, and add/remove tracks. Custom or auto-generated covers. Drag & drop songs into sidebar playlists
- Liked Songs — Heart any track to save it
- Synced Lyrics — Spotify-like synced lyrics from multi-source
- Artist Pages — Top songs, discography, monthly audience, fans also like, and live performances
- Follow Artists — Follow artists and see their recent releases on the home page
- Music Videos — Watch music videos in-app
- Discord Rich Presence — Show what you're listening to on Discord
- Cloud Sync — Sign in with email to sync your library across devices
- Themes — Built-in color themes
- Keyboard Shortcuts — Full keyboard control (see below)
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
You'll need Node.js (v18+) and yt-dlp installed on your system.
# Clone the repo git clone https://github.com/nyakuoff/Snowify.git cd snowify # Install dependencies npm install # Run npm start| Dependency | Purpose |
|---|---|
| Electron | Desktop app shell |
| ytmusic-api | YouTube Music search, artist & album data |
| yt-dlp | Extracts audio stream URLs (must be in PATH) |
| synclyrics | Synced lyrics from Musixmatch, LrcLib, Netease |
| Firebase | Authentication & cloud sync |
| Key | Action |
|---|---|
Space | Play / Pause |
← / → | Seek backward / forward 5s |
Ctrl+← / Ctrl+→ | Previous / Next track |
↑ / ↓ | Volume up / down |
/ | Focus search |
- Electron — Desktop framework
- ytmusic-api — YouTube Music metadata
- yt-dlp — Audio stream extraction
- synclyrics — Synced lyrics (Musixmatch, LrcLib, Netease)
- Firebase — Auth & Firestore cloud sync
- Discord RPC — Rich presence integration
- Outdated
This app is for personal and educational use only. It streams content from publicly available sources. I am not responsible for how anyone chooses to use it.
Snowify is growing super fast, and so are the costs to keep it running. If you love using Snowify and want to help it keep thriving, please consider supporting the project:
- 💝 Donate — All donations will be used to maintain Snowify
- ⭐ Star this repo — It really helps!
Every contribution keeps Snowify ad-free and fully open source. Thank you for being part of the community!
If you find bugs, have ideas, or want to clean something up, feel free to open an issue or a PR. All skill levels welcome.
Snowify supports multiple languages through JSON translation files in src/locales/. To contribute a translation:
-
Copy the English file — Duplicate
src/locales/en.jsonand rename it to your language's ISO 639-1 code (e.g.nl.jsonfor Dutch). -
Translate the values — Each file is a flat
"key": "value"JSON object. Translate only the values, never the keys. Keep any{{placeholder}}variables intact:"home.greeting.morning": "Goedemorgen", "queue.trackCount": "{{count}} nummers"
-
Register the language — Add the new language code to the
SUPPORTEDarray insrc/renderer/i18n.jsadd a<option>for it in the language selector insrc/renderer/index.htmland add it to the supported languages in the README. -
Open a PR — Submit your translation file along with the registration changes.
Currently supported: English, Spanish, Portuguese, French, German, Japanese, Korean, Chinese, Italian, Turkish, Russian, Hindi.
Note
AI Disclaimer: Parts of this project were assisted or written by AI. If that's something you're not comfortable with, no hard feelings, I understand and I don't force anyone to use it. The code may have flaws. If you spot something that could be better, contributions are very welcome. I'm still learning and would appreciate the help.






