Skip to content

simoabid/RVX-Spotify

Β 
Β 

Repository files navigation

🎡 RVX Spotify

Spotify Xposed Kotlin Java

GitHub release GitHub downloads License: GPL v3 GitHub stars

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 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.


πŸ“₯ Download

Build Link
Latest Release Download

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

  1. Download the latest release APK from Releases
  2. Install the APK on your device
  3. Open LSPosed Manager β†’ Modules
  4. Enable RVX Spotify and select Spotify as the target app
  5. Force stop Spotify and reopen it
  6. 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
  1. Open InterceptAds.kt and set:
    private const val DNS_DISCOVERY_MODE = true
  2. Rebuild and install:
    ./gradlew :app:assembleUniversalRelease
  3. Play Spotify for a few minutes
  4. Capture the domain log:
    adb logcat -s AD_DIAG | grep "DNS_LOG"
  5. 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?
    
  6. Look for domains with keywords like: ad, track, analytics, sponsored, log, metric
  7. Add suspicious domains to the blockedDomains set in InterceptAds.kt
  8. Set DNS_DISCOVERY_MODE = false and 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 ads attribute to FALSE triggers 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

If this module helps you, consider giving it a ⭐

Star History Chart

About

The goal of this fork is to: - Fix Ad blocking issues, - Fix bugs and compatibility issues, - Keep the project working with newer dependencies, - Improve stability and maintainability, - Continue development where the original repository stopped

Resources

License

Contributing

Stars

163 stars

Watchers

2 watching

Forks

Packages

 
 
 

Contributors

Languages

  • Kotlin 63.9%
  • Java 36.1%