Choosing between v2rayN, v2rayNG, and v2flyNG: V2Ray client kernels and platform comparison

Compare v2rayN, v2rayNG, and v2flyNG by platform, core, subscription, and routing features, with practical picks for desktop and Android.

At a glance

For desktop, first check which operating systems and architectures v2rayN supports. On Android, consider v2rayNG for Xray-based nodes; choose v2flyNG when you specifically need the V2Fly core. This guide distinguishes clients, cores, and node protocols, explains why the same subscription can import differently, and covers setup on both platforms, port checks, and migration. Start by confirming feature compatibility, then compare real-world network performance—not similar-sounding names.

Platforms and cores: identify what you’re installing

v2rayN, v2rayNG, and v2flyNG are clients, not proxy services. A client manages server details, builds configurations, starts a core, and provides a proxy interface to the operating system or apps. The core handles protocols, transports, DNS, and routing rules. Installing a client does not give you a working server; subscription URLs must come from a trusted source.

The names are similar, but these apps are not desktop and Android counterparts with interchangeable settings. v2rayN is designed for desktop; its interface and available cores depend on the release package. v2rayNG targets Android and uses the Xray core, while v2flyNG also targets Android but uses the V2Fly core. Similar-looking interfaces don’t make their configurations interchangeable.

Client Platforms Core What to check first
v2rayN Windows、macOS、Linux Can manage cores such as Xray and sing-box; support varies by release package Operating system, processor architecture, desktop interface, and the core actually in use
v2rayNG Android Xray core Node protocol, transport settings, and Android requirements
v2flyNG Android V2Fly core Whether the node uses a protocol and configuration format supported by this core

Different Windows interface editions are not different node protocols. Choose the correct package for macOS or Linux as well. Check the download page for your operating system and architecture, such as x64 or arm64, then look in the client logs for the core name and version. The client version and core version are separate; record both when troubleshooting.

Node protocols: V2Ray support doesn’t mean configurations are interchangeable

“Supports V2Ray” is too broad to tell you whether a specific configuration will work. Before importing, check the protocol, server address, port, credentials, transport, and security settings. VMess and VLESS are proxy protocols; WebSocket and gRPC are transport methods; TLS and REALITY are connection security settings. These belong to different layers and cannot be substituted for one another.

v2rayNG: Xray configurations on Android

Recommended

For Android setups using Xray-supported VLESS and REALITY configurations, start with v2rayNG. A successful connection still depends on the bundled core version and complete settings, including the public key, serverName, and shortId.

Best for: everyday Android use and nodes with clearly specified Xray settings

v2flyNG: V2Fly configurations on Android

Use it with existing V2Fly configurations or when you need to verify V2Fly behavior. Check combinations such as VMess and WebSocket field by field; Xray REALITY settings cannot simply be applied to this core.

Best for: environments that require V2Fly and maintaining existing compatible configurations

v2rayN: desktop configuration management

Manage subscriptions, nodes, and routing from one desktop app. If a node imports but the core won’t start, check which core is actually being used—not just whether the node appears in the list.

Best for: desktop browsers, developer tools, and managing multiple subscriptions

For example, a server port of 443 does not mean TLS must be enabled, nor does it mean you can enter any domain name. The WebSocket path, request Host, and TLS serverName serve different purposes. They may match, but they may also differ. Use the values provided by the server; don’t guess based on the node name.

Bottom line: check the core before troubleshooting imports

If import fails, check the sharing format and supported fields. If import succeeds but the core won’t start, check protocol and core compatibility. For Android nodes that require REALITY, verify the v2rayNG core and settings first; changing the node remark or scanning the QR code repeatedly won’t fix the issue.

Subscription management: a shared URL doesn’t sync every setting

Subscriptions typically fetch multiple nodes at once. The same URL can produce different results in different clients: the subscription service may return content based on client type, and a client’s parser may filter out unsupported protocols. A different node count doesn’t automatically mean a network problem. Distinguish between download failures, parsing errors, and unsupported nodes.

  1. Test a single node first. Import a trusted share link using the client’s clipboard or QR code import option. Once the connection works, add the full subscription to narrow down any issues.
  2. Then create a subscription group. In v2rayN, look for “Subscription Group” → “Subscription Group Settings.” In v2rayNG, open the side menu and choose “Subscription Group Settings.” Enter a group name and URL, then update it. Menu labels can vary by version, so use the subscription management option in your current interface.
  3. Choose direct or proxied updates. If the URL is reachable directly, try a direct update first. If it’s only reachable through an existing connection, update through the proxy. Proxied updates require a working node, so they can’t fix a setup where every node is down.
  4. Protect subscription credentials. Subscription URLs may contain access tokens. Don’t share the full URL in public screenshots or troubleshooting posts. When asking for help, include only the error type, response status, and a redacted domain.

Subscription updates generally don’t sync system proxy settings, per-app lists, routing priorities, or local listening ports. Even with the same subscription on a computer and phone, each device may use a different connection method and DNS policy. After updating, make sure the active node is still available and that the selected node changed as expected.

Using the same subscription on two platforms, with separate connection settings

Desktop: v2rayN
  • Add a subscription, then select a compatible core and node.
  • Test the connection in a browser using the system proxy.
  • Set a local proxy address in developer tools if needed.
Android: v2rayNG
  • Use a compatible subscription URL from the same provider.
  • Grant permission to establish the Android VPN connection.
  • Set up the per-app list to match your needs.

You can use the same node source on both devices, but the lists may differ depending on the subscription response and protocol support. Configure routing and per-app settings separately on each device.

Routing and connections: desktop system proxy vs. Android VPN mode

v2rayN’s system proxy setting directs apps that follow the operating system’s proxy settings to a local proxy; it doesn’t capture all traffic. Some command-line tools, games, and apps with their own network stacks may ignore the system proxy. Desktop TUN mode can cover more traffic, but requires permissions and involves a virtual network adapter and routing. Enable it only after confirming that the regular proxy works.

On Android, v2rayNG and v2flyNG can use VpnService to create a local VPN interface and send traffic from selected apps through the client. The VPN icon only confirms that the local interface is up; it doesn’t prove the remote node is connected. The per-app list determines which apps use this route. Routing rules then decide whether their traffic is proxied or sent directly.

Local ports: verify desktop connections with explicit addresses

Port checks help diagnose cases where the client appears to be running but a specific tool can’t connect. This example uses a manual setup with SOCKS at 127.0.0.1:10808 and HTTP at 127.0.0.1:10809. These are not universal defaults; if your version uses a mixed inbound or different ports, check the settings and startup logs.

10808
SOCKS listening port set manually for this example
10809
HTTP listening port set manually for this example

In v2rayN, check the local listener settings under “Settings” → “Parameter Settings”; section names may differ between interface versions. If a tool supports only HTTP proxies, enter the address of an actual HTTP listener rather than using a SOCKS port. The commands below check only whether the example ports are listening; they don’t confirm that the remote node works.

# Windows PowerShell: check the two local listeners in this example
Get-NetTCPConnection -State Listen -LocalPort 10808,10809

# Linux: check local listening ports
ss -lnt

# macOS: show local TCP listeners
lsof -nP -iTCP -sTCP:LISTEN

If nothing is listening, check whether the core started, whether the configuration reported errors, and whether another process is using the port. If a port is listening but the tool still can’t connect, verify its proxy type and address. Keep the listener bound to the loopback address by default. If you need to share it with devices on your local network, review the bind address, firewall, and access controls separately; don’t expose a local listener to the public internet.

Migration and troubleshooting: preserve settings and test each layer

When moving from v2rayN to an Android client, migrate the subscription URL or a single-node share link—not the entire desktop runtime configuration. A generated configuration may include desktop inbounds, file paths, rule resource locations, and core-specific fields. Working on the original device doesn’t mean it can be imported directly on a phone.

  1. Record the original node’s protocol, transport, security settings, and key fields. Keep a private backup of the configuration.
  2. Import one node into the new client first, keep the default connection settings, and test with a real page load or app request.
  3. Next, add the subscription, then configure routing and the per-app list. Retest after each category of change to avoid introducing multiple variables at once.
  4. For speed comparisons, keep the node, destination, network, and test time consistent. On Android, use the same Wi-Fi or mobile network for each test so network differences aren’t mistaken for core performance.

Why does my phone show fewer nodes after importing the subscription that works on my computer?

First compare the subscription URLs and update times on both devices, then check the update logs for parsing errors. If a specific protocol is missing, confirm that the Android client’s core supports it. If the entire list is empty, check that the response is valid subscription data—not a login or error page.

v2rayNG says connected, but one app won’t open. What should I check?

Open the per-app proxy settings and check the list mode and whether the app is included. Then review the routing rules and logs. If other apps work, start by checking how that app is routed instead of replacing all your nodes.

Can v2flyNG import a complete Xray configuration directly?

Don’t assume full configuration compatibility. First confirm that V2Fly supports the node protocol, then recreate the node using a share link or manual entry. For Xray-specific settings such as REALITY, use a client and core that support them rather than removing security fields to force it to start.

Is v2rayNG always faster than v2flyNG?

There’s no basis for that assumption. Compare the same node setup supported by both clients on the same network, and test real requests, connection stability, and sustained transfers. If the protocols or routes differ, the results can’t isolate client performance.

The choice comes down to three steps: select a client for desktop or Android, match the core to the node protocol, then configure traffic coverage and routing for your apps. Use v2rayN on desktop. For Xray features on Android, start with v2rayNG; choose v2flyNG when you specifically depend on V2Fly. For terminology, see the Glossary. For connection and split-routing setup, see the User Guide.

Download clients