Platform · Core · How it works

V2Ray Client Comparison

Choosing between v2rayN, v2rayNG, and v2flyNG starts with your device, then comes down to the core and features your configuration needs.

The client imports configurations, lets you select nodes, and manages connections. The core handles protocols and routing. They work together, but they are not the same thing.

At a glance

What each client offers

Start with the platform row, then compare cores and routing. These descriptions show each client's general capabilities, not menus shared by every historical release. Check the installed release for exact options, core components, and system requirements.

On narrow screens, swipe horizontally to see the full comparison.

Compare platform support, cores, maintenance, and features in v2rayN, v2rayNG, and v2flyNG
Feature v2rayN v2rayNG v2flyNG
Platforms Windows, macOS, and Linux; a classic WPF interface is also available for Windows. Android。 Android。
Core Multi-core management, commonly using Xray. Check the specific version for v2fly support and core selection options. Xray core, suited to configurations that rely on Xray-specific features. v2fly core, suited to users with existing configurations that are compatible with it.
Maintenance Actively maintained; desktop and WPF versions may differ in interface details. Actively maintained; check your installed version for newer features. An alternative for the v2fly ecosystem; check the latest release history for maintenance and update cadence.
Ease of use Easy to get started; system proxy, routing, and TUN are separate concepts to learn. Easy to get started; import a configuration, grant VPN access, and test the connection. Similar basic workflow to other Android clients, but check core compatibility for your configuration.
Subscription groups Supports subscription groups, making it easier to update and organize multiple subscriptions separately. Supports subscription management and group views for switching configurations on your phone. Supports subscription management; group features and menus depend on the installed version.
Routing UI Includes routing settings, making it easier to edit and review rules on desktop. Includes routing settings and custom rule options, useful for adjusting a few rules on your phone. Provides routing configuration options; available fields depend on the interface version and v2fly core capabilities.
TUN and traffic handling Offers a TUN setup; availability depends on the OS, permissions, core components, and release package. Uses Android's VPN interface to create a virtual network tunnel; desktop TUN setup steps do not apply. Routes traffic through Android's VPN interface; capabilities depend on the installed version and OS.
Best for Everyday desktop use, managing multiple subscriptions, detailed routing, and trusted-LAN sharing. Everyday Android use and configurations that require Xray compatibility. Android users who specifically need the v2fly core and are willing to check configuration support.
Our picks Top desktop pick: v2rayN Top Android pick: v2rayNG Alternative core: v2flyNG

Client-by-client

How they compare in practice

v2rayN: the desktop pick

Top desktop pick

v2rayN brings subscriptions, nodes, system proxy settings, and routing together in one desktop interface. If you manage several subscriptions, save each source under Subscription Group Settings and update groups individually. When fine-tuning routing, it's easier to review rules, logs, and browser results side by side. It's built for regular desktop use, not just importing a connection once in a while.

Windows users can choose between the desktop and classic WPF versions. The desktop version uses the cross-platform Avalonia interface, making it a good fit if you want a similar workflow across desktop operating systems. The WPF version is for Windows users who already know the original interface. Menus and implementation differ, so a screenshot from one version won't necessarily match every platform.

When getting started, import a configuration, select a node, then set up automatic system proxy settings. Once you've confirmed that your browser works, explore TUN or LAN sharing only if your apps require it. System proxy and TUN handle traffic differently; enabling both can make troubleshooting harder.

v2rayNG: for everyday Android use

Top Android pick

Powered by the Xray core, v2rayNG is a good starting point for Android. Everyday use means importing a subscription, updating configurations, selecting a node, and connecting. The first time you connect, Android asks for VPN permission. This lets the client create a local traffic tunnel; it doesn't provide a working node or choose a remote service for you.

On a phone, routing usually means setting rules by destination and choosing which apps use the tunnel. Before changing settings, distinguish between whether an app enters the tunnel and which outbound route it uses once inside. If a rule looks right but an app still isn't routed as expected, check app selection, background restrictions, and other active VPN tools instead of repeatedly replacing the subscription.

If you're moving from desktop to phone, you can reuse a compatible subscription, but don't copy desktop system proxy settings. Android routes connections through its VPN interface, with different menus and permission requirements. After granting permission, test the connection in the foreground, then try a typical task with the screen locked to see whether background restrictions need adjusting.

v2flyNG: an alternative using the v2fly core

Choose it for core compatibility

Choose v2flyNG for core compatibility, not as a different skin for v2rayNG. It uses the v2fly core and suits Android users whose existing configurations are built around that core and who want to preserve that behavior. The similar names don't mean the two clients support all the same protocol extensions, transport options, or custom configuration fields.

Before switching, save your existing configuration and any important routing rules, then check that the target client can parse your subscription correctly. If a configuration depends on an Xray-specific feature, ask the configuration provider how to make it compatible before switching apps. If import succeeds but the connection fails, check the logs to distinguish unsupported fields from an unreachable server or a system permission issue.

If you just need an everyday Android client and don't specifically need v2fly, v2rayNG is the easier place to start, with a more established troubleshooting path. If you keep v2flyNG as an alternative, check its system requirements and current feature set separately; don't assume another client's update schedule applies to it.

Terms and how to choose

Cores, system proxy, and TUN

Xray and v2fly determine configuration compatibility

Project V is a starting point for understanding the V2Ray ecosystem. V2Fly continues development of a related core, while Xray is another core in the same technical ecosystem. A graphical client passes configurations to its core to run, so being able to add a node in the interface doesn't guarantee that the core supports every field. Check the protocols, transport, and security settings in your subscription details, then confirm that the client core supports them.

If you don't have special configuration requirements, there's no need to decide which core is “more advanced.” Compatibility with your protocol setup, meeting system requirements, and being able to understand connection results from logs matter more than an abstract ranking. If your current connection works reliably, you don't need to switch just because you see a different core name. Switch for a clear reason, such as needing a specific configuration feature or using another device.

System proxy and virtual network tunnels handle traffic differently

A desktop system proxy gives proxy settings to apps that follow the operating system's configuration. If your browser connects but another app goes direct, that app may simply ignore the system proxy. TUN uses a virtual network interface to route traffic differently, but requires additional permissions and routing and DNS configuration. It's not a universal fix for connection problems.

Android clients usually create a virtual network tunnel through the system VPN interface. This serves a similar traffic-routing purpose to desktop TUN, but permissions, app selection, and operating restrictions differ. That's why the table covers desktop TUN and the Android VPN interface separately rather than hiding the practical differences behind a single “supported” label. For further help, see the Troubleshooting guide and first determine whether the issue is traffic handling or the remote connection.

Narrow down your options by use case

Choose for beginners, advanced use, or multiple devices

If you just need to share a desktop connection with your phone temporarily, you can also check v2rayN LAN sharing settings. Your computer must stay on, and you should only expose the listener and allow it through the firewall on a trusted network.

Check the download options

Three things to check before downloading

  1. Match the package to your system. Windows users can choose the desktop or WPF version based on their preferred workflow. On macOS, check your chip under About This Mac and choose Apple Silicon or Intel. On Linux, check both the distribution's package format and processor architecture. On Android, choose an arm64 or universal package based on your device.
  2. Check subscription and client compatibility. A subscription URL is a way to distribute configurations; it doesn't come with a working connection when you install a client. Before downloading, make sure you have a usable configuration and know which protocols and core it requires. Don't publicly share subscription URLs, node credentials, or logs containing sensitive information.
  3. Keep a way to roll back. If your current client works, note your nodes, routing, and traffic handling settings before testing a new interface or client. Use only one traffic-routing client at a time while testing. Before closing a desktop client, also check whether you need to clear the system proxy settings.

The short version: start with v2rayN on desktop and v2rayNG on Android. Choose v2flyNG only if you specifically need the v2fly core. The download page lists packages, platform requirements, and download options; follow the quick-start guide to configure your client.

FAQs

Common questions before switching clients

Are v2rayN and v2rayNG the same client?
No. v2rayN is for desktop operating systems, while v2rayNG is for Android. Both can manage compatible proxy configurations, but their interfaces, system permissions, and traffic handling differ. Don't assume desktop menu instructions apply on your phone.
Will switching clients noticeably improve node speed?
Not necessarily. Actual speed also depends on node load, network routing, protocol combinations, and your device. If the original client was misconfigured, a new one may perform better because its settings differ. For a fair comparison, use the same node, network, and test method; otherwise, differences in testing can look like a performance improvement.
If a subscription imports, does that mean both clients are fully compatible?
Not necessarily. Importing only confirms that the configuration can be parsed. A successful connection also requires the core to support the relevant transport and security fields. Select a specific node, connect, and check the logs and results. If only some nodes fail, review their configurations individually rather than assuming the entire subscription is broken.
Should I turn on TUN right away?
On desktop, start with the system proxy to verify the connection. Configure TUN only if an app doesn't use the system proxy or you need it to handle traffic. On Android, grant VPN permission when prompted. The setup differs by platform, and neither traffic-handling mode can fix an unreachable server.
Can I keep both v2rayNG and v2flyNG on Android?
You can keep both configurations to compare them, but run only one client at a time when testing connections. Android usually allows only one active VPN connection at once. Starting another VPN app may replace the existing connection, so check which client is actually running when troubleshooting.