🎵 RVX Spotify
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
📌 About
[!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.
✨ Features
| 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 |
How Ad Blocking Works
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
adsaccount attribute is intentionally not overridden. Settingads=FALSEtriggers Spotify's server-side detection, causing forced logouts every 60–120 seconds. DNS blocking avoids this entirely.
📥 Download
| Build | Link |
|---|---|
| Latest Release |
[!NOTE] The package name and signature of this build vary. You do not need to reinstall daily.
📦 Installation
Prerequisites
- Rooted Android device (Magisk or KernelSU)
- LSPosed framework installed
- Spotify app installed from Play Store or APK
Steps
- 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 🎵
🔧 DNS Domain Discovery Mode
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.txt
🛡️ Currently Blocked Domains
View 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 |
❓ FAQ
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).
🏗️ Building from Source
# 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/
⭐ Credits
| 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 |