Client comparison / Three GUI clients

V2Ray Client Comparison
v2rayN, v2rayNG, and v2flyNG

Start by narrowing down your options by operating system, then check core and configuration requirements. For desktop, start with v2rayN; for Android, start with v2rayNG. Consider v2flyNG if you need to keep using a v2fly configuration.

This comparison covers only the three clients in our download center. Feature names may change between releases; check the current build and core documentation for available options.

Desktop and Android Xray / v2fly Subscriptions and routing System proxy and traffic routing

Compare the features, not the names

Client feature comparison

All three are GUI clients, but their interfaces, cores, and methods of routing system traffic differ. The N and NG in their names are not performance ratings, and configurations are not necessarily interchangeable.

On narrow screens, scroll horizontally to view the table. Platform and processor architecture determine which build to download; core and transport settings determine whether a configuration will work.

Key differences between v2rayN, v2rayNG, and v2flyNG
Comparison v2rayN v2rayNG v2flyNG
Platforms Windows、macOS、Linux Android Android
Core family Typically Xray; supports multi-core workflows, depending on the build and selected configuration Xray v2fly
Maintenance Actively maintained; check for interface and core changes when upgrading Actively maintained; check for Android compatibility and core changes Consider as an alternative; check release notes and system compatibility before downloading
Getting started Basic imports are straightforward; learn system proxy, routing, and TUN settings separately A short setup process; confirm VPN permission and background operation after importing Similar basic workflow; first check whether your configuration supports v2fly
Subscription groups Group management interface for organizing and updating multiple sources separately Subscription management and group filters for choosing configurations on a phone Subscription management available; group options and details depend on the current interface
Routing UI Routing presets, rule editing, and outbound selection Routing modes and custom rule options; the interface differs from the desktop version Basic routing settings; check core support for complex rules
TUN and traffic routing TUN mode available; requires a compatible core and system permissions Routes traffic through the Android VPN interface; this is not the same as a desktop TUN toggle Routes traffic through the Android VPN interface and requires system permission
Standout features Desktop configuration management, subscription groups, routing rules, and multi-core configurations Mobile-friendly controls, per-app routing, and Xray configuration support Keeps v2fly core configurations usable; an Android compatibility alternative
Best for Desktop users who want to manage subscriptions or fine-tune routing Android beginners and users with Xray configurations Users who specifically need the v2fly core and already have a compatible configuration
Download Windows / macOS / Linux v2rayNG for Android v2flyNG for Android

Desktop picks / Windows · macOS · Linux

v2rayN: subscription management and routing

v2rayN · Desktop setup checklist

v2rayN is our top desktop pick. Its desktop interface brings subscription groups, server selection, system proxy, and routing settings together, making it easier to manage multiple configurations with a keyboard and mouse. The Windows download offers Desktop and WPF builds: Desktop uses a cross-platform interface, while WPF retains the classic desktop interface. Choose between them based on interface and runtime needs, not assumed differences in connection quality.

Its strength is configuration management, not automatically faster connections

If you use multiple subscription sources, create groups and update them separately to keep temporary test configurations apart from your everyday setup. The routing interface makes it easier to review rule order, target domains, and outbound selection. If an app ignores the system proxy, consider TUN to route its traffic. TUN broadens traffic coverage; it is not a universal fix for network problems.

Check multi-core support and TUN separately

The v2rayN interface is not the core itself. Different configurations may use different cores, and TUN may require components that ordinary proxy connections do not. First confirm which core is active in the interface, then adjust settings using its documentation. If the regular proxy works but TUN does not, check permissions, the virtual interface, and DNS before rebuilding your subscription.

For macOS, choose Apple Silicon or Intel based on your processor. On Linux, choose deb or rpm for your distribution, then check whether your system is x64 or arm64. Menu locations may differ in the cross-platform interface; do not assume Windows system settings paths apply to other desktop systems.

View the routing setup guide →

Android pick / Xray core

v2rayNG: importing configurations and per-app routing

v2rayNG is a good starting point for Android users. Add a subscription, update the configuration, select a server, start the connection, and approve the system VPN permission. It uses the Xray core and suits users with compatible configurations. If you are new to this, get that basic flow working first; it is easier to pinpoint problems before changing DNS, routing, and background settings at the same time.

VPN permission routes traffic; routing rules decide where it goes

The Android VPN interface lets the client receive device traffic. Rules then determine which connections are proxied, go direct, or are blocked. A connection icon in the status bar only confirms that the system service started; it does not prove the remote connection is working. To check, open the app you actually use and look for connection errors in the client log.

To let some apps connect directly, use per-app routing—but first check whether the list means “proxy only selected apps” or “bypass selected apps.” These options do the opposite of each other. Choosing the wrong one can make a browser work while the app you need does not. After changing the list, reconnect as prompted and test the same app again under the same conditions.

Check background restrictions on phones

If the connection works with the screen on but drops when the phone locks, first check battery optimization and background activity restrictions for v2rayNG. Settings names vary by device and are usually under App info, Battery, or Background activity. Do not disable all system protections to troubleshoot one disconnection; change only settings related to the client and see whether the issue returns.

For most recent Android phones, arm64 is the usual download choice. If you are unsure of your device's architecture, check its system information or choose the universal build. A universal build supports more architectures; it does not make the connection faster or bypass minimum system requirements.

View v2rayNG for Android downloads →

Android alternative / v2fly core

v2flyNG: core compatibility for existing configurations

Choose v2flyNG based on core requirements, not how old your phone is. It is for the v2fly core ecosystem; consider it as an Android alternative if your existing configuration was written for that core, has clear compatibility guidance, or needs to be tested in the same environment. If you are simply importing a subscription for the first time and have no specific core requirement, v2rayNG is usually the more straightforward place to start.

Similar workflows do not mean every setting is interchangeable

The basics—adding a subscription, selecting a configuration, and granting connection permission—are similar, but importers and core support differ. Check transport, security, and extension fields individually; changing client names will not fix an incompatible configuration. If the app exits right after import or the connection fails, read the first clear error and determine whether a field is unsupported or the network is unreachable.

Keep tests isolated when evaluating an alternative

For the first test, use a known configuration that supports v2fly, without custom routing or complex DNS. Confirm the basic connection, then restore routing settings gradually. Copying an entire setup from another client makes it harder to tell whether a failure is due to protocol, routing, or system permissions. Do not infer update frequency from similar names; check release notes and system requirements before downloading.

This is not a lightweight version designed for older phones. Memory use, background battery drain, and stability also depend on rule size, concurrent connections, and system background policies. To assess resource use, compare the clients on the same network while doing the same tasks rather than comparing download sizes.

View the v2flyNG Android alternative →

Choose for your use case

Four common use cases: how to choose

Start with your device, then identify the features you actually need. Do not add settings just to get a longer feature list.

Before installing and after migrating

Client migration checklist

When switching clients, check configuration import and system traffic routing as two separate steps. The first determines connection settings; the second determines whether app traffic reaches the client. Follow this sequence to avoid misdiagnosing problems when several variables change at once.

  1. Record your current settings. Save the subscription sources you manage and note your routing mode, DNS settings, and per-app routing needs. Do not post subscription URLs containing access credentials in public comments or screenshots. Remove sensitive fields before sharing error details.
  2. Choose the right platform and architecture. On Windows, choose Desktop or WPF; on macOS, choose the processor build; on Linux, check the package format and architecture; on Android, choose arm64 or universal. Do not download a build and guess your device type from an installation failure.
  3. Import only the basic connection. Add and update the subscription, then check for configuration parsing errors. Start with a known working configuration that supports the selected core. Leave custom DNS and full rule sets out of the migration for now.
  4. Stop the old traffic-routing service. On desktop, check for a system proxy or TUN left active by the old client. On Android, disconnect the old VPN service before granting permission to the new client. You can install multiple clients for comparison, but make sure you know which service is routing traffic.
  5. Restore settings one at a time after testing. Test a real website and the app you need, then restore routing, per-app settings, and other options. Change one category of settings at a time. If a problem appears, return to the last working setup and compare the logs.

For setup instructions, see importing subscriptions and configuring TUN mode. If a connection fails, find the matching symptom in Troubleshooting and follow the suggested steps.

Bottom line

v2rayN for desktop; v2rayNG for Android

Unless you have a specific core requirement, start with this pairing. Reserve v2flyNG for Android users who specifically need v2fly configurations. The real tests are configuration compatibility, a clear traffic path, and reliable day-to-day use—not the name, download size, or number of listed features.

The download center lists installers and system requirements by platform. For your first setup, continue with the getting started guide—there is no need to configure every advanced option at once.