Top Related Projects
Spotify for the terminal written in Rust 🚀
Cross-platform ncurses Spotify client written in Rust, inspired by ncmpc and the likes.
A spotify daemon
Open Source Spotify client library
Quick Overview
Spotube is an open-source Spotify client that allows users to stream music without premium subscriptions. It uses the Spotify API for metadata and YouTube for audio sources, providing a free alternative to the official Spotify app with additional features and customization options.
Pros
- Free streaming without ads or premium subscription
- Cross-platform support (Windows, macOS, Linux, Android)
- Customizable interface with themes and layouts
- Offline playback and playlist syncing capabilities
Cons
- Potential legal concerns due to using YouTube as an audio source
- May not have all features available in the official Spotify app
- Requires manual installation and updates
- Possible audio quality differences compared to official Spotify streams
Getting Started
To get started with Spotube:
- Visit the Spotube GitHub releases page
- Download the appropriate version for your operating system
- Install the application following the platform-specific instructions
- Launch Spotube and log in with your Spotify account
- Start exploring and playing music
Note: For Android users, you may need to enable installation from unknown sources in your device settings before installing the APK file.
Competitor Comparisons
Spotify for the terminal written in Rust 🚀
Pros of spotify-tui
- Terminal-based interface, ideal for users who prefer command-line tools
- Lightweight and efficient, consuming minimal system resources
- Extensive keyboard shortcuts for quick navigation and control
Cons of spotify-tui
- Limited to terminal environments, lacking a graphical user interface
- Requires Spotify Premium account for full functionality
- May have a steeper learning curve for users unfamiliar with CLI applications
Code Comparison
spotify-tui (Rust):
let spotify = Spotify::default()
.client_credentials_manager(client_credentials_manager)
.build();
Spotube (Dart):
final spotify = SpotifyApi(
SpotifyApiCredentials(clientId, clientSecret),
);
Key Differences
- Spotube is a cross-platform GUI application, while spotify-tui is a terminal-based interface
- Spotube offers a more user-friendly experience for those accustomed to traditional music players
- spotify-tui provides a more minimalist and resource-efficient approach
- Spotube includes additional features like lyrics display and audio caching
- spotify-tui integrates more tightly with the native Spotify client for playback
Both projects aim to enhance the Spotify experience, with spotify-tui focusing on terminal users and Spotube offering a full-fledged alternative client with extended functionality.
Cross-platform ncurses Spotify client written in Rust, inspired by ncmpc and the likes.
Pros of ncspot
- Written in Rust, offering better performance and memory safety
- Terminal-based interface, ideal for users who prefer command-line applications
- Lightweight and resource-efficient, suitable for low-powered devices
Cons of ncspot
- Limited cross-platform support compared to Spotube's Flutter-based approach
- Less visually appealing interface for users accustomed to graphical applications
- Steeper learning curve for users not familiar with terminal-based applications
Code Comparison
ncspot (Rust):
pub fn play(&mut self, track_id: &str) -> Result<(), Box<dyn Error>> {
self.player.load(track_id, true, 0)?;
self.player.play()?;
Ok(())
}
Spotube (Dart):
Future<void> play(String trackId) async {
await player.load(trackId);
await player.play();
}
Both projects aim to provide alternative Spotify clients, but they cater to different user preferences. ncspot focuses on terminal users and performance, while Spotube offers a more traditional graphical interface with cross-platform compatibility. The code comparison shows similar functionality implemented in their respective languages, with ncspot using Rust's error handling and Spotube utilizing Dart's async/await pattern.
A spotify daemon
Pros of Spotifyd
- Lightweight and resource-efficient, running as a daemon
- Supports remote control via official Spotify apps
- Cross-platform compatibility (Linux, macOS, Windows)
Cons of Spotifyd
- Limited user interface, primarily controlled through other Spotify clients
- Requires a Spotify Premium account for full functionality
- Less feature-rich compared to Spotube's all-in-one solution
Code Comparison
Spotifyd (Rust):
let (mut stream, creds) = Session::connect(config, credentials, cache, true)?;
let (tx, rx) = mpsc::channel();
let player = Player::new(config.backend, config.volume, move || rx.recv().unwrap());
Spotube (Dart):
final player = AudioPlayer();
await player.setAudioSource(
AudioSource.uri(Uri.parse(trackUrl)),
initialPosition: Duration.zero,
);
await player.play();
Key Differences
- Spotifyd is a backend-focused solution, while Spotube provides a complete frontend and backend package
- Spotube offers a graphical user interface, making it more accessible for average users
- Spotifyd integrates directly with official Spotify apps, whereas Spotube operates more independently
- Spotube includes additional features like lyrics display and audio normalization
Both projects aim to provide alternative Spotify clients, but they cater to different use cases and user preferences.
Open Source Spotify client library
Pros of librespot
- Written in Rust, offering better performance and memory safety
- Focuses on core Spotify protocol implementation, providing a solid foundation for other projects
- More actively maintained with frequent updates and contributions
Cons of librespot
- Lacks a user interface, requiring additional development for a complete application
- More complex to set up and use for end-users
- Limited features beyond core Spotify functionality
Code Comparison
librespot (Rust):
let session = Session::connect(config, credentials).await?;
let (mut player, _) = Player::new(config, session.clone(), None, move || {});
player.load(track_id, true, 0).await?;
player.play().await?;
Spotube (Dart):
final player = SpotifyPlayer();
await player.play(trackUri);
await player.pause();
await player.resume();
Summary
librespot is a low-level Spotify client library written in Rust, focusing on core protocol implementation. It offers better performance and serves as a foundation for other projects. However, it lacks a user interface and requires more setup.
Spotube is a full-fledged Spotify client application built with Flutter and Dart. It provides a user-friendly interface and is easier to use for end-users. However, it may not offer the same level of performance as librespot and has a different scope in terms of functionality.
Both projects have their strengths and are suitable for different use cases, depending on whether you need a low-level library or a complete application.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
ð¨ Spotube is banned from using "Spotify⢠API" ð¨
The developer of Spotube has received a cease and desist letter from Spotify USA Inc. and Spotify AB, asserting a legal threat concerning the distribution and development of any application that utilizes Spotifyâs data API in conjunction with content from YouTube® to facilitate ad-free playback of music tracks. The letter contends that this specific use of the Spotify⢠APIs contravenes the Spotify⢠Agreements and may also infringe upon the rights of music rights holders.
Consequently, as the official maintainer of Spotube, I will immediately cease all forms of official distribution and development of Spotube that continue to employ the aforementioned 'Spotify⢠APIs'
Their exact reasoning: (any) "uses of Spotifyâs data API in connection with content from YouTube to provide ad-free playback of music tracks. The use of the Spotify APIs in this manner violates the Spotify Agreements and may also violate the rights of music rights holders."
So what's now?
In short, we are cooked (legally)
For now, I've to:
-
Stop distributing/developing Spotube/any app that uses "Spotify⢠APIs"
That means, I can no longer distribute Spotube through the website, GitHub, any app store and immediately have to take down the versions that uses Spotify⢠APIs.
-
Stop using their logo/image/name/intellectual property in a manner that "seems infringement"
-
Forever desist from aiding or assisting any other person or entity in the activities described above
For the users of Spotube:
Don't worry, Spotube is banned only from (or assisting other) using those APIs. As long as the app isn't using them or no way helps anyone else to use them, it's ok.
In future, I'll try to rewrite Spotube to ensure it operates within the bounds of copyright law and platform policies. And give ways for the users to extend the app to their use cases. Work is already in progress to implement this! So expect some big updates soon!
But for eternity, you can't download versions of Spotube that still uses "Spotify⢠APIs" from official means (website/Github/app stores). Those will be taken down.
But newer version of Spotube that doesn't use "Spotify⢠APIs" will be available to replace those.
That means, in the upcoming new versions, you will no longer be able to login with your "Spotify⢠Account", access your saved playlists, albums, tracks, followed artists or perform any action on that account or anything that is from "Spotifyâ¢" or owned by "Spotifyâ¢" (yes the API public data (e.g. track metadata) as well) through Spotube.
Conclusion: I'm extremely sorry for this disruption to your day to day music listening experience. Spotube existed and it used by a large number of users because they find it better. And we'll continue to be better than others but legally* from now on
Spotube has no affiliation with Spotify⢠or any of its subsidiaries.

An open source, cross-platform music client
utilizing selected music provider API and YouTube®, Piped.video or JioSaavn as an audio source
Btw it's not just another Electron app ð
ð Features
- ð« No ads, thanks to the use of public & free music metadata providers and YT Music APIs¹
- â¬ï¸ Freely downloadable tracks
- ð¥ï¸ ð± Cross-platform support
- 𪶠Small size & less data usage
- ðµï¸ Anonymous/guest login
- ð Time synced lyrics
- â No telemetry, diagnostics or user data collection
- ð Native performance
- ð Open source/libre software
- ð Playback control is done locally, not on the server
¹ It is still recommended to support creators by engaging with their YouTube channels/tracks in music platforms (or preferably by buying their merch/concert tickets/physical media).
â Unsupported features
- ð£ï¸ Shows & Podcasts: Shows and Podcasts will never be supported because the audio tracks are only available on music providers and accessing them would require premium.
- ð§ Listen Along: Coming soon!
ð¥ The Spotube team
- Kingkor Roy Tirtho - The Founder, Maintainer and Lead Developer
ð¼ License
Spotube is open source and licensed under the BSD-4-Clause License.
If you are concerned, you can read the reason of choosing this license.
Top Related Projects
Spotify for the terminal written in Rust 🚀
Cross-platform ncurses Spotify client written in Rust, inspired by ncmpc and the likes.
A spotify daemon
Open Source Spotify client library
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot