Platform · Core · Configuration

V2Ray Client Comparison

v2rayN, v2rayNG, and v2flyNG: start with your device, then consider core and routing needs.

Quick Picks

Top desktop pick: v2rayN. Top Android pick: v2rayNG. Consider v2flyNG when you need V2Fly core compatibility.

Desktop: v2rayN

The same client family is available for Windows, macOS, and Linux. The desktop edition suits cross-platform configuration; Windows users can also choose the classic WPF edition based on interface preference and system requirements.

Read our desktop review →

Android: v2rayNG

Built primarily around the Xray core, v2rayNG is a straightforward place to start with subscription imports. Explore per-app routing or other route settings as needed, keeping the number of variables low at first.

Read our Android review →

Alternative core: v2flyNG

Consider it as an Android alternative if you already have V2Fly configurations or depend on specific V2Fly core behavior. Choose it for configuration compatibility, not a similar name or smaller package size.

Read our alternative review →

Platform and Feature Comparison

All three are GUI clients that store server configurations, manage subscriptions, and launch a core. The client interface handles user controls; the core handles protocols and routing. This table is intended to help you choose, not to imply that settings appear in the same place across platforms or packages. Check the options available in your version if menus differ.

On narrow screens, scroll the table horizontally. Android VPN traffic handling and desktop TUN mode are described separately; similarly named features do not necessarily work the same way.

How v2rayN, v2rayNG, and v2flyNG compare
Comparison criteria v2rayN v2rayNG v2flyNG
Platform support Windows / macOS / Linux; the classic WPF edition is Windows-only Android Android
Core Core options depend on the package and configuration; confirm Xray and V2Fly availability Primarily uses the Xray core V2Fly core family
Maintenance Actively maintained; check requirements for the desktop and WPF editions separately Actively maintained; check Android and core compatibility notes Maintained; check V2Fly core and client update notes
Learning curve Basic imports are straightforward; system proxy, TUN, and multiple-core settings require more understanding Core tasks are easy to find; requires understanding Android VPN permissions and background restrictions Basic imports are similar to other Android clients; requires checking core compatibility
Subscription groups Manage groups and update subscriptions, useful for keeping multiple configuration sources organized Supports subscription groups and updates for everyday mobile use Supports subscription imports and management; group options depend on the current interface
Routing interface Routing presets and rule management make it easier to inspect domain, IP, and outbound relationships Routing settings and custom rules are available; per-app routing is configured separately Routing settings are configurable; advanced editing options and fields depend on the current version
TUN and traffic handling TUN settings are available; permissions, helper components, and support vary by platform Handles traffic through Android's system VPN interface; desktop TUN steps do not apply Handles traffic through Android's system VPN interface, subject to system permissions and background policies
Standout features Centralized desktop management of subscription groups, routing rules, system proxy, and core selection Xray-based configurations, mobile imports, per-app routing, and VPN connection management V2Fly-based configurations for Android users with existing setups using this core
Best for Desktop users who want a similar configuration workflow across desktop platforms Android beginners and users who need Xray features Android users who specifically need V2Fly core behavior or already have compatible configurations

v2rayN: Desktop Subscriptions and Routing

v2rayN's main strength is its spacious desktop interface. Subscription groups, server entries, routing rules, and runtime logs are easy to review in a large window, which suits users who routinely inspect their configuration. To get started, import a subscription, select a server, and enable the system proxy. Avoid enabling TUN, changing DNS, and switching cores before confirming a connection; changing several things at once makes it hard to tell what affected the result.

Windows users should distinguish between the desktop and classic WPF editions. The desktop edition follows a cross-platform UI approach and suits users who want a similar workflow across desktop systems. The WPF edition is Windows-only and keeps the classic interface. They do not use different subscription protocols, and this distinction alone does not indicate which one connects faster. Check system requirements before installing, then confirm whether your configuration needs a specific core.

v2rayN's routing interface is useful for managing rules as a separate configuration. For example, private addresses can go direct, selected domains can use a proxy, and ad categories can be sent to a blocking outbound. The goal is not to add more rules, but to keep their order clear, make sure outbound tags exist, and confirm that the target app actually routes through the client. A desktop system proxy usually affects only apps that honor proxy settings. Consider TUN for broader traffic handling only after checking permissions and possible network conflicts.

Recommendation: For desktop, start with v2rayN. If you only need browser traffic, use the system proxy first. If an app does not honor it, check the app's own proxy settings and whether TUN is appropriate. Permissions differ across Windows, macOS, and Linux; see the complete cross-platform setup guide for detailed steps.

v2rayNG: Everyday Android Use and Xray Configurations

v2rayNG suits an Android workflow that starts with a subscription. Add and update a subscription, select a working configuration, then grant Android VPN permission. Seeing the VPN icon only confirms that the traffic-handling service is running; it does not prove that the remote connection works. Check the client logs, whether the target app is included, and the selected configuration's authentication and transport settings.

The Xray core is a key reason to choose v2rayNG. For VLESS or a specific combination of security and transport settings, first confirm the configuration requirements and support in the current core. Being able to import a share link does not guarantee that every field will work as intended: client parsing and core protocol support are separate steps. If an import succeeds but the connection fails, check the fields instead of immediately switching clients.

Android use is also affected by battery policies, background restrictions, and other VPN services. Per-app routing determines which apps are included in traffic handling, but it is not the same as domain routing: app selection decides whether traffic enters the client, while routing rules decide which outbound it uses afterward. When troubleshooting, identify both scopes so you don't mistake excluded app traffic for a broken routing rule.

Recommendation: For Android, start with v2rayNG. Most users can begin with a basic subscription and default routing, then configure per-app routing if needed. Choose an installer package based on the ABI supported by your device—not its release year. If you're unsure, check the download page's arm64 and universal package notes.

v2flyNG: An Alternative for V2Fly Compatibility

v2flyNG's value lies in its V2Fly core. Android users with existing V2Fly configurations, a need for similar configuration behavior, or issues to troubleshoot against this core can consider it as an alternative. Despite its name being similar to v2rayNG, the clients should not be assumed to handle protocol extensions, field parsing, routing edits, or security settings identically. Before choosing, identify the protocols and transports your configuration actually uses.

For users who have only worked with subscription links, v2flyNG is not automatically easier just because its settings look familiar. A subscription may contain configurations for different cores. Even after a successful update, check that each configuration you need is compatible. In particular, don't expect switching to the V2Fly core to make a configuration that depends on Xray-specific features work. Likewise, migrate existing V2Fly configurations based on field support, not just by copying a name.

Android VPN permissions, background operation, and system restrictions on per-app traffic handling also apply to v2flyNG. It is not a workaround for device limitations. If battery optimization pauses the client, adjust the system settings first. If the subscription URL cannot be reached, check access conditions and confirm the URL is valid. Switching core families is justified only when the logs point to a core support issue or differences in configuration behavior.

Recommendation: Reserve v2flyNG for situations with a clear V2Fly compatibility need. For a first Android setup, start with v2rayNG. To compare core behavior, save the original configuration and test v2flyNG separately; avoid changing subscriptions, routing, and DNS at the same time.

Xray vs. V2Fly: Choose Based on Your Configuration

Project V is a useful starting point for understanding the V2Ray ecosystem. V2Fly and Xray are related but separately developed core families. A GUI client is not a core, and a core name does not identify a share-link format. Both core families may support the same base protocols while differing in extensions, transport implementations, and configuration behavior. Compare specific fields rather than assuming that “supports VMess” means “supports every configuration that uses VMess.”

Identify the protocol, then check transport and security settings

The same protocol can use different transport and security settings. Check the server address, port, authentication details, transport type, and security settings together. If configurations with the same label behave differently, start with the specific error in the logs. Authentication failures, DNS resolution problems, and unsupported fields call for different fixes. Subscription names and group labels are for organization, not proof of compatibility.

Switching cores is not a one-click fix

Before switching cores in v2rayN, confirm which options the package provides and what type of configuration you have. On Android, moving from v2rayNG to v2flyNG usually means changing both the client and core family; don't assume every setting will carry over. Keep a working minimal configuration, then restore routing and DNS one at a time to make differences easier to spot. For related field details, see a guide to the config.json structure.

Choosing a Client for Beginners, Advanced Users, Multiple Devices, and Older Phones

Before You Switch Clients: Check Your Configuration

Switch clients to address a known difference, not as a substitute for troubleshooting. Record the current subscription source, configuration type, routing preset, and DNS settings first. Subscription URLs may contain access credentials. Hide the full URL, authentication fields, and personal configuration in screenshots or public support requests; share only the error type and relevant setting names.

  1. Check device requirements. Confirm the target operating system, processor architecture, and package requirements. Choose between the desktop and WPF editions only on a supported platform, and select an Android package based on device support.
  2. Distinguish share links from subscriptions. A single share link usually describes one configuration; a subscription URL fetches a set of configurations. After switching clients, add the subscription group again and update it. Don't paste a subscription URL into the import field for a single configuration.
  3. Start with a minimal test. Use just one known-good configuration. On Android, avoid running two clients' VPN services at the same time. On desktop, avoid having multiple clients change the system proxy or use the same local port simultaneously.
  4. Check which traffic is included. Confirm whether the target app honors the system proxy or is included in Android's traffic-handling scope. Only traffic that enters the client is affected by its routing rules.
  5. Restore settings one at a time. Once the basic connection works, restore groups, routing, DNS, and per-app settings. Change one category at a time and record each change so you can return to a verified setup.

Choose based on your platform and configuration needs. v2rayN is the top desktop pick, and v2rayNG is the top Android pick. Reserve v2flyNG for cases with a specific V2Fly core requirement. Visit the client downloads page for package options and system requirements by platform; see the complete installation guide for setup and permissions.