v2rayN, v2rayNG, and v2flyNG: Feature and Core Comparison

Compare the three clients by platform, core, protocols, subscriptions, and routing. Evaluate desktop and Android separately instead of installing one just because its name looks familiar.

Quick Overview

Use v2rayN first on Windows, macOS, and Linux. On Android, choose v2rayNG when you need Xray protocol support, or v2flyNG when you need to preserve a v2fly-based configuration model. This guide is for users installing a client, migrating a subscription, or checking VLESS, VMess, and Reality compatibility. By the end, you can choose based on the node protocol and your use case.

Start by narrowing candidates by platform and node type

The three apps have similar names, but different roles. v2rayN is a desktop client for Windows, macOS, and Linux; v2rayNG and v2flyNG target Android. The platform eliminates most wrong choices: use v2rayN on desktop, then choose between the two Android clients by core family.

The second factor is the node configuration. When a subscription contains only VMess, Shadowsocks, or standard VLESS, all three cores can usually handle some common combinations. When it clearly includes VLESS, XTLS Vision, Reality, Mux parameters, or Xray-specific transport fields, prefer an Xray-based client. Being able to import a link does not mean the active core can execute every field in it.

The third factor is the configuration source. When a provider explicitly specifies Xray, VLESS Reality, or Vision, use v2rayN on desktop and v2rayNG on Android. If you already have v2fly JSON configurations, need to preserve v2fly routing semantics, or the node maintainer generates configurations specifically for v2fly-core, v2flyNG is the more direct Android choice.

v2rayN

Recommended

A single desktop entry point for subscriptions, system proxy settings, routing rules, and multiple core configurations—well suited to everyday desktop use.

Best for: Windows, macOS, and Linux workstations

v2rayNG

An Android Xray-core client for VLESS, Reality, VMess, and mobile setups that need per-app proxying.

Best for: Xray nodes and everyday Android connections

v2flyNG

An Android v2fly-core client that keeps its configuration model aligned with the v2fly ecosystem, making it suitable for existing VMess and standard routing setups.

Best for: v2fly configurations and existing-node compatibility

Bottom line: platform comes before feature count

Limit the candidates to your current operating system first, then check the core features used by the subscription. Desktop users do not need to compare all three repeatedly; Android users should not overlook the configuration differences between Xray and v2fly just because the interfaces look similar.

Core Families and Protocol Support

The client handles the interface, subscriptions, configuration generation, and system integration; the core actually establishes the connection. v2rayN and v2rayNG center their mainstream configuration paths on Xray-core, while v2flyNG corresponds to v2fly-core. Both core families handle VMess, common transports, and routing rules, but Xray has a clear ecosystem fit for VLESS, XTLS Vision, and Reality combinations.

Version checks cannot rely on the client name alone. For example, in the v2rayN 7.x and v2rayNG 1.10.x interface families, client and core versions update separately. After upgrading a client, confirm the loaded core on the About page, core management page, or runtime log. The protocol name in a subscription link is only the first layer; transport, security, and flow-control fields also affect compatibility.

3 platforms
v2rayN covers Windows, macOS, and Linux
2 core families
Two selection paths: Xray and v2fly
10808
Common local SOCKS listening port
10809
Common HTTP proxy port in classic configurations
Core capabilities compared
Comparison v2rayN v2rayNG v2flyNG
Primary platforms Windows、macOS、Linux Android Android
Primary core path Xray-core, with additional core options available depending on the version Xray-core v2fly-core
VMess Supported Supported Supported
VLESS Suitable for Xray configurations Suitable for Xray configurations Verify against the v2fly core and configuration fields
Reality and Vision Preferred choice Preferred choice Not the preferred option for this type of node
System integration Desktop paths including the system proxy and TUN Android VPN interface and per-app proxying Android VPN interface and routing settings

Subscription Management and Cross-Device Use

Subscription management is not about the number of buttons; it is about clear updating, grouping, and failure recovery. v2rayN is well suited to multiple subscription sources: save nodes by group, then test latency, filter results, and set an active server on desktop. If the list is empty after an update, first check whether the subscription group is enabled, then review network and parsing errors in the update log.

Both v2rayNG and v2flyNG can maintain subscriptions on Android, but the same subscription may not produce identical node fields in both cores. Some providers return different content based on the client type, or place Xray-specific nodes alongside general VMess nodes. After importing, open the node details and verify the address, port, transport, security layer, and SNI instead of relying only on the node name.

When sharing a subscription between desktop and Android, there is no need to export a database between devices. A more reliable approach is to add the same subscription URL separately and let each device update independently. Node deletion, ordering, and the currently selected server are usually local data; manual sorting on one device should not be expected to sync automatically to another.

Recommended setup: subscribe separately on desktop and Android

Desktop (v2rayN)
  • Add a subscription group and save the original URL
  • After updating, test latency before setting an active server
  • Open “Settings” → “Parameter Settings” and verify the local ports
  • Choose the system proxy or TUN based on the app’s needs
Android (v2rayNG)
  • Add the same subscription URL
  • For Reality nodes, verify the SNI and fingerprint fields
  • Enable per-app proxying when needed
  • Run the connection test again after changing networks

Keep the subscription source consistent while managing client settings separately. Desktop rules and the mobile app list remain independent, making troubleshooting clearer.

Bottom line: the same subscription does not mean the same runtime configuration

The node servers can be shared, but system proxy settings, DNS, routing, and per-app lists belong to each device. When changing clients, migrate the subscription URL first, then configure the integration method again for the new platform.

Routing, System Proxy, and Per-App Features

Routing determines which connections use the proxy and which connect directly. v2rayN’s advantage is that desktop system proxying, rule-based routing, and TUN scenarios are managed in one client. For ordinary browsers and apps that follow the system proxy, enable the system proxy first; evaluate TUN only for programs that do not read system proxy settings. When both methods are enabled, make sure DNS and routing are not processing the same traffic twice.

Android does not use the same desktop system-proxy workflow. v2rayNG and v2flyNG usually take over traffic through the system VPN interface and can decide on a per-app basis whether traffic enters the proxy. When banking, LAN, or enterprise apps must stay direct, per-app proxying is more direct than writing individual domain rules. Use core routing when you need to split traffic by domain, destination IP, or geographic rules.

Routing rules are generally matched in order. Once a domain rule matches, traffic goes to its designated outbound; rules that resolve IPs may be affected by DNS results; unmatched connections go to the final default outbound. Broad rules placed first can prevent precise rules later from running. Put exact domains and destination addresses first, followed by broader geosite, geoip, or fallback rules.

  1. Step 1: Build a minimal configuration. Keep only one known-good node, disable extra routing and complex DNS options, and verify the basic connection first.
  2. Step 2: Confirm the integration method. In v2rayN, check the system proxy status and local ports such as 10808 and 10809; on Android, confirm the VPN connection status in the system status bar.
  3. Step 3: Add rules one group at a time. Add only one set of domain or IP conditions at a time, and watch the core log for the destination address, outbound tag, and error reason.
  4. Step 4: Test direct and proxied traffic. Visit one site that should connect directly and one target that should use the proxy. Do not judge every rule from a single webpage.
  5. Step 5: Restore the app scope. On Android, add the per-app list again; on desktop, start the programs that require TUN integration.

Migration and Verification: From Connected to Reliable

The most common migration mistake is copying the generated JSON directly. A client regenerates its runtime configuration based on its own version, core, and interface options; outbound tags, DNS structures, or experimental fields from an old file may not fit the new environment. Migrate the subscription URL and individual node links first, then rebuild routing and system integration settings in the target client.

For a single-node check, record five items: server address, remote port, protocol, transport, and security layer. For VLESS Reality, also verify serverName, publicKey, shortId, and flow; for VMess WebSocket, verify Host and the path; for TLS connections, check SNI. If a subscription converter omits any field, the node may appear present while the handshake fails.

Performance comparisons should also control the variables. On the same network, use the same server and run three consecutive tests of connection setup time and download speed; after switching clients, wait for the old connection to end. If one client uses global proxying while the other uses rule-based routing, the results cannot directly represent core performance. Timeouts, DNS failures, and connection refusals in the logs are more useful for diagnosis than a single latency figure.

Selection order
1. Operating system: Desktop / Android
2. Node protocols: VMess / VLESS / Reality
3. Core requirement: Xray / v2fly
4. Integration method: System proxy / TUN / Per-app proxy
5. Verification results: Logs, ports, DNS, routing outbound

Common Client Selection Questions

Similar names do not guarantee configuration compatibility. If imports fail, the connection drops offline, or only some apps work, check the four layers: platform, core, protocol, and integration method. The questions below cover common decisions after installation.

Should v2rayNG be installed on Windows?

No. Use v2rayN on Windows, macOS, and Linux; v2rayNG is for Android. After installing the desktop client, update the subscription, then open “Settings” → “Parameter Settings” to verify the local ports.

There is a Reality node on Android. Which client should I choose?

Choose v2rayNG, which uses the Xray core. After importing, open the node details and verify that VLESS, Reality, SNI, publicKey, shortId, and flow are all present before testing the connection.

Must a VMess subscription use v2flyNG?

No. VMess can be handled through both Xray and v2fly paths. If an Android subscription also includes VLESS Reality nodes, prefer v2rayNG; choose v2flyNG when the configuration maintainer explicitly uses the v2fly core.

What should I do if the subscription imports successfully but every node times out?

First check the device time and current network, then verify the server address, remote port, and security layer. On desktop, check the core log for DNS failures or port conflicts; on Android, switch networks once and reconnect.

Do all three clients need to be installed at the same time?

No. Keep the client appropriate for each device: v2rayN on desktop, and either v2rayNG or v2flyNG on Android based on the core requirement. Running similar clients in parallel can instead cause port or VPN integration conflicts.

Client downloads View installers for four platforms