An Xposed/LSPosed module that unlocks premium features on Spotify β with full ad blocking.
No server-side detection. No forced logouts. Just music.
π₯ Download Latest β’ β¨ Features β’ π¦ Installation β’ π§ Domain Discovery β’ β FAQ
Important
- This is NOT an official ReVanced project β do not ask ReVanced developers for help.
- Root access (Magisk/KernelSU) with LSPosed is strictly required.
This is an actively maintained fork of the original chsbuffer/ReVancedXposed_Spotify, which was archived and is now read-only.
What this fork brings:
- β Full ad blocking β audio & visual ads completely eliminated
- β No forced logouts (avoids server-side detection traps)
- β Active maintenance & updates
- β Compatible with latest Spotify versions
All credit for the original implementation goes to the original author and contributors. This fork remains licensed under GPL-3.0.
| Feature | Status | Description |
|---|---|---|
| π Unlock Premium | β Working | Unlocks premium UI features (shuffle, unlimited skips, etc.) |
| π« Block All Ads | β Working | DNS-level ad blocking β blocks 25+ ad-serving domains at the network layer |
| π Sanitize Links | β Working | Removes tracking parameters from shared Spotify links |
| π Fix Widgets | β Working | Fixes third-party launcher widgets |
The module implements a DNS-level sinkhole directly within Spotify's process β the same proven technique used by AdGuard DNS and Pi-hole:
Spotify tries to reach β ads.spotify.com
Module intercepts DNS β returns 127.0.0.1 (loopback)
Connection fails β no ads served β
This approach operates at the network layer rather than modifying account attributes, which means:
- β
Forced logoutsβ doesn't trigger server-side dual-sync detection - β
Account flagsβ your account state remains untouched - β Works reliably without depending on Spotify's internal code structure
Note
The ads account attribute is intentionally not overridden. Setting ads=FALSE triggers Spotify's server-side detection, causing forced logouts every 60β120 seconds. DNS blocking avoids this entirely.
| Build | Link |
|---|---|
| Latest Release |
Note
The package name and signature of this build vary. You do not need to reinstall daily.
- Rooted Android device (Magisk or KernelSU)
- LSPosed framework installed
- Spotify app installed from Play Store or APK
- Download the latest release APK from Releases
- Install the APK on your device
- Open LSPosed Manager β Modules
- Enable RVX Spotify and select Spotify as the target app
- Force stop Spotify and reopen it
- Enjoy ad-free music π΅
Spotify may change their ad-serving domains over time. The module includes a built-in Domain Discovery Mode to help you find new domains:
π Click to expand β How to discover new ad domains
- Open
InterceptAds.ktand set:private const val DNS_DISCOVERY_MODE = true
- Rebuild and install:
./gradlew :app:assembleUniversalRelease
- Play Spotify for a few minutes
- Capture the domain log:
adb logcat -s AD_DIAG | grep "DNS_LOG"
- Review the output:
DNS_LOG: β ALLOWED api-partner.spotify.com DNS_LOG: β BLOCKED ads.spotify.com β 127.0.0.1 DNS_LOG: β ALLOWED newdomain.spotify.com β is this an ad domain? - Look for domains with keywords like:
ad,track,analytics,sponsored,log,metric - Add suspicious domains to the
blockedDomainsset inInterceptAds.kt - Set
DNS_DISCOVERY_MODE = falseand rebuild for daily use
π‘ Tip: Save to file for easier review:
adb logcat -s AD_DIAG | grep "DNS_LOG" > ~/spotify_domains.txtView all 25 blocked domains
| Domain | Category |
|---|---|
ads.spotify.com |
Spotify Ads |
spclient.wg.spotify.com |
Spotify Ad Client |
audio-ak-spotify-com.akamaized.net |
Ad Audio CDN |
audio2.spotify.com |
Ad Audio |
analytics.spotify.com |
Analytics |
adstats.spotify.com |
Ad Statistics |
adeventtracker.spotify.com |
Ad Event Tracking |
tracking.spotify.com |
Tracking |
log.spotify.com |
Logging |
crashdump.spotify.com |
Crash Reporting |
sponsored-recommendations.spotify.com |
Sponsored Content |
desktop.spotify.com |
Desktop Ads |
weblb-wg.gslb.spotify.com |
Load Balancer (Ads) |
redirect.spotify.net |
Ad Redirects |
firebaseinstallations.googleapis.com |
Firebase Tracking |
firebase-settings.crashlytics.com |
Crashlytics |
cdn.branch.io |
Branch.io Tracking |
api2.branch.io |
Branch.io API |
pagead2.googlesyndication.com |
Google Ads |
bs.serving-sys.com |
Serving Sys Ads |
bounceexchange.com |
Bounce Exchange |
sb.scorecardresearch.com |
Scorecard Research |
b.scorecardresearch.com |
Scorecard Research |
segment-data-us-east.zqtk.net |
Segment Tracking |
live.ravelin.click |
Ravelin Tracking |
Will this get my account banned?
The module does not modify your Spotify account attributes or send modified data to Spotify's servers. DNS blocking is indistinguishable from network issues β it's the same as using AdGuard DNS or a Pi-hole on your network.
Why not just set ads=FALSE?
Setting the
adsattribute toFALSEtriggers Spotify's server-side dual-sync detection, causing forced logouts every 60β120 seconds. DNS-level blocking avoids this by operating at the network layer instead.
Ads are showing again after a Spotify update?
Spotify may introduce new ad-serving domains. Use the built-in Domain Discovery Mode to identify and block them.
Does this work without root?
No. This is an Xposed/LSPosed module and requires root access (Magisk or KernelSU).
# Clone the repository
git clone https://github.com/simoabid/RVX-Spotify.git
cd RVX-Spotify
# Build release APK
./gradlew :app:assembleUniversalRelease
# Output: app/build/outputs/apk/universal/release/| Project | Contribution |
|---|---|
| chsbuffer/ReVancedXposed_Spotify | Original implementation β all foundational credit |
| DexKit | High-performance dex runtime parsing library |
| ReVanced | Continuing the legacy of Vanced |
| AdGuard DNS | Inspiration for DNS-level ad blocking approach |