Chrome Extensions on Android — The Masterlist
One-Line Flow: Get your desktop Chrome extensions running on your phone without Google’s permission.

Why You Need This
Chrome on Android doesn’t support extensions. Google says no. But you’re not Google.
This guide turns your phone into a desktop-grade browser. Ad blocking, password managers, dark mode, automation scripts — all of it works. You just need to know which doors are unlocked.
Zero skills required. Just follow the steps.
Quick Pick: What’s Your Situation?
| I want… | Use this |
|---|---|
| Easiest setup, just works | Quetta |
| Load my own unpacked extension | Yandex |
| Firefox addons instead | Iceraven |
| Root-level power (any browser) | ChromeXt |
| Userscripts only | Via Browser or XBrowser |
TIER 1: The Easy Wins
Quetta Browser — Best Overall
The Kiwi Browser successor that actually gets updated.
📦 How to Install Extensions
- Download Quetta from Play Store
- Tap ⋮ (three dots) →
puzzle icon → Manage Extensions - Search any extension by name
- Tap Install → OK
Done. Extensions appear in the menu.
Bonus: Built-in ad blocker, video downloader, direct Chrome Web Store access.
Download: Quetta Official or Play Store
Yandex Browser — The Only “Load Unpacked” Option
This is THE browser for developers or anyone loading custom/modified extensions.
📦 How to Load Unpacked Extensions
Step 1: Get Your Extension Files
- Download CRX from Chrome Web Store (use CRX Extractor)
- Rename
.crxto.zip - Extract the ZIP
Step 2: Delete the Problem Folder
⚠️ DELETE the _metadata folder inside
This folder breaks everything. Chrome reserves _ prefixed names. Just nuke it.
Step 3: Load in Yandex
- Open Yandex → type
browser://extensionsin address bar - Enable Developer Mode (top toggle)
- Tap Upload unpacked extension
- Navigate to your folder → select
manifest.json
Your extension is now loaded.
🔧 Remote Debugging Setup
Debug your extension from desktop:
- Connect phone via USB (USB debugging enabled)
- In Yandex settings → Developer tools → Enable Debug webpages via USB
- On desktop Yandex:
browser://inspect/#devices - Your extension tabs appear — click Inspect
Download: Yandex Browser or Play Store
Microsoft Edge Canary — CRX Sideloading
Uses Kiwi’s donated extension code. Works but crashy.
📦 How to Install CRX Files
- Settings → About Microsoft Edge → tap build number 5 times
- Go back → Developer Options appears
- Enable Extension install by crx
- Pick your
.crxfile
Extensions show in Settings → Extensions (can’t pin to toolbar).
Download: Play Store (search “Edge Canary”)
Kiwi Browser — The OG (Archived)
GitHub archived January 2025. Still works, still secure through 2025. No future updates.
📦 How to Load Extensions
From Chrome Web Store:
- Just visit the store in Kiwi and tap “Add to Chrome”
Load Unpacked:
- Extract CRX to folder
- Delete
_metadatafolder - Menu → Extensions → Developer mode ON
- Load unpacked → use TotalCommander to navigate
- Select
manifest.json
Supports .user.js userscripts directly.
Download: Kiwi GitHub Releases
TIER 2: Userscript Methods
Skip extensions entirely. Userscripts do 80% of what extensions do.
Via Browser / XBrowser
Both have native userscript support built-in. No extensions needed.
📦 Via Browser Setup
- Install Via Browser (Play Store, ~1MB)
- Settings → Scripts
- Add your JavaScript
- Scripts run automatically on matching pages
Supports Tampermonkey-style @match patterns.
📦 XBrowser Setup
Full Tampermonkey compatibility:
@match,@include,@run-atsupported- Scripts auto-run on page load
- Documentation: XBrowser Scripts Guide
Firefox + Tampermonkey/Violentmonkey
Firefox Android now supports addons natively.
📦 Setup
- Install Firefox from Play Store
- Menu → Add-ons → Browse
- Search “Tampermonkey” or “Violentmonkey”
- Install → add your scripts from Greasy Fork
Want the FULL addon library?
Use Iceraven Browser — Firefox fork with unlocked AMO.
WebMonkey — Dedicated Userscript Browser
Standalone browser built specifically for Greasemonkey scripts.
📦 What It Supports
GM_addStyle, GM_xmlhttpRequest, GM_openInTab
GM_setValue, GM_getValue, GM_listValues
GM_setClipboard, GM_notification
@grant, @require, @resource
No root. Lightweight. Just works.
GitHub: WebMonkey
TIER 3: The Nuclear Options (Advanced)
ChromeXt — Xposed Module
Hooks into ANY Chromium browser. Chrome, Edge, Brave, Samsung Internet, Vivaldi — all of them.
🔧 What It Does
- Adds userscript support to stock Chrome
- Adds DevTools (Eruda console)
- Content blocking
- Reader mode
- User-Agent spoofing
Supports almost all Tampermonkey APIs.
📦 Installation (Root Method)
Requirements: Magisk + Zygisk + LSPosed
- Install LSPosed (use JingMatrix fork for Android 14+)
- Download ChromeXt from GitHub Actions
- Install APK → Enable in LSPosed Manager
- Select target browser → Reboot
UserScript manager: https://jingmatrix.github.io/ChromeXt/
📦 Installation (No Root via LSPatch)
# Download lspatch.jar and ChromeXt-signed.apk
java -jar lspatch.jar Chrome.apk -d -v -m ChromeXt-signed.apk --force --injectdex
Uninstall original Chrome → Install patched APK.
Or use the LSPatch Manager APK (check “Inject loader dex”).
GitHub: ChromeXt | LSPosed Module: ChromeXt on LSPosed Repo
Userscript-Proxy — Network-Level Injection
Run a proxy that injects scripts into ALL browsers. Even stock Chrome.
📦 How It Works
- Run proxy server on your network
- Configure Android WiFi to use proxy
- Install mitmproxy CA certificate
- ALL HTTP/HTTPS traffic gets scripts injected
docker run -t --rm --name userscript-proxy \
-p 8080:8080 \
-v "mitmproxy-ca:/root/.mitmproxy" \
-v "/path/to/scripts:/my-userscripts" \
alling/userscript-proxy --userscripts-dir "/my-userscripts"
Works with ANY browser. Centralized script management.
GitHub: userscript-proxy
Bookmarklets — The Dumb Method That Works
Chrome Android DOES run bookmarklets. Just not from the bookmarks menu.
📦 The Trick
- Create bookmark on desktop with JavaScript:
javascript:(function(){alert('it works')})(); - Sync to mobile
- On mobile: type the bookmark name in the address bar
- Select the starred entry starting with
javascript: - It runs against the current page
Limitations: CSP blocks some sites, single execution only.
Source: Paul Kinlan’s Discovery
Universal Fixes
The _metadata Problem
Every CRX from Chrome Web Store includes a _metadata folder. This breaks unpacked loading.
🛠️ The Fix
# After extracting CRX
rm -rf extension/_metadata
Or just delete the folder manually. Chrome reserves _ prefixed names — loading with it present throws:
Cannot load extension with file or directory name _metadata.
This fixes 90% of “extension won’t load” errors.
manifest.json Fixes
🛠️ Common Edits
Remove update_url (prevents verification errors):
// DELETE this line:
"update_url": "https://clients2.google.com/service/update2/crx"
Lower minimum_chrome_version if needed:
"minimum_chrome_version": "88"
CRX Extraction
CRX = ZIP with a header. Extract it.
🛠️ Methods
Simple:
mv extension.crx extension.zip
unzip extension.zip
Online tools:
All Downloads
| Tool | Link |
|---|---|
| Quetta | quetta.net / Play Store |
| Yandex | browser.yandex.com / Play Store |
| Kiwi (archived) | GitHub Releases |
| Iceraven | GitHub |
| Lemur | Play Store |
| Via Browser | Play Store |
| XBrowser | Play Store |
| WebMonkey | GitHub |
| ChromeXt | GitHub |
| LSPosed | GitHub |
| CRX Extractor | crxextractor.com |
| Greasy Fork | greasyfork.org |
The Honest Truth
Google will never add extension support to Chrome Android. Business reasons. Ad revenue. Control.
Stop waiting. Pick a method above and move on.
For most people: Quetta or Yandex.
For power users: ChromeXt.
For simplicity: Userscripts via Via/XBrowser or Firefox.
Last updated: January 2026
Sources: XDA Forums, GitHub, Chromium bug trackers, and too many hours of testing
!