client.select

V2Ray Client Comparison and Selection

When choosing between v2rayN, v2rayNG, and v2flyNG, start with the operating system, then check core requirements and routing needs. For desktop platforms, v2rayN is the natural first choice; for everyday Android use, choose v2rayNG; choose v2flyNG only when you specifically need the v2fly core path.

recommended.path

Bottom line for desktop and Android

There is no single cross-platform winner among the three clients. The operating system defines the first filter; core and feature requirements determine the final choice.

Best for desktop

v2rayN

For Windows, macOS, and Linux. Subscription groups, node management, system proxy, routing rules, and TUN mode are brought together in one desktop interface, making it a good fit for users who frequently adjust rules or manage multiple configuration sets.

View desktop download options
Best for Android

v2rayNG

For Android, using the Xray core. Subscription imports, node switching, per-app proxying, routing settings, and system-level traffic interception can all be handled on the device, making it a practical everyday Android client.

View Android download options
Alternative core

v2flyNG

Also designed for Android, but centered on the v2fly core. It is not simply an alternative based on interface design; it is intended for cases that specifically require v2fly core behavior, configuration semantics, or an existing v2fly workflow.

Read the v2flyNG review
matrix

Platform, core, and feature comparison

The table summarizes each client’s main workflow. Feature locations may change as maintenance continues, so prioritize platform and core when choosing rather than comparing the number of visible interface options.

v2rayN vs. v2rayNG vs. v2flyNG
Comparison criteria v2rayN v2rayNG v2flyNG
Platform support Windows、macOS、Linux Android Android
Primary core Xray Xray v2fly
Maintenance status Actively maintained Actively maintained Under ongoing maintenance
Learning curve Moderate. There are many entry points, and new users must understand the differences between the system proxy, routing modes, and TUN. Low. The path from importing a subscription to selecting a node and starting a connection is short. Moderate. Basic operations are straightforward, but you should understand the differences between v2fly and Xray before choosing it.
Subscription groups Well suited to managing multiple subscriptions, with grouped updates, filtering, and configuration switching. Supports mobile subscription management for everyday updates and node switching. Provides subscription management, with an emphasis on the v2fly core configuration workflow.
Routing controls A comprehensive desktop interface for editing domain, IP, process, and outbound rules. Provides preset and custom routing for mobile per-app and domain-based rules. Provides mobile routing configuration; rule behavior depends on what the v2fly core supports.
Traffic interception Supports the system proxy and TUN mode, extending coverage to programs that do not read system proxy settings. Uses Android system network services to intercept app traffic, with configurable per-app coverage. Uses Android system network services to intercept app traffic; behavior is determined by the v2fly configuration.
Key features Subscription groups, routing UI, system proxy switching, TUN, and multi-configuration desktop management. QR code import, subscription updates, per-app proxying, routing settings, and quick mobile-network switching. v2fly core workflow, subscription management, per-app controls, and custom routing configuration.
Best for Desktop users, people managing multiple subscriptions, and advanced users who need fine-grained routing and TUN. Everyday Android users, first-time configurators, and mobile users working with Xray configurations. Android users who explicitly depend on the v2fly core and need to preserve existing configuration behavior.
client.notes

Detailed reviews of all three clients

The sections below explain each client’s operating model, strengths, limitations, and best-fit scenarios, focusing on real configuration workflows rather than simply listing feature names.

Best for desktop

v2rayN

Platform
Windows / macOS / Linux
Core
Xray
Best suited for
Comprehensive desktop management

v2rayN is designed for more than one-off connections. It brings common desktop management tasks into a single interface: subscription updates, node filtering, active-configuration switching, system proxy control, routing rules, and log review all have clear entry points. If you only need to import one subscription, the basic flow remains “import → update → select → start.” For users managing multiple subscriptions, groups and filters reduce the effort of finding configurations mixed together.

Not every desktop program reads the system proxy settings. Browsers usually follow the system proxy, but some command-line tools, game launchers, and standalone network programs may bypass it. In those cases, v2rayN’s TUN mode can expand coverage through a virtual network interface. Before enabling it, check the local listening port, DNS, and routing rules. If connections fail, switch back to system proxy mode first to determine whether the issue comes from the node or the TUN configuration.

The routing UI is one reason v2rayN suits advanced desktop users. You can route by domain, IP, process, and protocol to direct traffic, proxy it, or block it, but the more rules you add, the more important their matching order becomes. New users do not need to edit complex rules immediately. Start with a preset mode to verify connectivity, then add custom conditions one at a time for a clearer troubleshooting process.

Choose the v2rayN desktop version
Best for Android

v2rayNG

Platform
Android
Core
Xray
Best suited for
Everyday mobile use

v2rayNG has a short, practical workflow: import a configuration from a subscription URL, clipboard content, or QR code; update the subscription; select a node; and start the system network connection. For long-term mobile use, give each subscription a recognizable name and confirm the current group before updating, so identically named nodes from different sources do not cause confusion.

Traffic interception on Android relies on the network service provided by the system. The first time you connect, Android asks you to approve network connection access. Only after approval can the client send app traffic into its local processing path. Per-app settings let you limit which programs use that path, but retest the target app after changing the list; some programs cache connections and may need to be fully closed and reopened.

v2rayNG uses the Xray core and suits common Xray configurations and routing needs. Its routing settings can handle domains, IPs, and app scopes, but a mobile screen is not ideal for maintaining a large set of complex rules. If the rule set grows, organize targets, outbounds, and priorities on a desktop first, then keep only what you need on mobile to reduce troubleshooting caused by overlapping rules.

Choose the v2rayNG Android version
Alternative core

v2flyNG

Platform
Android
Core
v2fly
Best suited for
A specific core path

The key distinction of v2flyNG is its v2fly core, not a complete redesign of basic mobile operations. Subscription import, node selection, connection startup, per-app scope, and routing settings still follow a familiar Android client workflow. The deciding factor is whether the existing configuration was prepared for v2fly capabilities and semantics, and whether you explicitly want to stay within that core family.

A single subscription may contain multiple protocols and transport parameters. Being able to parse the subscription format does not mean every configuration behaves identically across different cores. When switching from v2rayNG to v2flyNG, check each configuration’s import result, connection logs, and routing for the target domain instead of checking only whether the node name appears.

For Android users without a core preference, v2rayNG is usually the more direct starting point. v2flyNG is better suited to users with existing v2fly configurations, those who need to reproduce established routing behavior, or those comparing the two core families while troubleshooting configuration differences. The two clients can be used separately for testing, but do not let them compete for the system network connection at the same time.

View v2flyNG download options
use.cases

Beginner, advanced, and multi-device scenarios

Once the platform is clear, choose based on configuration complexity and device condition. The four scenarios below cover first-time setup, fine-grained routing, multi-device management, and lower-powered Android devices.

decision.flow

Decision path from platform to core

Answer these four questions in order to avoid installing multiple clients and repeatedly migrating configurations.

platform

Confirm the current device platform

Windows, macOS, and Linux go directly into the v2rayN decision path; on Android, choose between v2rayNG and v2flyNG. The platform is a hard requirement and cannot be replaced by interface preference.

core

Check the core required by the configuration

For common Xray configurations, use v2rayN on desktop and v2rayNG on Android. Put v2flyNG first only when the configuration provider explicitly specifies a v2fly path or when you need to reproduce existing v2fly behavior.

routing

Assess routing complexity

For basic direct-versus-proxy routing, the client presets are usually enough. When you need fine-grained control by process, domain, IP, or app, choose the client whose rule controls fit the current platform, and keep the rule count reviewable.

takeover

Confirm which traffic must be intercepted

If desktop browsers follow the system proxy, TUN may not be necessary; enable it only when the target program bypasses the system proxy. On Android, traffic can be intercepted through the system network service, while per-app settings can narrow coverage and simplify troubleshooting.

verify

Validate with logs and access results

After installation, update the subscription and select a single node. Check the connection logs, then test the target domain and DNS resolution. Only after the basic path works should you import more subscriptions, enable traffic interception, or add custom rules.

selection.notes

Common mistakes when choosing a client

Names, cores, subscriptions, and connection modes belong to different layers. Mixing them together when diagnosing an issue can make a configuration problem look like a client problem.

subscription

Importing a subscription does not guarantee full compatibility

A subscription is only a distribution method for a collection of configurations. Actual connection behavior depends on each node’s protocol, transport, security parameters, and core capabilities. After switching cores, check the logs and routing results again.

tun

TUN is not a default requirement

When the system proxy already covers the target program, the simpler mode is easier to maintain. Add TUN and its DNS configuration only when a program ignores proxy settings and unified interception is required.

routing

More rules do not mean better routing

A large number of overlapping rules increases the complexity of match ordering and DNS decisions. It is easier to troubleshoot when you start with a small set of explainable rules, verify the outbound for each one, and expand gradually instead of importing a huge rule set at once.

multi-device

Multiple devices do not need the same interface

Desktop and Android use different system networking models. Pairing v2rayN with v2rayNG keeps the subscription source consistent while adapting system proxy, TUN, and per-app features to each platform.

Download clients