For desktop, choose v2rayN; for Android, choose v2rayNG. Consider v2flyNG only if you already have a v2fly configuration or specifically need that core.
Narrow down your options by operating system first, then check which protocols and transports your configuration requires. The client interface, proxy core, and system-level traffic routing are separate layers, so don't choose based only on the number of listed features.
Features with the same name may work differently. Desktop TUN and Android VPN routing are separate mechanisms. On narrow screens, scroll horizontally to view the full table.
Compare the three clients by platform support, core, maintenance, ease of use, subscriptions, routing, traffic handling, and best-fit users
Comparison criteria
v2rayN
v2rayNG
v2flyNG
Platform support
Windows、macOS、Linux
Android
Android
Core
Typically Xray; available cores and switching options depend on the release package, so the interface isn't limited to a single core
Xray
v2fly
Maintenance
Actively maintained; distinguish the cross-platform desktop edition from the classic WPF edition
Actively maintained; features change with client and core updates
Community-maintained; check current release notes for update cadence and feature support
Ease of use
Basic connections are straightforward; configure system proxy, routing, and TUN separately
Basic connections are straightforward; understand VPN permissions and background-running limits
Similar basic workflow to other Android clients; check configuration and core compatibility
Subscription management
Group subscriptions, update by group, and filter the list—useful for managing multiple sources
Configure and update subscriptions, then browse configurations by subscription for easy switching on mobile
Supports subscription imports and updates; group management depends on the current interface
Visual routing rules
Visual editing for preset modes and rule sets, making it easier to check match order rule by rule
Routing settings and per-app routing; phone screens can make complex rules harder to edit
Includes routing settings; available rule fields depend on v2fly core and interface support
TUN / traffic routing
Supports TUN mode; requires system permissions, relevant components, and a compatible platform environment
Routes traffic through Android's VPN interface; it doesn't use a desktop-style TUN toggle
Routes traffic through Android's VPN interface; background activity is also subject to system limits
Best for
Desktop users, people managing multiple subscription sources, and users who need precise routing
Android beginners, everyday users, and people who need per-app routing
Users with v2fly-compatible configurations or a need to test behavior with that core
Maintenance descriptions are qualitative and don't imply the same update frequency across all branches. Check system requirements before installing; interface differences don't indicate connection speed.
Client details
A closer look at each client
Check what each client is best suited for before deciding whether you need more advanced settings.
v2rayN: desktop configuration and routing
Recommended for desktop
For Windows, macOS, and Linux, v2rayN is the recommended choice. Its desktop interface makes it easy to view subscription groups, server lists, and logs together, and revisit routing settings after making changes. You can update multiple subscription sources separately by group instead of mixing every configuration into one list. Grouping helps with organization; it doesn't mean the client automatically picks the best-performing server for you.
The Windows download page offers the desktop edition and the classic WPF edition. The desktop edition uses a cross-platform interface for a similar workflow across desktop systems; the WPF edition retains the classic Windows interface. Menus may differ, so don't assume a screenshot of one interface represents every release package. Choose one edition to start with. When troubleshooting, avoid running multiple instances at once, as they may compete for local ports.
For everyday browsing, start with “Set system proxy” under “System proxy,” then choose a suitable mode under “Routing.” The system proxy affects only apps that honor that setting. If an app ignores it, consider TUN. TUN adds permissions, a virtual network interface, and more DNS troubleshooting, so it isn't required for every connection. Check which cores are available in your release package; the client name alone doesn't tell you which core it uses.
v2rayNG is the usual starting point for Android users. It uses the Xray core and brings subscription imports, configuration selection, and connection controls together in a mobile interface. The first time you connect, Android asks for VPN permission. Grant it so the client can route traffic through Android's VPN interface. This permission enables traffic routing on your device; it doesn't provide a remote configuration or replace importing a subscription.
To limit which apps use the connection, check the per-app routing options under “Settings” and choose which apps should use the proxy. Per-app routing decides which apps the client handles; domain or IP routing determines how requests are routed by the core. These are separate settings. After changing them, test the specific apps you want to use—one successful browser visit doesn't confirm that every app is routed as expected.
Common phone issues include battery restrictions, background app cleanup, and network changes. If the connection drops when the screen locks, check battery optimization and background-running permissions before switching cores. Another service using the VPN interface may also conflict with the client. For a simpler start, keep the default DNS and basic routing, confirm that one configuration works, and then enable extra features one at a time to make problems easier to pinpoint.
Choose v2flyNG because you need the v2fly core—not because a different app name is expected to improve your connection. It makes sense when your existing configuration is built for that core or you need to compare its protocol, transport, and routing behavior. Like v2rayNG, it runs on Android, provides subscription and configuration management, and routes traffic through the system VPN interface. The basic workflow is similar to other Android proxy clients.
Xray and v2fly are both part of the Project V ecosystem, but their feature development has diverged. Being able to import a subscription only means the client recognizes its format; it doesn't guarantee that the current core supports every protocol parameter or transport extension. For core-specific extensions, check the configuration requirements and logs. Don't assume a configuration that works in another client will work unchanged here.
For Android users without a specific core requirement, v2rayNG is still the recommended starting point because it keeps the initial setup simpler. If you keep v2flyNG as an alternative, manage its configurations and app data separately. Before uninstalling either client, save any subscription sources and custom rules you need. Hide subscription URLs and account details before sharing logs; don't post usable configurations as ordinary screenshots.
Start by filtering for your device platform, then consider your configuration needs.
Check these three things before installing
Match the platform and architecture. For Windows, choose between the desktop and classic WPF editions. For macOS, select Apple Silicon or Intel. For Linux, check both the architecture and package format (deb or rpm). For Android, check arm64 or the universal package. Find all download options on the download page.
Match the configuration to the core. The client provides the interface; the core handles the protocols. Check the protocols, transports, and extensions required by your subscription, then choose a combination that supports them accurately. Unless you have a specific requirement, there's no need to add complexity to your first setup just to compare cores.
Match the traffic routing method. On desktop, check whether the app honors the system proxy before deciding whether you need TUN. On Android, grant VPN permission first, then check per-app routing. The connected status shows only part of the local service state; confirm the result in the apps you actually use.
All three clients manage and run proxy configurations; none provides a remote server. Connection results depend on the configuration, remote service, local network, and routing settings. A single latency test can't replace testing actual access, and it isn't a reliable basis for a fixed ranking of clients.
The choice is simple: use v2rayN on desktop and v2rayNG on Android. Choose v2flyNG when you specifically need the v2fly core. After choosing a client, follow the setup guide. For import, port, or connection issues, check the FAQ for troubleshooting steps.