Discover the best tweaked Spotify apps to enjoy Spotify Premium for free. Download Spotify++ for iOS 18, iOS 17, iOS 16, and iOS 15 in 2024, no jailbreak required. These versions of Spotify++ are compatible with all iPhones and iPads.
Spotify++ for iOS is a modified version of Spotify designed for iPhone, iPad, and iPod Pro devices. Here is the latest updated list of the best Spotify tweaked apps to save you time.
- Download Spotify Tweaked Apps: Get Spotify Tweaked Apps for iOS 16 to iOS 18 from the iTweaked Store.
- Choose Your App: Select your preferred Spotify Tweaked App and tap on it.
- Sideload the App: Use TrollStore, Esign, Sideloadly, AltStore, or any other sideloading method to install the IPA.
- Trust the Developer: Go to your device settings and trust the developer certificate to enable the app to run.
- Log In: Open Spotify++ and sign in with your Spotify account credentials.
Spotify Tweaks Name | Description |
---|---|
EeveeSpotify |
This tweak makes Spotify think you have a Premium subscription, granting free listening just like Spotilife. It also provides additional features like custom lyrics. |
Spotify++ |
Spotify++ for iOS is a modified version of the popular music streaming app tailored for Apple devices like iPad and iPhone. Developed by third-party creators, this tweaked app unlocks Spotify Premium features without a subscription, granting you an ad-free experience and on-demand song playback. |
Spotube |
Spotube is a music player for iOS with Spotify API support. It serves as an alternative to Spotify, granting users unrestricted access to their entire music collection within their Spotify playlists and libraries. Leveraging Spotify's robust data API, Spotube seamlessly integrates with platforms like YouTube, Piped.video, or JioSaavn, offering free, ad-free music streaming. |
Spotilife |
Spotilife is a Spotify iOS app tweak that removes ads, removes limited skips, and unlocks almost every other premium feature. |
Starting with version Spotify++, the app intercepts Spotify requests to load user data, deserializes it, and modifies the parameters in real-time. This method is highly stable and effective, allowing users to select the dynamic Premium patching method in the Spotify++ settings.
Upon login, Spotify fetches user data and caches it in the offline.bnk
file located in the /Library/Application Support/PersistentCache
directory. It stores data in its proprietary binary format, including a length byte before each value and other conventions. Keys such as player-license
, financial-product
, streaming-rules
, and others determine the user's capabilities.
The tweak patches this file during initialization; Spotify then loads it, assuming the user has Premium access. However, due to challenges with dynamic length and varied bytes, actual patching may not occur. The tweak extracts the username from the current offline.bnk
file and inserts it into premiumblank.bnk
, a file containing all preset premium values, replacing offline.bnk
. If Spotify reloads user data, the user may be switched to the Free plan, triggering a popup with options to quickly restart the app and reset data.
Additionally, the tweak sets trackRowsEnabled
in SPTFreeTierArtistHubRemoteURLResolver
to true
, enabling Spotify to load not just track names on the artist page. While this functionality can cease, similar to Spotilife, it remains effective on the latest Spotify 8.9## versions. (Spotilife also modifies offline.bnk
, but changes obscure bytes that have no effect on newer versions).
To open Spotify links in the sideloaded app, ensure activation and access permission in Settings > Safari > Extensions.
Discover Spotify++, the enhanced version of Spotify tailored for iOS devices. Enjoy premium features without a subscription, ad-free music and video streaming, HD playback, and more. Easily download and install Spotify++ on your iPhone or iPad without jailbreaking. Stay updated with the latest iOS versions and access exclusive content before anyone else.
Feature | Description |
---|---|
Premium Features for Free | Access Spotify Premium features without a subscription, including ad-free listening. |
Ad-Free Experience | Eliminate interruptions with no ads during music and video streaming sessions. |
HD Playback | Enjoy crystal-clear audio and video quality in full HD mode. |
Unlimited Skips | Skip tracks without limitations, giving you complete control over your music playlist. |
Import Music | Easily import tracks from your device's storage to Spotify++, expanding your music library. |
Free Download | Download Spotify++ for free and enhance your music experience without any cost. |
No Jailbreak Required | Install Spotify++ securely on your iOS device without the need to jailbreak. |
iOS Compatibility | Compatible with iOS 15 and iOS 16, ensuring optimal performance on the latest Apple devices. |
No Forced Shuffle | Listen to your music in the order you prefer, with no forced shuffle feature in Spotify++. |
Download Favorites | Save favorite tracks for offline listening by downloading them within the app. |
- Free Premium Access: Enjoy Spotify Premium features without paying.
- Regular Updates: Receive frequent updates to incorporate new features.
- Easy Installation/Removal: Install and remove Spotify++ effortlessly.
- High Audio Quality: Experience superior 320 Kbps audio quality.
- Early Access to Exclusive Content: Access exclusive content before others.
First, let's improve our Song
model to include more properties like fileURL
for playing audio and isPlaying
for tracking the current playing state:
struct Song {
let id: Int
let title: String
let artist: String
let album: String
let duration: Int // in seconds
let artwork: String // image name or URL
let fileURL: URL // URL to audio file
var isPlaying: Bool = false
}
Next, let's update our AudioPlayer
class to support more advanced audio playback features using AVPlayer
:
import AVFoundation
class AudioPlayer {
static let shared = AudioPlayer()
private var player: AVPlayer?
private var currentSong: Song?
func play(song: Song) {
if currentSong?.id == song.id {
// If the same song is already playing, toggle play/pause
if player?.rate == 0 {
player?.play()
} else {
player?.pause()
}
} else {
// Play a new song
currentSong = song
player = AVPlayer(url: song.fileURL)
player?.play()
// Update the isPlaying state of the song
song.isPlaying = true
}
}
func pause() {
player?.pause()
if let song = currentSong {
song.isPlaying = false
}
}
func stop() {
player?.pause()
player = nil
if let song = currentSong {
song.isPlaying = false
}
}
func seek(to time: TimeInterval) {
player?.seek(to: CMTime(seconds: time, preferredTimescale: 1))
}
}
Now, let's enhance our SwiftUI views to include playback controls (play/pause, seek bar):
import SwiftUI
import AVFoundation
struct ContentView: View {
@State private var songs: [Song] = [
Song(id: 1, title: "Song 1", artist: "Artist A", album: "Album X", duration: 180, artwork: "song1", fileURL: Bundle.main.url(forResource: "song1", withExtension: "mp3")!),
Song(id: 2, title: "Song 2", artist: "Artist B", album: "Album Y", duration: 200, artwork: "song2", fileURL: Bundle.main.url(forResource: "song2", withExtension: "mp3")!)
// Add more songs as needed
]
@State private var isPlaying = false
@State private var currentSong: Song?
@State private var currentTime: TimeInterval = 0
@State private var duration: TimeInterval = 0
var body: some View {
NavigationView {
VStack {
if let song = currentSong {
VStack {
Image(song.artwork)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 200, height: 200)
Text(song.title)
.font(.title)
.padding(.top, 8)
Text(song.artist)
.font(.headline)
.foregroundColor(.gray)
.padding(.bottom, 8)
Text(timeToString(time: currentTime) + " / " + timeToString(time: duration))
.font(.caption)
.foregroundColor(.gray)
.padding(.bottom, 16)
HStack {
Button(action: {
self.previous()
}) {
Image(systemName: "backward.fill")
.font(.title)
.foregroundColor(.blue)
}
.padding(.trailing, 40)
Button(action: {
self.playPause()
}) {
Image(systemName: isPlaying ? "pause.circle.fill" : "play.circle.fill")
.font(.system(size: 80))
.foregroundColor(.blue)
}
Button(action: {
self.next()
}) {
Image(systemName: "forward.fill")
.font(.title)
.foregroundColor(.blue)
}
.padding(.leading, 40)
}
.padding(.top, 32)
Slider(value: Binding(
get: { self.currentTime },
set: { newValue in
self.seek(to: newValue)
}
), in: 0...duration)
.padding(.horizontal)
}
.onAppear {
self.play(song: song)
}
} else {
Text("Select a song to play")
.font(.title)
.foregroundColor(.gray)
}
List(songs, id: \.id) { song in
SongRow(song: song, isSelected: song.id == self.currentSong?.id)
.onTapGesture {
self.currentSong = song
}
}
.navigationBarTitle("Music Player")
}
}
.onReceive(Timer.publish(every: 1, on: .main, in: .common).autoconnect()) { _ in
if self.isPlaying, let player = AudioPlayer.shared.player {
self.currentTime = player.currentTime().seconds
self.duration = player.currentItem?.duration.seconds ?? 0
}
}
}
private func play(song: Song) {
AudioPlayer.shared.play(song: song)
isPlaying = true
}
private func playPause() {
if let song = currentSong {
if isPlaying {
AudioPlayer.shared.pause()
} else {
play(song: song)
}
isPlaying.toggle()
}
}
private func seek(to time: TimeInterval) {
AudioPlayer.shared.seek(to: time)
}
private func next() {
guard let currentIndex = songs.firstIndex(where: { $0.id == currentSong?.id }), currentIndex < songs.count - 1 else {
return
}
currentSong = songs[currentIndex + 1]
}
private func previous() {
guard let currentIndex = songs.firstIndex(where: { $0.id == currentSong?.id }), currentIndex > 0 else {
return
}
currentSong = songs[currentIndex - 1]
}
private func timeToString(time: TimeInterval) -> String {
let minutes = Int(time) / 60
let seconds = Int(time) % 60
return String(format: "%02d:%02d", minutes, seconds)
}
}
struct SongRow: View {
let song: Song
let isSelected: Bool
var body: some View {
HStack {
Image(song.artwork)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 50, height: 50)
VStack(alignment: .leading) {
Text(song.title)
.font(.headline)
Text(song.artist)
.font(.subheadline)
}
Spacer()
if isSelected {
Image(systemName: "speaker.fill")
.foregroundColor(.blue)
.padding(.trailing, 20)
}
}
.padding(8)
}
}
iPhone 16 (Upcoming), iPhone 15 Pro Max, iPhone 15 Pro, iPhone 15 Plus, iPhone 15, iPhone 14 Pro Max, iPhone 14 Pro, iPhone 14 Plus, iPhone 14.
iPhone 13 Pro Max, iPhone 13 Pro, iPhone 13 Mini, iPhone 13, iPhone 12 Pro Max, iPhone 12 Pro, iPhone 12 Mini, iPhone 12, iPhone 11 Pro Max, iPhone 11 Pro, iPhone 11, iPhone XS Max, iPhone XS, iPhone XR, iPhone X.
Spotify for iOS 18:
iOS 18 Beta
Spotify for iOS 17:
iOS 17.6, iOS 17.5.1, iOS 17.5, iOS 17.4.1, iOS 17.4, iOS 17.3.1, iOS 17.3, iOS 17.2.1, iOS 17.2, iOS 17.1.2, iOS 17.1.1, iOS 17.1, iOS 17.0.3, iOS 17.0.2, iOS 17.0.1, iOS 17.
Spotify for iOS 16:
iOS 16.7.5, iOS 16.7.4, iOS 16.7.3, iOS 16.7.2, iOS 16.7.1, iOS 16.7, iOS 16.6.1, iOS 16.6, iOS 16.5.1, iOS 16.5, iOS 16.4.1, iOS 16.4, iOS 16.3.1, iOS 16.3, iOS 16.2, iOS 16.1.2, iOS 16.1.1, iOS 16.1, iOS 16.0.3, iOS 16.0.2, iOS 16.0.1, iOS 16.
Spotify for iOS 15:
iOS 15.8.2, iOS 15.8.1, iOS 15.8, iOS 15.7.9, iOS 15.7.8, iOS 15.7.7, iOS 15.7.6, iOS 15.7.5, iOS 15.7.4, iOS 15.7.3, iOS 15.7.2, iOS 15.7.1, iOS 15.7, iOS 15.6.1, iOS 15.6, iOS 15.5, iOS 15.4.1, iOS 15.4, iOS 15.3.1, iOS 15.3, iOS 15.2.1, iOS 15.2, iOS 15.1.1, iOS 15.1, iOS 15.0.2, iOS 15.0.1, iOS 15.
Spotify for iOS 14:
iOS 14.8.1, iOS 14.8, iOS 14.7.1, iOS 14.7, iOS 14.6, iOS 14.5.1, iOS 14.5, iOS 14.4.2, iOS 14.4.1, iOS 14.4, iOS 14.3, iOS 14.2.1, iOS 14.2, iOS 14.1, iOS 14.0.1, iOS 14.
Spotify for iOS 13:
iOS 13.7, iOS 13.6.1, iOS 13.6, iOS 13.5.1, iOS 13.5, iOS 13.4.1, iOS 13.4, iOS 13.3.1, iOS 13.3, iOS 13.2.3, iOS 13.2.2, iOS 13.2, iOS 13.1.3, iOS 13.1.2, iOS 13.1.1, iOS 13.1, iOS 13.
Spotify for iOS 12:
iOS 12.5.7, iOS 12.5.6, iOS 12.5.5, iOS 12.5.4, iOS 12.5.3, iOS 12.5.2, iOS 12.5.1, iOS 12.5, iOS 12.4.9, iOS 12.4.8, iOS 12.4.7, iOS 12.4.6, iOS 12.4.5, iOS 12.4.4, iOS 12.4.3, iOS 12.4.2, iOS 12.4.1, iOS 12.4, iOS 12.3.2, iOS 12.3.1, iOS 12.3, iOS 12.2, iOS 12.1.4, iOS 12.1.3, iOS 12.1.2, iOS 12.1.1, iOS 12.1, iOS 12.0.1, iOS 12.
This project is open-source and governed by the MIT License. You are welcome to utilize, modify, and distribute it under the conditions outlined in the license agreement.
- Educational Purpose: This project serves purely educational and testing purposes.
- No Support for Piracy: We do not endorse or condone piracy. The IPA provided here is strictly intended for educational use.
- Not Affiliated: This project is an independent endeavor and is not affiliated with Spotify or its affiliated entities.
We extend our sincere appreciation to the individuals and teams whose dedication and effort made the Spotify++ project possible. Their contributions have been invaluable:
- EeveeSpotify: Reverse-engineered Spotilife, employing techniques such as intercepting Spotify requests to develop this tweak.
- SpotCompiled/SpotC-Plus-Plus: Facilitated the compilation and accessibility of Spotilife + Sposify IPA files.
- iTweaked Store: Provided the official Spotify++ IPA for direct download.
We declare no affiliation, association, endorsement, or official connection with any company, agency, or government entity. All product and company names are trademarks™️ or registered®️ trademarks of their respective holders. Their usage does not imply any endorsement or association.