What each client is suited for
These are not just different-looking versions of the same installer. The platform determines how you interact with the client; the core determines which protocols and configuration fields it can handle.
Top desktop pick
v2rayN: desktop subscriptions and routing
v2rayN suits users who manage subscriptions, review logs, and adjust routing on a computer. Installers are available for Windows, macOS, and Linux; choose the package that matches your OS and architecture. The Windows download page also offers a desktop edition and a classic WPF edition. The desktop edition uses a newer cross-platform UI, while WPF retains the traditional desktop workflow. When following a tutorial, check which UI its screenshots show: different menu locations do not necessarily mean a feature is missing.
The most common desktop mix-up is confusing the system proxy with TUN. With a system proxy configured, only apps that honor that setting send connections to the local listening port; other programs may bypass the core. TUN uses a virtual network interface to route traffic and involves permissions, routing, and DNS. Use it only when you need broader traffic coverage. For a first setup, establish a regular proxy connection before deciding whether to enable TUN. Avoid turning on every option at once.
v2rayN makes it easy to switch the component that handles connections, but changing cores does not convert a configuration from one set of fields to another. Check that the target core recognizes any server-specific security or transport settings. After importing a subscription, select an active server and review the routing mode and logs. This is usually more useful for troubleshooting than repeatedly reinstalling the client.
Choose a v2rayN desktop installer →
Top Android pick
v2rayNG: Xray core and per-app proxying
v2rayNG is an Android client powered by the Xray core. It suits users starting with a subscription import as well as those with existing Xray configurations. For features such as VLESS and REALITY, check support for the exact configuration and bundled core rather than relying on whether the subscription link is recognized. A link appearing in the list means the import succeeded; it does not confirm that the transport, security layer, and server parameters are compatible.
On a phone, connecting also requires system VPN authorization. The client can route traffic through the system interface only after permission is granted; this is different from changing the system proxy on desktop. Per-app proxying controls which apps are included, while routing rules handle connections that reach the core. If an app is excluded, changing domain rules in the core usually will not affect its traffic. Check the per-app list and whether it is set to include or exclude apps.
For everyday use, account for background operating conditions. Battery-saving settings, background restrictions, and other VPN connections can interrupt service. If the connection drops when the app moves to the background, check battery and background permissions first, then review the logs. The Android download page offers arm64 and universal builds. Choose arm64 when the device supports it; if you are unsure of the processor architecture, consider the universal build.
Choose a v2rayNG Android installer →
V2Fly-core alternative
v2flyNG: keep using existing V2Fly configurations
v2flyNG is also for Android, but it uses the V2Fly core. It is a better fit for users with existing configurations that rely on V2Fly fields or behavior and want to stay within the same core family. Choose it to meet a configuration requirement, not because its name implies a performance tier. For routine subscription imports without a specific V2Fly requirement from the server, v2rayNG is usually the more straightforward place to start on Android.
Xray and V2Fly are both part of the Project V ecosystem, but that does not mean they always support the same fields. In particular, do not copy REALITY or Xray-specific extensions directly into a V2Fly configuration. A subscription may contain a mix of protocols. If only some entries work after import, check each entry's protocol, security layer, and transport settings instead of trying to work around unsupported core features by renaming or regrouping entries.
The basic workflow still involves importing configurations, selecting an active server, checking routing, and granting VPN permission. Before switching clients, keep a record of any settings you need, but do not post a full subscription URL in a public forum. To migrate from v2rayNG to v2flyNG, test one configuration known to be compatible before moving the rest of your groups. This helps distinguish import issues from core differences.
View the v2flyNG Android alternative →