A cross-platform extensible open-source music streaming platform.
Bring your own music metadata/playlist/audio-source with plugins created by community or by yourself. A small step towards the decentralized music streaming era!
Btw it's not just another Electron app 😉






🌃 Features
- 🧩 Plugin powered, supports any platform or custom music service through plugins.
- 🗺️ Community driven plugins for popular platforms or create your own.
- ⬇️ Freely downloadable tracks with tagged metadata.
- 🖥️ 📱 Cross-platform support.
- 🪶 Small size & less data usage.
- 🕒 Time synced lyrics regardless of the plugin support.
- ✋ No telemetry, diagnostics or user data collection.
- 🚀 Native performance.
- 📖 Open source/libre software.
- 🔉 Playback control is done locally, not on the server.
📜 ⬇️ Installation guide
New versions usually release every 3-4 months.
This handy table lists all the methods you can use to install Spotube:
| Platform |
Package/Installation Method |
| Windows |
|
| MacOS |
|
| Android |
|
| iOS |
*iPA file only. Requires sideloading with AltStore or similar tools.
|
| Flatpak |
flatpak install com.github.KRTirtho.Spotube
|
| AppImage |
AppImage's lacking stability led to it's temporary removal. More information at https://github.com/KRTirtho/spotube/issues/1082 |
| Debian/Ubuntu |
Then run: sudo apt install ./Spotube-linux-x86_64.deb
|
| Arch/Manjaro |
With pamac: sudo pamac install spotube-bin
With yay: yay -Sy spotube-bin
|
| Fedora/OpenSuse |
For Fedora: sudo dnf install ./Spotube-linux-x86_64.rpm
For OpenSuse: sudo zypper in ./Spotube-linux-x86_64.rpm
|
| Linux (tarball) |
|
| Macos - Homebrew |
brew tap krtirtho/apps
brew install --cask spotube
|
| Windows - Chocolatey |
choco install spotube
|
| Windows - Scoop |
scoop bucket add extras
scoop install spotube
|
| Windows - WinGet |
winget install --id KRTirtho.Spotube
|
🔄 Nightly Builds
Grab the latest nightly builds of Spotube from the GitHub Releases.
🕳️ Building from source

You can compile Spotube's source code by following these instructions.
👥 The Spotube team
💼 License
Spotube is open source and licensed under the BSD-4-Clause License.
If you are curious, you can read the reason of choosing this license.
[Click to show] 🙏 Services/Package/Plugin Credits
Services
- Flutter - Flutter transforms the app development process. Build, test, and deploy beautiful mobile, web, desktop, and embedded apps from a single codebase
- MPV - mpv is a free (as in freedom) media player for the command line. It supports a wide variety of media file formats, audio and video codecs, and subtitle types.
- Musicbrainz - MusicBrainz is a MetaBrainz project that aims to create a collaborative music database that is similar to the freedb project.
- Listenbrainz - ListenBrainz is a open-source project by the MetaBrainz Foundation that allows users to crowdsource and publicly store their digital music listening data.
- Piped - Piped is a privacy friendly alternative YouTube frontend, which is efficient and scalable by design.
- Invidious - Invidious is an open source alternative front-end to YouTube.
- yt-dlp - A feature-rich command-line audio/video downloader.
- NewPipeExtractor - NewPipe's core library for extracting data from streaming sites.
- YouTubeExplodeDart - A port in dart of the youtube explode library. Supports several API functions without the need of Youtube API Key.
- LRCLib - A public synced lyric API.
- Linux - Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged in a Linux distribution
- AUR - AUR stands for Arch User Repository. It is a community-driven repository for Arch-based Linux distributions users
- Flatpak - Flatpak is a utility for software deployment and package management for Linux
- SponsorBlock - SponsorBlock is an open-source crowdsourced browser extension and open API for skipping sponsor segments in YouTube videos.
- Inno Setup - Inno Setup is a free installer for Windows programs by Jordan Russell and Martijn Laan
- F-Droid - F-Droid is an installable catalogue of FOSS (Free and Open Source Software) applications for the Android platform. The client makes it easy to browse, install, and keep track of updates on your device
- LastFM - Last.fm is a music streaming and discovery platform that helps users discover and share new music. It tracks users' music listening habits across many devices and platforms.
Dependencies
- app_links - Android App Links, Deep Links, iOs Universal Links and Custom URL schemes handler for Flutter (desktop included).
- args - Library for defining parsers for parsing raw command-line arguments into a set of options and values using GNU and POSIX style options.
- audio_service - Flutter plugin to play audio in the background while the screen is off.
- audio_service_mpris - audio_service platform interface supporting Media Player Remote Interfacing Specification.
- audio_session - Sets the iOS audio session category and Android audio attributes for your app, and manages your app's audio focus, mixing and ducking behaviour.
- auto_route - AutoRoute is a declarative routing solution, where everything needed for navigation is automatically generated for you.
- auto_size_text - Flutter widget that automatically resizes text to fit perfectly within its bounds.
- bonsoir - A Zeroconf library that allows you to discover network services and to broadcast your own. Based on Apple Bonjour and Android NSD.
- cached_network_image - Flutter library to load and cache network images. Can also be used with placeholder and error widgets.
- connectivity_plus - Flutter plugin for discovering the state of the network (WiFi & mobile/cellular) connectivity on Android and iOS.
- device_info_plus - Flutter plugin providing detailed information about the device (make, model, etc.), and Android or iOS version the app is running on.
- dio - A powerful HTTP networking package,supports Interceptors,Aborting and canceling a request,Custom adapters, Transformers, etc.
- drift - Drift is a reactive library to store relational data in Dart and Flutter applications.
- duration - Utilities to make working with 'Duration's easier. Formats duration in human readable form and also parses duration in human readable form to Dart's Duration.
- encrypt - A set of high-level APIs over PointyCastle for two-way cryptography.
- envied - Explicitly reads environment variables into a dart file from a .env file for more security and faster start up times.
- file_picker - A package that allows you to use a native file explorer to pick single or multiple absolute file paths, with extension filtering support.
- file_selector - Flutter plugin for opening and saving files, or selecting directories, using native file selection UI.
- fluentui_system_icons - Fluent UI System Icons are a collection of familiar, friendly and modern icons from Microsoft.
- flutter_cache_manager - Generic cache manager for flutter. Saves web files on the storages of the device and saves the cache info using sqflite.
- flutter_discord_rpc - Discord RPC support for Flutter desktop platforms
- flutter_displaymode - A Flutter plugin to set display mode (resolution, refresh rate) on Android platform. Allows to enable high refresh rate on supported devices.
- flutter_feather_icons - Feather is a collection of simply beautiful open source icons. Each icon is designed on a 24x24 grid with an emphasis on simplicity, consistency and usability.
- flutter_form_builder - This package helps in creation of forms in Flutter by removing the boilerplate code, reusing validation, react to changes, and collect final user input.
- flutter_hooks - A flutter implementation of React hooks. It adds a new kind of widget with enhanced code reuse.
- flutter_inappwebview - A Flutter plugin that allows you to add an inline webview, to use an headless webview, and to open an in-app browser window.
- flutter_native_splash - Customize Flutter's default white native splash screen with background color and splash image. Supports dark mode, full screen, and more.
- flutter_riverpod - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
- flutter_sharing_intent - A flutter plugin that allow flutter apps to receive photos, videos, text, urls or any other file types from another app.
- flutter_undraw - Undraw.co Illustrations for Flutter with customization options
- form_builder_validators - Form Builder Validators set of validators for FlutterFormBuilder. Provides common validators and a way to make your own.
- freezed_annotation - Annotations for the freezed code-generator. This package does nothing without freezed too.
- fuzzywuzzy - An implementation of the popular fuzzywuzzy package in Dart, to suit all your fuzzy string matching/searching needs!
- home_widget - A plugin to provide a common interface for creating HomeScreen Widgets for Android and iOS.
- hooks_riverpod - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
- html - APIs for parsing and manipulating HTML content outside the browser.
- html_unescape - A small library for un-escaping HTML. Supports all Named Character References, Decimal Character References and Hexadecimal Character References.
- http - A composable, multi-platform, Future-based API for HTTP requests.
- image_picker - Flutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera.
- intl - Contains code to deal with internationalized/localized messages, date and number formatting and parsing, bi-directional text, and other internationalization issues.
- local_notifier - This plugin allows Flutter desktop apps to displaying local notifications.
- logger - Small, easy to use and extensible logger which prints beautiful logs.
- logging - Provides APIs for debugging and error logging, similar to loggers in other languages, such as the Closure JS Logger and java.util.logging.Logger.
- lrc - A Dart-only package that creates, parses, and handles LRC, which is a format that stores song lyrics.
- metadata_god - Plugin for retrieving and writing audio tags/metadata from audio files
- mime - Utilities for handling media (MIME) types, including determining a type from a file extension and file contents.
- open_file - A plug-in that can call native APP to open files with string result in flutter, support iOS(UTI) / android(intent) / PC(ffi) / web(dart:html)
- package_info_plus - Flutter plugin for querying information about the application package, such as CFBundleVersion on iOS or versionCode on Android.
- palette_generator - Flutter package for generating palette colors from a source image.
- path - A string-based path manipulation library. All of the path operations you know and love, with solid support for Windows, POSIX (Linux and Mac OS X), and the web.
- path_provider - Flutter plugin for getting commonly used locations on host platform file systems, such as the temp and app data directories.
- permission_handler - Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions.
- riverpod - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
- scroll_to_index - Scro