CLIENT SELECTION / Platform → Core → How you use it
V2Ray Client Comparison
Compare platform and core options for v2rayN, v2rayNG, and v2flyNG.
Start with your device, check the core features your nodes require, then compare subscription and routing tools. Similar-looking interfaces don't guarantee identical configuration fields, protocol extensions, or system-level traffic handling.
Compare the three clients
Features vary by version and platformThis table compares common user-facing features; core capabilities don't necessarily correspond to interface options. Maintenance status is a general guide, not a promise of a particular update schedule. For protocol extensions, TUN, or custom configurations, check the documentation and logs for your installed version.
| Feature | v2rayN | v2rayNG | v2flyNG |
|---|---|---|---|
| Platforms | Windows, macOS, and Linux; designed for desktop use. | Android; for phones and tablets. | Android; an alternative in the v2fly ecosystem. |
| Core | Supports cores such as Xray and v2fly; available options depend on the version and configuration type. | Xray core; suited to Android nodes that require its protocol extensions. | v2fly core; configure protocols and transports supported by that core. |
| Maintenance | Actively maintained; the cross-platform and classic WPF interfaces differ. | Actively maintained; features depend on the bundled core. | Community-maintained; check release notes for updates and available features. |
| Ease of use | Subscriptions are straightforward to import; system proxy, TUN, and routing options take more learning. | Import a profile, grant Android VPN permission, and test the connection; check background-running settings too. | Basic operation is similar to other Android clients; confirm configuration compatibility before choosing it. |
| Subscription groups | Manage multiple subscription sources and update, filter, and select nodes by group. | Group subscriptions to update and switch nodes on mobile. | Subscription management is available; grouping and update options depend on the installed version. |
| Routing UI | Desktop routing settings are easier to edit and inspect, though complex rules still require understanding their fields. | Routing settings let you adjust presets, custom rules, and which apps they apply to. | Routing settings are available; check your version for rule editing options and supported fields. |
| TUN and traffic routing | Includes a TUN option; requires platform permissions, supporting components, and a compatible version. | Routes traffic through Android's VPN interface; this isn't the same as a desktop TUN toggle. | Also uses Android's VPN interface; traffic handling depends on the implementation and settings. |
| Best for | Desktop users who manage multiple subscriptions or need fine-grained traffic routing. | Android users setting up a client for the first time, switching nodes, or using Xray features. | Users with existing v2fly configurations or who need to reproduce or verify that core's behavior. |
v2rayN: desktop management
Manage subscriptions, routes, and cores in one place.
Download for Windows →For desktop, start with v2rayN. Its strength isn't just importing a single node; it gives you a desktop interface for inspecting subscription sources, node lists, logs, and routing settings. It's a better fit than repeatedly editing fields on a phone when you manage several subscriptions, maintain different routing setups, or troubleshoot connection issues using logs.
Choose an interface and installer
The Windows download offers a desktop edition and a classic WPF edition. The desktop edition uses a cross-platform interface, while the classic WPF edition keeps a familiar desktop workflow; settings and interface details may be in different places. For macOS, choose the installer for your chip. On Linux, check both processor architecture and package format for your distribution. Choosing the right package is only the first step; available features also depend on your system environment.
Understand system proxy and TUN separately
A system proxy is a good first step for browsers and apps that follow system proxy settings, but some programs don't use it. TUN can route a broader range of traffic, but requires the right permissions, components, and routing configuration. On a fresh install, get a standard proxy connection working first, then enable TUN separately. Changing several network settings at once makes DNS, routing, and permission issues harder to diagnose.
Support for multiple cores doesn't mean configurations are interchangeable. The client generates or passes along configuration; the core interprets protocol, transport, and routing fields. After switching cores, check the node type, transport settings, and logs. Review custom configurations especially carefully. See the configuration reference for field details instead of guessing from interface labels.
v2rayNG: everyday use on Android
Xray core and mobile subscription management.
Download for Android →For Android, start with v2rayNG, especially if your provider supplies configurations that use Xray features. The typical workflow is to add a subscription, update the node list, select a profile, and grant permission for the system VPN connection. For the first test, use the default routing or a setup you understand. Avoid adding custom DNS and app-level routing rules before confirming that the node works.
Updating a subscription doesn't sync all settings
Subscription groups organize sources and nodes for updating and switching; they don't necessarily sync every route, DNS setting, or app rule from your desktop. The profiles available from the same subscription can also differ between desktop and phone due to parsing support, core versions, and protocol compatibility. If an import fails, first determine whether the URL couldn't be fetched, the link couldn't be parsed, or the protocol failed after startup.
Connection stability also depends on system settings
Android's system VPN interface routes traffic for selected apps and usually requires system permission. If another service is already using that interface, check for a conflict. If the connection drops when you lock the screen or switch apps, check battery optimization, background restrictions, and network switching behavior. Don't assume background limits mean the node is at fault.
v2rayNG's routing interface works well for common adjustments, but a phone screen isn't ideal for piling on rules. For advanced domain lists, IP ranges, or outbound tags, establish the matching order and test rules one at a time. A node latency test reflects only its specific test conditions, not how an app actually connects. Check the logs and the target app's behavior as well.
v2flyNG: for v2fly configurations
Choose it based on protocol and configuration requirements.
View v2flyNG options →Choose v2flyNG for a specific need for the v2fly core, not as a drop-in replacement for v2rayNG. It's an Android alternative if you already have a configuration tuned for v2fly behavior or need to check how that core handles transports, DNS, and routing. Without that need, v2rayNG is usually the easier place to start when following guidance for Xray-based nodes.
Shared ecosystem, different configuration fields
V2Fly and Xray are both part of the Project V ecosystem, but their later extensions aren't identical. Sharing a basic protocol name doesn't mean every transport combination, extra parameter, or newer feature is interchangeable. Before importing, check that the protocol, transport layer, and security settings are supported by your chosen core. Simply changing the client won't add features the core doesn't support.
When evaluating v2flyNG, start with a known-compatible configuration and verify the basic connection. Then check subscription updates, routing, and system VPN traffic handling. If you have custom JSON, keep a copy of the working original and compare each section during migration; don't change the server address, DNS, and routing rules all at once. Check release notes for maintenance and feature details rather than guessing from the package size or name.
To reproduce a particular core's behavior, record the configuration type and error, then compare under the same network conditions. Clients can use different default DNS, routing, and logging levels, so one test result doesn't prove the core is responsible. Rule out default-setting differences first for a meaningful comparison.
Choose by use case
View the getting started guide →Three things to check before downloading
View all clients →- Check platform and architecture. For desktop, start with v2rayN and choose a package for your operating system and processor. For Android, start with v2rayNG and check whether the arm64 or universal build fits your device. Package format, processor architecture, and core type are separate considerations.
- Check whether your node requires a specific core. Review the protocol, transport, and security settings in the shared link or configuration notes. For Xray extensions, verify which core will actually run; for an existing v2fly configuration, check v2flyNG compatibility. A successful import doesn't guarantee a working connection.
- Decide whether you need broader traffic routing. On desktop, see whether a system proxy covers the apps you use before enabling TUN. On Android, check system VPN permission and app scope. If something goes wrong, revert the last setting you changed instead of switching several options at once.
The short version: v2rayN is the top desktop pick, v2rayNG is the top Android pick, and v2flyNG is for specific v2fly configuration needs. All three are GUI tools for configuring and connecting; installing one doesn't provide working nodes. Once you have a subscription or node details, choose the right platform on the download page and follow the setup guide to import and test it.
Will switching clients fix every connection problem?
No. An unreachable server, expired node details, incorrect system time, DNS settings, or misapplied rules can cause the same problem in another client. Check the logs to see whether the failure occurs during parsing, connection, or protocol negotiation before deciding to switch clients or cores.
Can all three clients use the same config.json?
Don't assume they can. Clients may generate their own configuration, and local inbound ports, system traffic handling, and default routes may differ. Xray and v2fly also have different extension fields. For migration, prefer supported share links or subscriptions; check custom JSON section by section.
If I install both Android clients, will their connections stack?
You can keep configurations in both apps, but Android's VPN interface generally can't be used by two apps at the same time. Stop the current connection before starting the other client. Switching between them can help with troubleshooting; running both at once won't strengthen the connection.