Clients · Protocols · Guides

V2Ray Official GuideClient Downloads and Setup

From open-source clients to subscription imports, learn about protocols and routing for your platform.

ProtocolsVMess / VLESS CoresXray / V2Fly
ProjectProject V Core familiesV2Fly · Xray ManagementGraphical interface and subscription groups

Client Settings
From Protocols to Routing

First, distinguish protocols, transports, and cores; then configure subscriptions and routing. These windows illustrate settings—the menus in your installed client may differ.

View the Protocol Guide
Server Protocols
VMessAuthentication and encryption
VLESSUsed with secure transport
TrojanTypically uses TLS
ShadowsocksCheck the encryption method

The protocol determines how a client exchanges data with a server; changing a name alone won't switch protocols. VMess, VLESS, Trojan, and Shadowsocks each have their own authentication fields and security requirements. Transports may include TCP, WebSocket, or gRPC. After importing a share link, check the address, port, and protocol, then verify TLS, the server name, and the transport path. Graphical clients bring these fields together for easy comparison. Whether a particular combination works still depends on support in the selected core and matching server configuration.

Configuration has three layers: the client manages subscriptions and interface options, the core handles protocols and routing, and the operating system determines which traffic reaches the local proxy. Seeing entries in the server list only confirms that the configuration was read; you still need to select an active server and route the apps you want through the appropriate endpoint. Checking these layers separately makes issues easier to isolate than changing subscriptions, protocols, and system modes all at once.

When getting started, leave the imported transport fields unchanged. Verify access with a repeatable test, then add routing rules gradually. Don't treat a latency test as a complete measure of speed: the test method, destination, and DNS path can all affect results. If something goes wrong, note the client, core, operating mode, and error type. See the installation and connection guide for step-by-step instructions.

Choose an Installer by Platform

Use v2rayN on desktop. On Android, start with v2rayNG; consider v2flyNG if you need the V2Fly ecosystem. Match the installer architecture to your device.

Windows

Recommended: v2rayN

The download page offers a desktop edition and the classic WPF edition. The desktop edition uses a newer cross-platform interface, while WPF retains the familiar window layout and workflows. For either one, choose the package for your system architecture and check the runtime requirements. Don't assume the package labeled "desktop" is better suited to older devices based on its name alone.

After launching, import a subscription or share link, set an active server, then choose the system proxy or another traffic-routing method as needed. The system proxy mainly affects apps that follow the system proxy settings; it does not route every program automatically. If an app still connects directly, check its own proxy settings before reinstalling the client.

macOS

v2rayN

Check the chip in your system's About This Mac screen: Apple Silicon uses arm64, while Intel uses x64. The download page lists separate packages for each. Choose the package that matches your chip to reduce reliance on compatibility layers and avoid mistaking an architecture issue for a network or subscription problem.

When you first open the app, follow the system prompts for app permissions. After importing a subscription, confirm the active server and system proxy status, then test access in a browser. If the browser works but another app doesn't, check whether that app uses the system proxy. When migrating an existing configuration, keep the original file and pay particular attention to local paths, ports, and platform-specific options.

Android

v2rayNG / v2flyNG

v2rayNG uses the Xray core and is the recommended starting point on Android. v2flyNG uses the V2Fly core and suits configurations built for that ecosystem. Both clients offer arm64 and universal packages. Most newer devices use arm64; if you're unsure of your device's architecture, check its specifications or choose the universal package.

After installation, import a subscription, update the server list, select an entry, and start the connection. The first time you use VPN mode, you'll need to authorize it in Android. It may also conflict with another app using the VPN service. If the connection drops when the screen locks, check background activity and battery optimization. If only certain apps have issues, check your per-app proxy and bypass selections.

Linux

v2rayN

Choose deb or rpm to match your distribution's package manager, then select x64 or arm64. The package format determines how the app is installed; the architecture determines whether it can run. Both must match. Desktop clients also require a graphical environment, so usage on a server differs from a regular desktop session. Check how the device will be used first.

After installation, manage subscriptions and servers in the graphical interface. System proxy coverage depends on the desktop environment and how each app handles proxies. Before enabling traffic routing that requires elevated permissions, understand the permission prompt and routing changes. If browser and command-line traffic behave differently, check their proxy settings separately; don't assume a desktop toggle controls every process.

The client does not provide working servers. Connection details—such as the address, authentication, and transport parameters—must come from a server you manage or a trusted configuration source. After installation, you'll still need to import a valid configuration. If you only have a subscription URL, update it first to populate the server list, then choose an entry. Share links, subscription content, and native configuration files are different formats; select the right import option.

Browse all clients →

Open-Source Ecosystem and Core Selection

V2Ray is a starting point for understanding the ecosystem. Client names, core families, and protocol types are distinct concepts. Open source means the implementation can be studied; it doesn't mean every configuration from every source is safe to import.

PROJECT V

Projects, Cores, and Interfaces

Project Background
Project V · V2Ray
Core Families
V2Fly · Xray
Desktop Clients
v2rayN
Android Clients
v2rayNG · v2flyNG

Protocol names describe how communication works; client names describe the tools used to manage it. Similar spellings do not mean the tools have the same capabilities.

How Cores and Protocols Relate →

Project V and the V2Ray Background

Project V brought together composable proxy tools, and V2Ray organized capabilities such as inbounds, outbounds, routing, and transports into a configuration model. Most users don't need to start by learning the full configuration format: graphical clients turn common tasks into settings you can select and edit. This background helps clarify that downloading a client and choosing a protocol are separate decisions. One interface can manage multiple protocols, and a given protocol may be implemented by different cores.

This page uses V2Ray as the entry point to the ecosystem; the clients covered are v2rayN, v2rayNG, and v2flyNG. Each has its own maintenance schedule and intended use, so similar names don't guarantee identical features. Menus in a tutorial may also change as the interface is updated. If a label looks different, find the equivalent setting and check that it serves the same purpose.

What V2Fly and Xray Share—and Where They Differ

The V2Fly community maintains the development of the V2Ray core, while Xray evolved as a fork based on related code. They share concepts such as inbounds, outbounds, and rule-based routing, but their added features aren't identical. When using VLESS, REALITY, or specific transport combinations, check support in the actual core. REALITY is a security-related transport mechanism; it should not be treated as a complete proxy protocol that can be swapped one-for-one with VMess.

Choose a core based on the requirements of your configuration and whether the client can represent its fields correctly. If a configuration works with one core but fails with another, compare protocol parameters, transport options, DNS, and routing behavior before blaming the client in general. Different defaults can also change how connections behave, so keep the original settings available as a fallback when migrating.

Open-Source Licenses for the Three Clients

v2rayN, v2rayNG, and v2flyNG are all open-source clients. Their interfaces and configuration management can be examined to understand how features work with the core. v2rayN and v2rayNG use the GPL-3.0 license; check the license included with the relevant v2flyNG release. The main V2Ray and Xray cores use MPL-2.0. Licenses may differ between a client, its core, and included components, so review each one's terms before modifying or redistributing it.

For everyday use, open source makes it easier to understand how software works and investigate problems, but device permissions, configuration sources, and system environments still need separate consideration. Before importing an external configuration, check for DNS, routing, or listening settings you don't need. When sharing logs, include only what is necessary for troubleshooting and hide subscription URLs, credentials, and information that could identify your device.

Treat Client and Core Updates Separately

Interface updates may improve subscription parsing, installation, or system compatibility; core updates can change protocol support and runtime behavior. A client update doesn't necessarily mean every core feature has changed. Likewise, if a configuration requires a new capability, the client looking the same isn't enough to confirm support. The download page collects installer links, while the homepage avoids fixed release numbers so static information isn't mistaken for a live release feed.

Before updating, export any configuration you need to keep and note the current operating mode, subscription groups, and custom rules. Afterward, check in this order: can the app start, read subscriptions, connect, and route traffic as expected? If only one type of access is affected, check the relevant rules and resolution path first. Testing changes separately helps distinguish interface issues from server-side or local network changes.

Evaluate Protocol Performance in Context

VMess and VLESS make different design tradeoffs, but neither protocol name guarantees higher throughput or lower power use. Real-world performance also depends on server load, transport overhead, network latency, encryption implementation, and device conditions. Mobile use adds background restrictions and network changes to the mix. Start by ensuring compatibility with your configuration, then compare under similar network, destination, and timing conditions. A single latency test doesn't characterize an entire route.

If you're new, choose the right client on the download page, then follow the guide to import a subscription and verify the connection. For protocol migrations or routing changes, continue with the protocol guide. If you can connect but access is unreliable, first determine whether all requests fail, only specific domains fail, or the connection drops when the screen locks. Then see Frequently Asked Questions for the right checks. Pinpointing the scope of a problem is usually more useful than repeatedly reinstalling.

Client and Subscription Reading Notes

Explore client selection, subscription formats, and how Android handles proxy traffic.

Browse all articles →

When following configuration instructions, check whether they refer to a client setting or a core field. Options with the same name may appear in different menus across tools, and import formats may be limited by a client's parsing capabilities. Subscription content contains credentials that can connect to a server, so don't post it publicly. When asking for help, describe the error and steps taken; remove sensitive fields from any examples.