Desktop and Android · Client setup notes

V2Ray MobileClient Downloads and Setup

Illustrative settings screen; menu names and locations may vary by client build.

Choosing a V2Ray Client

Start with your operating system, then check your processor architecture. Desktop and Android clients handle traffic differently. Importing a subscription is only one step; you still need to configure the device itself.

Windows

v2rayN · Desktop and Classic WPF Versions

The download page offers both the desktop version and the classic WPF version. The desktop version uses a newer cross-platform interface, while the classic WPF version retains a familiar desktop workflow. If you already have settings configured, note your subscription groups, routing rules, and listening port before switching interface versions. Menus may be in different places, so a screenshot alone may not tell you whether a setting is available.

For your first connection, start with the system proxy. Confirm that your browser can reach the target service before deciding whether to enable TUN mode. The system proxy affects only apps that use this setting; it does not mean all traffic from your computer is being routed through the client. Clear the system proxy before closing the client to avoid connection issues after the local port shuts down.

Go to downloads →

macOS

v2rayN · Choose the Right Installer for Your Chip

Open the system menu and choose About This Mac to check whether it lists a chip name or an Intel processor. Apple Silicon and Intel require different installers. Choose the right architecture, then handle any startup approval and network permissions. Installing the client does not enable the proxy by itself; also check whether your active network service is using the local proxy configured by the client.

If only your browser stops working after switching Wi-Fi networks, plugging in Ethernet, or waking from sleep, first check your system network settings and whether the client is running. Avoid changing your node, routing, and DNS settings all at once. Keep one known-working configuration and restore settings one at a time to identify whether the issue is with the network switch, permissions, or proxy connection.

Go to downloads →

Android

Recommended: v2rayNG · Alternative: v2flyNG

v2rayNG uses the Xray core and is a good starting point for a typical Android setup. If you need a V2Fly core environment, consider v2flyNG instead. Most modern devices use arm64; if unsure, check your system information and the download page's universal-build notes. Installer architecture and node protocol are separate considerations: the protocol listed in a subscription does not tell you your phone's architecture.

The first time you use VPN mode, approve the system connection request, then check whether battery settings restrict background activity. Android generally allows only one VPN connection of this type at a time. If another network tool is using it, resolve the conflict first. Configure per-app proxy only after verifying a basic connection, so you don't accidentally exclude the app you're testing.

Go to downloads →

Linux

v2rayN · Choose by Distribution and Architecture

First check whether your distribution uses deb or rpm packages, then choose x64 or arm64. Desktop proxy settings and individual app proxy settings may be independent. If your browser works but another program does not, check whether that program uses the desktop proxy before importing the subscription again.

TUN mode also depends on permissions, a virtual network adapter, and existing network rules. It is not a universal fix for connection problems. Start with a standard proxy and establish a repeatable connection, then expand the traffic scope if needed. If other proxy or virtual networking tools are installed, note their settings and disable them one at a time to identify conflicts between traffic-capture methods.

Go to downloads →

These three clients manage configuration, start a core, and provide a local proxy endpoint. Server addresses and access credentials must come from the service you use. Check your subscription source after installation, then continue with setup.

Browse all clients →

v2rayN and v2rayNG Settings

Find each option by what it controls; don't treat enabling a proxy and choosing a route as the same step. The window below shows where to find settings. Switch tabs to see the relevant guidance.

Go to Subscription Groups → Add or Edit Subscription. First confirm the URL comes from a trusted source, then update it. Groups keep configurations from different sources organized; they do not automatically change the active connection. After updating, check for protocol parsing errors and confirm which configuration is active. Groups make it easier to spot which subscription failed to update and keep manually added configurations separate. Subscription URLs often contain access credentials, so hide the full URL in screenshots. If an update fails, first check whether the URL has expired, then see whether updating through your current proxy is necessary.

Keep the verification order consistent: confirm the subscription parses, check that the core starts, verify that the app connects to the local proxy, and then inspect the routing result. If an earlier step fails, toggling more settings later won't tell you much. The tutorials follow this sequence, while the troubleshooting docs work backward from symptoms such as no internet access, subscription failures, or DNS issues.

Read the v2rayN setup guide →

Project V, V2Fly, and Xray

Client, core, and protocol names refer to different layers. Understand what each one does before deciding whether a configuration will work.

The Client Provides the Controls; the Core Handles Connections

Project V is a good starting point for understanding the V2Ray ecosystem. GUI clients organize subscriptions, routing, and local proxy options in an interface, while the core reads the configuration and handles network connections. What people casually call installing V2Ray often means installing a client that manages these cores, rather than editing core configuration directly.

V2Fly continues community development of V2Ray, while Xray has evolved from related technical foundations into its own implementation with its own features. The two share some concepts and configuration conventions, but similar names do not mean their features are identical. Check the core used by your client to see whether a particular transport, protocol parameter, or extension is supported.

Layers of the Ecosystem
User Interface

v2rayN · v2rayNG · v2flyNG

Core Connection

Xray · V2Fly

Configuration

Protocols, Transport, Routing, and DNS

How to Choose Among Three Open-Source Clients

v2rayN is a desktop client focused on managing connections, subscriptions, and routing through a GUI. Because it can use multiple cores, confirm separately that the interface can add a configuration and that the active core can run it. If startup fails, check the fields and core named in the specific error instead of judging by whether the client windows look alike. Also pay attention to the proxy listening address: using it on the same device and sharing it across a local network are different scenarios. The wider the listening scope, the more important it is to check your firewall and network environment.

v2rayNG is an open-source Android GUI client that uses the Xray core and works through Android's VPN interface or a local proxy. v2flyNG is also for Android and uses the V2Fly core, making it an alternative when you need that core. The interfaces and workflows are similar, but configuration support depends on each app's core. If your current configuration works, there is no need to switch just because the client name is different. Before switching, export the information you need and check VPN permissions, the app list, and background activity restrictions separately.

Keep Open-Source Licenses and Runtime Configuration Separate

These clients are developed as open-source projects, and the client projects use GPL-family licenses; the V2Fly and Xray core projects use the MPL 2.0 license. Licenses for the client, core, and bundled dependencies should not be collapsed into a single label. Read each component's license for specific redistribution obligations. For everyday users, open source means the code and implementation are available for public discussion and review; it does not mean every third-party subscription has undergone the same scrutiny.

A subscription is runtime configuration and may include server addresses, user identifiers, transport parameters, and access credentials. A client's open-source license does not tell you whether a configuration source is trustworthy or how the server handles data. Check the source before importing. When asking for help, share only the error details needed and hide the full subscription URL and credentials. This makes troubleshooting easier than posting the entire configuration and avoids exposing access.

Record Your Settings Before Updating, Then Verify Them

Updating a client, updating its core, and updating routing resources are three separate actions. A client update may move or rename menus; a core update may change configuration support; and a rule resource update may affect traffic matching. When behavior changes, first identify which layer changed. Combining several updates with multiple setting changes often removes your baseline for comparison and makes a simple issue harder to reproduce.

A safer approach is to record the active configuration, listening port, and custom routes, then read the relevant update notes before installing or replacing anything. Afterward, check that the subscription is still available, the core starts, the system proxy points to the current port, and both direct and proxied destinations work as expected. If you need a rollback option, check whether the older environment supports the new configuration fields. Backups may contain sensitive information, so store them somewhere secure.

Check Connection Tests Alongside Real-World Access

A real connection test can help rule out some unusable configurations, but a successful result only means the test destination was reachable under those conditions. Browser cache, app-specific proxy settings, DNS resolution, and server policies can all make another destination behave differently. Don't treat one test result as proof that the entire device is proxied, or assume a single timeout means the client is broken.

For troubleshooting, keep the setup minimal: one client, one known-good configuration, and one clearly defined test app. Compare basic connectivity with the proxy off, then check what changes when it's on. If only one app has a problem, focus on that app's proxy entry point and routing result. When logs show an error, note the action and error category; don't expose the full configuration just for completeness. Checking one layer at a time usually gets closer to the cause than reinstalling repeatedly.

Frequently Asked Before Connecting

What else do I need after installing the client?

You need a valid server configuration or subscription URL. A client manages configuration and provides a connection interface; it does not generate a working service after installation. Check the configuration source and protocol support, then import it and verify the connection with the quick-start guide.

Should I enable both the system proxy and TUN mode?

Not by default. First use the system proxy to verify apps that read this setting, then decide whether TUN is needed to capture traffic from other apps. The two methods operate at different network layers. See the troubleshooting guide for details.

Android disconnects when the screen locks. Should I check the node or battery settings first?

If the connection is stable while the screen is on but keeps dropping when locked, first check whether background activity is restricted, then look for network changes. If it cannot connect even while the app is in the foreground, check the configuration and basic network. See Frequently Asked Questions for more.

Does a successful subscription import guarantee protocol compatibility?

No. Importing only parses and saves the configuration. At startup, the core may still encounter unsupported parameters, missing fields, or a mismatch with the server. Check the startup result and connection logs, then follow the troubleshooting steps to narrow down the cause.

Client Configuration Notes

From protocol fields to local network sharing, these notes cover details that don't fit into a first-connection walkthrough. Before changing a setting, check whether it affects the current app, your device, or the entire local network.

Download Clients