client / decision matrix

V2Ray Client Comparison and Selection Guide

Compare v2rayN, v2rayNG, and v2flyNG by platform, core, subscription groups, routing rules, and traffic interception. Narrow the options by device first, then choose based on configuration depth.

client-map.json active
desktop v2rayN Windows / macOS / Linux
android.primary v2rayNG Xray core
android.alternative v2flyNG v2fly core
Selection order platform → core → workflow

selection / summary

Check the platform first, then the core

These three clients are not interchangeable on the same platforms. Evaluate desktop and Android separately, then compare the core and configuration workflow.

Desktop recommendation

Top pick: v2rayN

When Windows, macOS, and Linux users need one consistent desktop configuration interface, v2rayN is the preferred choice. It brings server lists, subscription groups, system proxy, routing rules, and TUN mode into one GUI, making it suitable for progressing from basic connections to advanced traffic splitting.

Go to desktop client downloads →

Android recommendation

Top pick: v2rayNG

For Android devices, start with v2rayNG. It primarily uses the Xray core and offers a focused workflow for common subscription formats, routing rules, and system-wide traffic interception, with documentation that suits first-time setup. Choose v2flyNG when the configuration specifically requires the v2fly core.

Go to Android client downloads →

Alternative criteria

Choose v2flyNG when the core matters

v2flyNG’s main value is its v2fly core. Use it as an Android alternative when existing configurations are explicitly written for v2fly or when you need to troubleshoot compatibility between two core implementations, rather than switching solely because the interfaces look similar.

Read the v2flyNG review →

matrix / capabilities

Client capability comparison

In this table, “difficulty” means the amount of work needed to import a subscription, switch configurations, and set up basic routing for the first time. It does not measure feature depth.

Comparison criteria v2rayN v2rayNG v2flyNG
Platform support Windows、macOS、Linux Android Android
Primary core Supports core components such as Xray and V2Fly, depending on the client configuration and selected core Xray core v2fly core
Maintenance status Actively maintained Actively maintained Maintained continuously
Basic setup difficulty Moderate. There are many menus, but configuration options are clearly organized Low. Mobile import, selection, and startup steps are streamlined Moderate. The basic workflow is straightforward, but core differences require extra understanding
Subscription management Well suited to managing multiple subscription sources, groups, and bulk updates Well suited to mobile subscription updates and configuration switching Supports common subscription imports and configuration management
Routing rules interface Ample desktop workspace for reviewing and adjusting longer rule sets Provides mobile routing settings for maintaining commonly used rules Provides basic routing configuration, with emphasis on v2fly core behavior
TUN and traffic interception Supports desktop TUN mode, including programs that do not read the system proxy Uses the Android VPN service to intercept device traffic, with per-app policies Uses the Android VPN service to intercept device traffic, following a familiar mobile configuration workflow
Key features Subscription groups, routing rules UI, system proxy, TUN, and multi-core desktop management QR code and clipboard import, per-app proxy, routing settings, and quick mobile switching v2fly core, subscription import, mobile routing, and configuration switching
Best for Desktop users, people managing multiple subscriptions, and advanced users who need precise routing and TUN Everyday Android users, first-time setup users, and anyone who needs per-app policies Users with an explicit need for the v2fly core or core compatibility testing

clients / detailed review

In-depth reviews of the three clients

Choosing a client is not just about its feature list. The right fit also depends on the device range, configuration size, and everyday maintenance workflow.

desktop > v2rayN

v2rayN: Desktop configuration and advanced routing

Desktop top pick

v2rayN’s main strength is centralized management of common desktop tasks. After importing a subscription, you can switch configurations in the server list, update subscriptions, set the active server, and choose between the system proxy and TUN mode. For browsers and software that follow the system proxy, the system proxy is usually easier to understand. For game launchers, command-line programs, or apps that ignore the system proxy, TUN mode provides more comprehensive traffic interception.

As the number of subscriptions grows, v2rayN’s groups and list view become increasingly useful. Keep work, testing, and everyday configurations separate instead of repeatedly searching through one long list. Its routing interface is also better suited to desktop use: inspect domain, IP, process, and outbound tags one by one, then use logs to verify matching after changes.

Keep in mind that v2rayN has more settings than mobile clients. There is no need to adjust everything at once. First complete the shortest path—“import subscription → choose server → enable system proxy → verify connection”—then learn routing and TUN. This separates subscription, node, and advanced-mode issues during troubleshooting.

  • Best for: Windows, macOS, and Linux desktops, plus users who manage multiple subscription sources.
  • Key capabilities: Subscription groups, routing rules UI, system proxy, TUN mode, and log viewing.
  • Recommendation: Unless a desktop setup has a specific core requirement, start with v2rayN.

android > v2rayNG

v2rayNG: Everyday Android connections and per-app policies

Android top pick

Built for Android, v2rayNG streamlines subscription import, configuration selection, routing settings, and startup in a mobile interface. During first-time setup, server details can be imported from a subscription URL, clipboard content, or QR code, then system-wide traffic interception can be started after selecting a configuration. The short workflow suits users who want a basic connection working quickly.

Its primary core is Xray, so it generally aligns better with configuration guides built around Xray when using VLESS, REALITY, or newer transport combinations. The goal is not to maximize the number of protocol names, but to keep the client core consistent with the configuration fields. If a subscription imports successfully but startup fails, first confirm which core capabilities the server configuration requires, then check the transport parameters.

Per-app policies are an important mobile selection factor. Choose which apps use the client and which connect directly, reducing unnecessary global interception. Routing rules work well for common domain and IP categories, while editing long rule sets one by one is still easier on a desktop before syncing them to mobile.

  • Best for: Everyday Android use, first-time mobile configuration, and users who need per-app management.
  • Key capabilities: Subscription import, QR code recognition, Xray core, routing settings, and per-app policies.
  • Recommendation: Without a specified core requirement, choose v2rayNG first on Android.

android > v2flyNG

v2flyNG: A compatibility path for the v2fly core

Alternative core

v2flyNG also targets Android, but the deciding factor is the v2fly core rather than the interface. V2Fly and Xray are both core implementations in the Project V ecosystem. Their basic configuration concepts are similar, including inbounds, outbounds, routing, and DNS, but protocol extensions, configuration fields, and implementation pace may differ. When an existing configuration is explicitly written for v2fly, v2flyNG can reduce the troubleshooting cost caused by a core mismatch.

Everyday use still centers on importing a configuration, choosing a server, starting the connection, and setting routing. For users who simply want a standard subscription connection, v2rayNG is usually the more direct default. v2flyNG is a clearer fit for reproducing v2fly behavior, testing the same configuration across different cores, or maintaining an existing v2fly configuration.

Do not switch back and forth between clients just because a connection fails. First identify the failing layer: an unparseable subscription usually points to its contents; an import that succeeds but will not start may involve configuration fields or core capabilities; a connection that starts but fails for some apps calls for checking per-app policies, DNS, and routing rules. Switch cores only after identifying the layer so the troubleshooting result is meaningful.

  • Best for: Users with existing v2fly configurations, a need for v2fly core behavior, or core compatibility testing.
  • Key capabilities: v2fly core, subscription management, mobile routing, and system-wide traffic interception.
  • Recommendation: Use core compatibility as the selection criterion; do not treat it as an interchangeable alternative to v2rayNG.

scenario / recommendations

Choose a client by use case

The same client can feel easier or harder depending on the user. Considering the number of devices, configuration size, and troubleshooting skills is more accurate than counting features alone.

core / compatibility

Choosing between Xray and v2fly

The client handles the graphical interface; the core parses configurations, establishes connections, and applies routing. Similar interfaces do not guarantee identical behavior underneath.

Confirm configuration dependencies first

Standard VMess configurations are common with both core paths, but extensions, specific transport parameters, or newer fields require following the core requirement stated by the configuration provider. If the documentation explicitly names Xray, prefer v2rayNG on Android; if it is clearly built around v2fly, v2flyNG keeps the fields and implementation aligned.

Core differences can also affect routing matches, DNS handling, and log output. During troubleshooting, record the current client, core, proxy mode, and failure stage. “Connection failed” alone cannot distinguish a subscription parsing issue from a core startup, remote connection, or local routing problem.

Checks before switching cores

  1. Confirm that the subscription updated successfully and that the target configuration is displayed in full.
  2. Confirm the protocols, transport method, and security parameters required by the configuration.
  3. Review the client log to determine whether the error occurred during parsing, startup, or connection.
  4. Temporarily use basic routing to rule out interference from custom DNS and complex rules.
  5. Keep the same test conditions, then compare behavior between Xray and v2fly.

final / route

Choose v2rayN on desktop; start with v2rayNG on Android

Use v2flyNG when the v2fly core is explicitly required. After choosing a client, continue to the downloads page and select the matching platform and processor architecture.