Xposed module built on the modern LSPosed API that hides ads and sponsored content inside the Amazon Android app.
- Remove sponsored cards, video carousels, and other promotional UI in the Amazon app
- Maintained built-in selector list with remote updates. Optionally use your own self-hosted selector list via custom URL.
- Selector sanitization blocks common CSS injection patterns
- Price history charts on product pages via Keepa and CamelCamelCamel (US, UK, DE, FR, JP, CA, IT, ES, IN, MX, BR, AU)
- Force Dark (experimental) uses the native force dark algorithm with supplementary CSS fixes to darken Amazon pages
- Recommended alongside Private DNS and hosts-based blocking
- Material 3 Expressive settings UI with Jetpack Compose
- Free and open source (FOSS)
- Force Dark is experimental and disabled by default. Requires Android 15 (API 35) or higher for full support. On Android 10-14 force dark may not apply correctly. Some Amazon screens may still have contrast issues even on supported versions
- Price history charts are still being expanded and may not appear on some product pages yet.
- Android 10 (API 29) or higher
- LSPosed (JingMatrix fork recommended)
- Amazon Shopping app (
com.amazon.mShop.android.shopping)
-
Download the APK:
-
Enable the module in LSPosed and scope it to
com.amazon.mShop.android.shopping -
Open the AmznKiller companion app to verify the module is active and optionally fetch updated lists (built-in filters work out of the box)
-
Force-stop the Amazon app and relaunch it. A toast confirms the module is active.
Search query: "macbook air m1 16gb 512"
| Stock (2 real results, rest are ads) | Patched |
|---|---|
![]() |
![]() |
| Force Dark | Price History |
|---|---|
![]() |
![]() |
Settings app
![]() |
![]() |
![]() |
![]() |
Nothing changes in Amazon
See Troubleshooting. Most common causes: module not scoped correctly, missing force stop on Amazon Shopping, or LSPosed not activated.
Some products or sections are missing (blank lists, missing tiles)
- Disable CSS injection in AmznKiller settings to confirm selectors are the cause.
- Update selectors from the dashboard (tap refresh).
- If it persists, open an issue with: AmznKiller version, Amazon app version, WebView version, selector count.
Sync says "remote failed" or "bundled only"
Bundled selectors are still applied. Check connectivity, reset the selector URL in settings, and refresh again.
Does this block network requests or just hide elements?
Cosmetic only. It injects CSS to hide ad elements. Network requests still happen. Works alongside DNS-based blockers (AdGuard, NextDNS, Private DNS, hosts files).
Does this work on Amazon Lite or other Amazon apps?
No. The module is scoped to com.amazon.mShop.android.shopping only for now.
Do I need to reboot after updating selectors?
No. Updated selectors apply on the next page load inside Amazon Shopping. Force stop Amazon Shopping if changes don't appear immediately.
How does Force Dark work?
Amazon disables Android's force dark algorithm via its theme (forceDarkAllowed=false). The
module hooks ViewRootImpl.determineForceDarkType and overrides the return to
FORCE_DARK_ALWAYS, which triggers GPU-level algorithmic darkening on all content including
WebViews. Additional hooks set dark window backgrounds, theme native nav elements, and prevent
white flash on WebView load. DarkModeInjector ships CSS fixes for elements the algorithm gets
wrong (product images, buy buttons, deal badges).
Limitation: ViewRootImpl.determineForceDarkType was introduced in Android 15 (API 35).
On Android 10-14, this method does not exist so the primary force dark override cannot apply.
A fallback hook on HardwareRenderer.setForceDark is attempted but Amazon's theme-level
opt-out still blocks darkening on those versions.
If you spot a rendering issue, open an issue with a screenshot, page URL, and Android version.
You can enable WebView debugging in settings and inspect via chrome://inspect.
- Confirm the module is enabled in LSPosed and scoped to Amazon Shopping.
- Force stop Amazon Shopping, then reopen (or reboot).
- Open AmznKiller. Verify Xposed is active and selector count is above 0.
- Tap refresh on the dashboard. If it fails, reset the selector URL in settings and retry.
- If pages look broken, disable CSS injection temporarily, reopen Amazon Shopping, update selectors, then re-enable.
git clone --recurse-submodules https://github.com/hxreborn/amznkiller.git
cd amznkiller
# Build libxposed and publish to local Maven repo
./gradlew buildLibxposed
./gradlew :app:assembleDebugRequires JDK 21 and Android SDK. Configure local.properties:
sdk.dir=/path/to/android/sdk
# Optional: release signing for reproducible builds
RELEASE_STORE_FILE=<path/to/keystore.jks>
RELEASE_STORE_PASSWORD=<store_password>
RELEASE_KEY_ALIAS=<key_alias>
RELEASE_KEY_PASSWORD=<key_password>See CONTRIBUTING.md for guidelines on pull requests, code style, and commit conventions.
For bugs or feature requests, open an issue.
This project is licensed under the GNU General Public License v3.0 – see the LICENSE file for details.









