spotube README

The project's README from github.com/team-spotube/spotube. As one markdown file: README.md.

Spotube Logo

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 😉

Visit the website Discord Server

Support me on Patron Buy me a Coffee

HackerNews

Donate to our Open Collective


Spotube Desktop

Spotube Mobile

🌃 Features

📜 ⬇️ 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 Windows Download
MacOS MacOS Download
Android APK download
Download from F-Droid
iOS Download iOS IPA
*iPA file only. Requires sideloading with AltStore or similar tools.
Flatpak

flatpak install com.github.KRTirtho.Spotube

Download on Flathub
AppImage AppImage's lacking stability led to it's temporary removal. More information at https://github.com/KRTirtho/spotube/issues/1082
Debian/Ubuntu Debian/Ubuntu Download

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 Fedora/OpenSuse Download

For Fedora: sudo dnf install ./Spotube-linux-x86_64.rpm

For OpenSuse: sudo zypper in ./Spotube-linux-x86_64.rpm

Linux (tarball) Tarball Download
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

GitHub Workflow Status

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

  1. Flutter - Flutter transforms the app development process. Build, test, and deploy beautiful mobile, web, desktop, and embedded apps from a single codebase
  2. 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.
  3. Musicbrainz - MusicBrainz is a MetaBrainz project that aims to create a collaborative music database that is similar to the freedb project.
  4. Listenbrainz - ListenBrainz is a open-source project by the MetaBrainz Foundation that allows users to crowdsource and publicly store their digital music listening data.
  5. Piped - Piped is a privacy friendly alternative YouTube frontend, which is efficient and scalable by design.
  6. Invidious - Invidious is an open source alternative front-end to YouTube.
  7. yt-dlp - A feature-rich command-line audio/video downloader.
  8. NewPipeExtractor - NewPipe's core library for extracting data from streaming sites.
  9. YouTubeExplodeDart - A port in dart of the youtube explode library. Supports several API functions without the need of Youtube API Key.
  10. LRCLib - A public synced lyric API.
  11. 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
  12. AUR - AUR stands for Arch User Repository. It is a community-driven repository for Arch-based Linux distributions users
  13. Flatpak - Flatpak is a utility for software deployment and package management for Linux
  14. SponsorBlock - SponsorBlock is an open-source crowdsourced browser extension and open API for skipping sponsor segments in YouTube videos.
  15. Inno Setup - Inno Setup is a free installer for Windows programs by Jordan Russell and Martijn Laan
  16. 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
  17. 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

  1. app_links - Android App Links, Deep Links, iOs Universal Links and Custom URL schemes handler for Flutter (desktop included).
  2. args - Library for defining parsers for parsing raw command-line arguments into a set of options and values using GNU and POSIX style options.
  3. audio_service - Flutter plugin to play audio in the background while the screen is off.
  4. audio_service_mpris - audio_service platform interface supporting Media Player Remote Interfacing Specification.
  5. 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.
  6. auto_route - AutoRoute is a declarative routing solution, where everything needed for navigation is automatically generated for you.
  7. auto_size_text - Flutter widget that automatically resizes text to fit perfectly within its bounds.
  8. bonsoir - A Zeroconf library that allows you to discover network services and to broadcast your own. Based on Apple Bonjour and Android NSD.
  9. cached_network_image - Flutter library to load and cache network images. Can also be used with placeholder and error widgets.
  10. connectivity_plus - Flutter plugin for discovering the state of the network (WiFi & mobile/cellular) connectivity on Android and iOS.
  11. device_info_plus - Flutter plugin providing detailed information about the device (make, model, etc.), and Android or iOS version the app is running on.
  12. dio - A powerful HTTP networking package,supports Interceptors,Aborting and canceling a request,Custom adapters, Transformers, etc.
  13. drift - Drift is a reactive library to store relational data in Dart and Flutter applications.
  14. 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.
  15. encrypt - A set of high-level APIs over PointyCastle for two-way cryptography.
  16. envied - Explicitly reads environment variables into a dart file from a .env file for more security and faster start up times.
  17. 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.
  18. file_selector - Flutter plugin for opening and saving files, or selecting directories, using native file selection UI.
  19. fluentui_system_icons - Fluent UI System Icons are a collection of familiar, friendly and modern icons from Microsoft.
  20. flutter_cache_manager - Generic cache manager for flutter. Saves web files on the storages of the device and saves the cache info using sqflite.
  21. flutter_discord_rpc - Discord RPC support for Flutter desktop platforms
  22. flutter_displaymode - A Flutter plugin to set display mode (resolution, refresh rate) on Android platform. Allows to enable high refresh rate on supported devices.
  23. 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.
  24. 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.
  25. flutter_hooks - A flutter implementation of React hooks. It adds a new kind of widget with enhanced code reuse.
  26. 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.
  27. flutter_native_splash - Customize Flutter's default white native splash screen with background color and splash image. Supports dark mode, full screen, and more.
  28. flutter_riverpod - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
  29. flutter_sharing_intent - A flutter plugin that allow flutter apps to receive photos, videos, text, urls or any other file types from another app.
  30. flutter_undraw - Undraw.co Illustrations for Flutter with customization options
  31. form_builder_validators - Form Builder Validators set of validators for FlutterFormBuilder. Provides common validators and a way to make your own.
  32. freezed_annotation - Annotations for the freezed code-generator. This package does nothing without freezed too.
  33. fuzzywuzzy - An implementation of the popular fuzzywuzzy package in Dart, to suit all your fuzzy string matching/searching needs!
  34. home_widget - A plugin to provide a common interface for creating HomeScreen Widgets for Android and iOS.
  35. hooks_riverpod - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
  36. html - APIs for parsing and manipulating HTML content outside the browser.
  37. html_unescape - A small library for un-escaping HTML. Supports all Named Character References, Decimal Character References and Hexadecimal Character References.
  38. http - A composable, multi-platform, Future-based API for HTTP requests.
  39. image_picker - Flutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera.
  40. intl - Contains code to deal with internationalized/localized messages, date and number formatting and parsing, bi-directional text, and other internationalization issues.
  41. local_notifier - This plugin allows Flutter desktop apps to displaying local notifications.
  42. logger - Small, easy to use and extensible logger which prints beautiful logs.
  43. 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.
  44. lrc - A Dart-only package that creates, parses, and handles LRC, which is a format that stores song lyrics.
  45. metadata_god - Plugin for retrieving and writing audio tags/metadata from audio files
  46. mime - Utilities for handling media (MIME) types, including determining a type from a file extension and file contents.
  47. 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)
  48. package_info_plus - Flutter plugin for querying information about the application package, such as CFBundleVersion on iOS or versionCode on Android.
  49. palette_generator - Flutter package for generating palette colors from a source image.
  50. 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.
  51. path_provider - Flutter plugin for getting commonly used locations on host platform file systems, such as the temp and app data directories.
  52. permission_handler - Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions.
  53. riverpod - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
  54. scroll_to_index - Scro

spotube (team-spotube/spotube)

Searching Database…

50.1K ·GitHub
What is this?Spotube is an open-source, cross-platform music streaming app for desktop and mobile that lets you bring your own music metadata, playlists, and audio sources through plugins instead of relying on one locked-in backend.
Is this just another Electron wrapper for a music service?No, it is built with Flutter for native performance and specifically calls itself out as not being an Electron app; it is a plugin-powered client that streams through whatever backend you configure rather than hosting its own music catalog.
How do I install it on my platform?Each OS has its own package: Flatpak, .deb/.rpm or AUR on Linux, Homebrew cask on macOS, choco/scoop/winget on Windows, APK/F-Droid on Android, and a sideloaded IPA on iOS. Nightly builds are published on GitHub Releases.
Do I need anything installed first, like MPV?Not stated as a separate manual requirement — Spotube bundles MPV as its internal playback engine and pulls in Flutter-based packages at build time, so the OS-specific installer method is the only thing you need.
Can I just grab it from the App Store or an AppImage?No. iOS only ships as an IPA file that requires manual sideloading, and the AppImage build was temporarily pulled because of stability problems.
Does Spotube track my listening or send data anywhere?No — the app explicitly avoids telemetry and diagnostics, and playback control happens locally on your device rather than on a remote server.
How does the plugin system actually work?Spotube is plugin-powered, so any music platform or custom service can be wired in via community-built plugins or your own, letting you choose your audio source instead of being tied to one provider.
What powers YouTube-based streaming under the hood?It uses privacy-friendly YouTube frontends and extractors like Piped, Invidious, yt-dlp, NewPipeExtractor, and YouTubeExplodeDart to pull audio without needing an official YouTube API key.
Does it show synced lyrics?Yes, time-synced lyrics work regardless of which plugin supplies the audio, backed by services like LRCLib.
Where does track metadata and scrobbling come from?Metadata is sourced from MusicBrainz, with ListenBrainz and Last.fm credited for listening-history and scrobbling-style features.
Size
147.3 MB
Stars
50.1K
Age
5y
Commits · 90 Days