Platform, core, and feature comparison
All three clients manage proxy configurations, but they serve different workflows. v2rayN focuses on organizing subscriptions and connection settings on desktop, while the two Android clients prioritize mobile connections, notifications, and per-app traffic controls. Ease-of-use notes describe the setup flow, not performance. Maintenance status is a general indication, not a promise of the same update schedule for every platform or feature.
Swipe horizontally to view the table on narrow screens. Menu names may change between releases; check the options in your installed client.
| Comparison criteria | v2rayN | v2rayNG | v2flyNG |
|---|---|---|---|
| Platforms | Windows、macOS、Linux | Android | Android |
| Core | Xray is a common choice; check the settings and package for other available cores | Xray core | v2fly core |
| Maintenance | Actively maintained | Actively maintained | Actively maintained |
| Getting started | The basic connection flow is straightforward; system proxy, routing, and TUN each require separate setup | Import a subscription, select a configuration, and approve the VPN permission when connecting | The basic connection flow is similar; check that your configuration is compatible with the core |
| Subscription groups | Organize multiple subscription sources into groups | Manage subscriptions and view configurations by subscription | Manage subscriptions and use them in groups |
| Routing interface | Manage rules and policies in routing settings, with an interface suited to desktop editing | Routing settings and rule configuration are available in a mobile-friendly interface | Routing options are available; rule support depends on the v2fly core |
| TUN and traffic handling | TUN mode is available and requires system permissions and the relevant components | Uses Android's VPN service to create a virtual network interface; its setup differs from desktop TUN | Routes traffic through Android's VPN service; desktop TUN settings don't apply |
| Key features | Manage subscriptions, system proxy, routing, and LAN connection settings in one place | Xray configuration support, mobile connection management, and per-app routing | Uses the v2fly core configuration model, making it easier to keep an established setup |
| Best for | Desktop beginners and users who need fine-grained routing and traffic handling | Everyday Android users and those who need Xray features | Android users who specifically rely on features supported by the v2fly core |
| Downloads | Desktop Downloads | Recommended Android Client | Alternative Android Client |
v2rayN: Desktop Subscription and Routing Management
On desktop, start with v2rayN. Subscription groups, configuration lists, and proxy settings are brought together in one graphical interface. It's convenient for pasting shared links from a keyboard and organizing multiple subscription sources over time. To get started, add a subscription URL and update it, then select the configuration you want to use. First, learn what the system proxy does; there's no need to change DNS, routing, and TUN all at once.
Configure system proxy and TUN separately
With “Set system proxy automatically” enabled, only apps that follow the system proxy settings will use it. Some apps have their own connection settings and may not follow the system proxy. TUN routes traffic through a virtual network interface, covering cases the system proxy can't handle, but adds permissions, routing, and DNS to the troubleshooting process. Confirm that the basic connection works through the system proxy first, then enable TUN if needed. This makes it easier to pinpoint the cause if something goes wrong.
Desktop edition or classic WPF edition?
The Windows download section offers the desktop edition and the classic WPF edition. The desktop edition uses a cross-platform interface, while the WPF edition keeps the classic interface; both are versions of v2rayN, not separate clients to compare. If you're used to one interface, you can stick with it. On macOS and Linux, choose the package for your platform instead of following Windows installation steps. Permissions, system proxy settings, and virtual network interfaces also work differently across desktop operating systems.
The desktop interface makes it easier to inspect configuration relationships when editing domain rules, checking outbound selection, or providing a proxy entry point for devices on your LAN. The tradeoff is more settings; not every toggle needs to be enabled. For step-by-step guidance, see Proxy Modes and Routing and Traffic Splitting.
v2rayNG: The Everyday Android Pick
For Android, start with v2rayNG. It uses the Xray core and organizes subscription management, configuration switching, and connection startup around mobile use. After importing a subscription, update it, then select a configuration from the list. The first time you connect, Android will ask for VPN permission. Approve it to create the virtual network interface used to route traffic; saving a subscription URL alone doesn't complete these steps.
Per-app routing is more direct than copying desktop rules
If you only want certain apps to use the proxy, start with the client's per-app routing settings. Choose which apps to include or exclude, then check how the current mode interprets those choices; the checkboxes alone don't tell the whole story. Domain- and IP-based rules belong to the core's routing layer and can further distinguish connections by destination. These methods operate at different layers. Change one type of setting at a time, then test with the relevant app.
Android generally allows only one standard VPN service to be active at a time. Other network tools that use a VPN interface may compete with the client. If startup fails or another connection takes over, check Android's VPN settings before importing the subscription again. Background battery restrictions can also interrupt a persistent connection; check your system's battery management settings rather than assuming the protocol is at fault.
If you need Xray-specific features, confirm that the core bundled with your installed client supports the parameters in your configuration. Successfully importing a shared link only means the client accepted the input; it doesn't confirm that the server address, authentication, and transport settings match. See the subscription import guide for the basics, and find installers in the Android downloads section.
v2flyNG: Choose It When You Need the v2fly Core
v2flyNG is an alternative Android client that uses the v2fly core. Its main advantage is continuity with v2fly configurations and features—not a guaranteed faster or more battery-efficient connection. If your existing setup specifically targets v2fly and its protocols, transports, and routing syntax are supported, you can keep using it. Otherwise, Android beginners can start with v2rayNG and avoid having to choose a core upfront.
Core differences go beyond client names
Project V is part of the broader technology ecosystem. V2Fly continues development of the V2Ray core, while Xray has evolved as a separate core branch. They share some configuration concepts, but their later extensions don't fully overlap. In particular, don't assume v2flyNG can use Xray-specific security layers or parameter combinations unchanged. Check each configuration field for compatibility instead of comparing client names or icons.
When moving from another Android client, first import a configuration you've confirmed is supported and test the connection. Only then reorganize subscriptions and rules. Don't overwrite your existing settings all at once, and don't switch to v2flyNG just because your phone is old. Check the device's Android version requirements, processor architecture, available memory, and background app behavior separately. A different core doesn't guarantee compatibility with the device.
Choosing a client for beginners, advanced setups, and multiple devices
First decide which device will run the client, then decide which traffic it needs to handle. In most cases, using the recommended client for your platform makes it easier to establish a reliable workflow than repeatedly switching between clients. Switch only when there's a specific missing feature or a configuration compatibility issue.
Configuration checklist before switching clients
Moving clients means migrating configuration, not copying every setting from the old interface. Subscription URLs, shared links, and full JSON configurations are different input types; use the matching import option in the new client. A full JSON file may already contain inbound, outbound, DNS, and routing settings, so don't paste it as if it were a regular subscription URL.
- Keep the original subscription and a working configuration. Don't delete subscription groups in the old client until you've confirmed the new client works. Subscription URLs may contain access credentials, so keep them out of public screenshots and troubleshooting logs.
- Check parameters beyond the protocol. Verify the security layer, transport type, server name, and other fields. Seeing a protocol name in the interface doesn't mean the core recognizes every extension.
- Set up local traffic routing again. Desktop system proxy, TUN, and Android's VPN service are separate controls. After switching, connect using the new platform's method, then check whether app traffic is being routed through the client.
- Restore routing and DNS settings as needed. Confirm the basic connection first, then add traffic-splitting rules gradually. Check rule order, outbound tags, and DNS resolution together; copying a rule alone doesn't guarantee identical behavior.
- Test with the apps you actually use. Check both destinations that should use the proxy and those expected to connect directly. A successful subscription update, a configuration appearing in the list, and an app reaching its destination are three separate steps.
If the connection fails after migration, return to the last working setup, then check the log for the failing field and stage. If a subscription won't download, check whether its URL is accessible. If the core won't start, check configuration compatibility and port conflicts. If the client starts but apps can't connect, check which traffic is being routed. Troubleshooting one stage at a time is more useful than repeatedly changing clients. For more help, see Frequently Asked Questions.
Which Client to Choose and Where to Download
For desktop, choose v2rayN; for Android, choose v2rayNG. v2rayN is suited to managing subscriptions, routing, and system connection settings on a larger screen. v2rayNG handles everyday mobile connections through Android's VPN service. Reserve v2flyNG for setups that specifically need the v2fly core and have confirmed configuration compatibility; it isn't a default replacement for older phones or connection troubleshooting.
Go to the download center, choose your operating system, then select a package by processor architecture and installation type. On Windows, choose the desktop or classic WPF edition. On macOS, select Apple Silicon or Intel. On Linux, choose the package format for your distribution. On Android, pick a package for your device's architecture. After installation, follow the getting started guide to import a subscription. To understand how proxies, routing, and TUN work together, read the beginner-to-advanced guide.