A simple, open-source Android VPN client powered by Mihomo. WhiteVPN works out of the box with a built-in WhiteDNS subscription and also lets you bring your own.
- One-tap VPN mode and local proxy mode
- Built-in WhiteDNS subscription, custom subscriptions, automatic refresh and offline cache
- Manual server selection plus latency and download-speed tests
- Subscription, Iran-bypass and global-proxy routing modes
- Split tunnelling: bypass selected apps or proxy only selected apps
- Automatic DNS, DNS over HTTPS (DoH) and DNS over TLS (DoT)
- Clean-IP scanning, optional ByeDPI compatibility and authenticated LAN sharing
- Persian and English interfaces with system, light and dark themes
Share links:
- VLESS
- VMess
- Trojan
- Shadowsocks (
ss://) - Hysteria 2 (
hysteria2://andhy2://) - WireGuard, including supported AmneziaWG options
Subscriptions can be added as an HTTPS URL or pasted directly. WhiteVPN accepts plain or Base64-encoded link lists, Mihomo YAML, Clash JSON, and Xray JSON arrays. Clash JSON supports VLESS, VMess, Trojan, Shadowsocks and WireGuard entries; Xray JSON supports VLESS, VMess, Trojan and WireGuard outbounds.
No subscription is required for first use. Automatic built-in connections try WhiteVPN Private first when configured, then the public WhiteDNS Mihomo subscription. Each source refreshes every 30 minutes while connected and keeps its own last valid copy for temporary network failures.
Official builds inject the private source through the WHITEDNS_PRIVATE_MIHOMO_SUBSCRIPTION_URL secret. Local builds can set the same environment variable or privateMihomoSubscriptionUrl in secrets.properties. When neither is set, the build succeeds with only the public built-in subscription; Private is omitted from menus and refreshes. Configured URLs must use HTTPS. Distributors can replace the public source with WHITEDNS_MIHOMO_SUBSCRIPTION_URL. Custom subscriptions remain separate and can be tested, selected, refreshed, edited or removed in the app.
- Telegram channel: @whitedns
- Telegram group: @whitedns_group
Download the latest APK from GitHub Releases. WhiteVPN requires Android 8.0 (API 26) or newer.
Requirements: JDK 17, Go, Android SDK and Android NDK.
./scripts/build-flclash-core.sh
./gradlew testDebugUnitTest assembleDebugThe build script checks out the pinned WhiteDNS/FlClash integration and its pinned WhiteDNS/mihomo core, builds Mihomo v1.19.30 for all supported Android ABIs, and generates the JNI files consumed by the app.
- WhiteDNS/mihomo — maintained proxy-core fork
- WhiteDNS/FlClash — maintained Android core/JNI integration fork
- SubConv — adapted share-link conversion logic
- ByeDPI — optional DPI-bypass compatibility
- AndroidX, Material Components, Kotlin Coroutines and Firebase Analytics
Their respective licenses and notices continue to apply.
Issues and pull requests are welcome. Keep changes focused, avoid committing subscriptions or secrets, and run the local checks before opening a PR:
./gradlew testDebugUnitTest assembleDebug
git diff --checkPlease describe what changed, why it is needed, and what you tested.
WhiteVPN is licensed under GPL-3.0-only.
