Client Downloads / Installation & Setup

V2Ray Guidesv2rayN Setup

Choose an open-source client for your platform, then follow the menus to configure subscription imports and traffic routing.

Protocols & Transports
  • VMess
  • VLESS
  • Trojan
  • REALITY

Interface illustration: Subscription groups manage server addresses; routing rules select the outbound route. The stacked components illustrate how the settings relate—they are not drag-and-drop controls in the client.

Settings at a Glance

Subscriptions, Routing & Proxy Modes

First, have the client retrieve the server configuration; then decide how app traffic enters the client and which outbound route it uses. A successful subscription update only confirms that the configuration was retrieved—it does not mean the system proxy is enabled. Changing the proxy mode will not fix an expired subscription URL. The four settings below cover the configuration source, matching rules, app entry point, and virtual network adapter. Check them layer by layer when troubleshooting instead of changing everything at once.

Manage subscription URLs separately from server lists

In v2rayN, open “Subscription Group Settings” and add a group. Enter an easy-to-recognize alias, then paste the full URL. Save it, select “Update subscriptions,” and confirm that servers appear in the list before choosing one to use. The auto-update interval is measured in minutes; first make sure a manual update succeeds. A subscription URL retrieves configuration, while an individual share link imports a single configuration—don't mix them up. Unlike entering servers one by one, group updates make it easier to keep up with server changes. However, an update does not replace a connection test or fix server-side parameters.

View the guide →

Choose a Platform

Client Downloads

For desktop, choose v2rayN. For Android, start with v2rayNG; consider v2flyNG if you need a V2Fly configuration. On the download page, check your processor architecture and package format, then follow the instructions for your platform. Installing the client is only the first step: you'll still need a valid subscription or server configuration. The installer does not include a remote service you can use out of the box.

Windows

Recommended for desktop

Manage subscriptions, switch servers, and configure routing in a desktop graphical interface. The download page offers a desktop edition and the classic WPF edition. The desktop edition has a cross-platform interface, while WPF retains the familiar classic desktop experience. Choose based on system requirements, runtime environment, and what you're used to; don't mix the setup steps for the two interfaces.

On first launch, check the logs for missing dependencies or port conflicts before importing a subscription. Store configuration files somewhere the client can write to, and close the client and back up existing settings before upgrading. If your browser still reports a proxy connection error after the client exits, check whether the system proxy points to a local port that is no longer listening before deleting all your servers.

macOS

v2rayN

Manage subscription groups and proxy settings in one desktop app. First, open “About This Mac” to check your chip: choose the Apple Silicon download for Apple chips or the Intel download for Intel processors. The packages target different architectures, so don't choose based on file size alone or follow installation steps for another operating system.

After installation, verify a standard proxy connection before trying TUN. Whether the system proxy works also depends on the active network service and each app's settings; terminal programs may not automatically use the desktop proxy. If macOS displays a security warning, follow the installation guide to verify the source and choose the right steps. Don't bypass the issue by disabling system protections wholesale. After switching networks, check DNS and the proxy entry point again.

Android

Recommended for Android

v2rayNG uses the Xray core, while v2flyNG uses the V2Fly core; the download page lists them in that order. Most recent phones can use the arm64 package. If you're unsure of your device's architecture, check the system information before choosing a universal build. Protocol and transport support must match the server settings; similar client names don't mean their configurations are fully interchangeable.

Import the subscription and update it, select a server, then connect and approve the system VPN prompt. If the connection drops when the app goes into the background, check battery optimization and background activity restrictions. If only some apps bypass the proxy, check per-app proxy settings. Android typically allows only one active VPN service; starting another similar tool may replace the current connection. Test with just one client running.

Linux

v2rayN

Manage subscriptions and routing on Linux distributions with a graphical desktop. Choose deb or rpm for your distribution, then check whether your system uses x64 or arm64. The package format determines how the app is installed; the processor architecture determines which hardware can run it. Both must match. Desktop environments, system components, and permission policies vary, so a successful installation doesn't guarantee that every app will automatically use the system proxy.

First confirm that the client can start its core and that the local listening port is available, then test the connection in a browser. Terminal programs, sandboxed apps, and desktop apps may use different proxy settings, so check them separately. Read the permission requirements before enabling TUN to avoid conflicts with existing virtual network adapter rules. If a problem appears after an update, note the distribution, desktop environment, and log error, then revert recent changes one at a time using the platform guide.

A single subscription can include configurations that use different protocols. Compatibility depends on the core the client actually runs and its capabilities, not the installer name. When switching devices, check system permissions, the proxy entry point, and the local port again; importing the same subscription won't automatically sync these device settings.

View all clients →

Open-Source Ecosystem & Configuration Boundaries

Project V, V2Fly, and Xray

Graphical clients, proxy cores, and remote servers are three separate layers. The client provides menus and configuration management; the core handles protocols and forwards traffic; the server provides the remote connection endpoint. Distinguishing these layers helps pinpoint whether a problem lies with installation, parameter compatibility, app traffic capture, or the remote connection.

Project relationships: shared history, separate development

Project V's suite of network communication tools includes V2Ray as a core project. V2Fly continues community maintenance and development of V2Ray; Xray originated from V2Ray and has since followed its own independent development path. “V2Ray client” is often used informally for graphical tools across this ecosystem. It doesn't mean they all use the same core or support identical configuration fields.

When following a guide, identify the client first, then check which core it uses. If the server requires a particular protocol, transport, or security setting, confirm that the core supports it before entering the values. For configurations involving VLESS and REALITY in particular, verify core capabilities and server parameters; changing field names at random won't make them compatible. Importing a subscription only passes parameters to the client—the core still needs to support them.

Three Clients: Interface Management and Core Execution

v2rayN is an open-source graphical client for desktop platforms, with server management, subscription updates, routing, and proxy settings. Available cores and features depend on the package and current configuration. v2rayNG is an open-source Android client that uses the Xray core; v2flyNG is also for Android and uses the V2Fly core, making it suitable for configurations that require it. Choose based on your device platform and parameter compatibility.

None of these three tools is a subscription service. Client downloads, subscription access, and remote service availability are separate things. Switching clients won't extend a subscription or change server-side data or connection limits. If no servers appear after a subscription update, check the group URL and update result first. If servers are listed but connections fail, check the selected configuration, protocol parameters, and logs. Narrowing down the problem to one layer is more effective than repeatedly importing the same URL.

Open-Source Licensing: Understand the Client and Core Separately

Open source means the code is available under the applicable license; use, modification, and distribution must still comply with its terms. The V2Ray core maintained by V2Fly uses the MIT License, while Xray-core uses MPL-2.0. Clients have their own license terms, so a core's license does not automatically cover the entire installer and its dependencies. If you plan to redistribute or modify software, review the licenses for the client, core, and bundled components separately.

Community maintenance enables ongoing bug fixes and feature development, but open-source status doesn't replace configuration checks. Subscription URLs often contain access credentials; hide the full URL, user identifiers, and other sensitive parameters before sharing screenshots. When asking for help, include the menu path, error type, and steps you've tried rather than posting a complete configuration with credentials. Sample URLs on this site only illustrate field formats and are not usable services.

Update Types: Subscriptions, Clients, and Rule Data

Updating a subscription retrieves server configurations; updating the client changes its graphical interface and bundled components; updating routing data affects domain or address matching. These actions modify different things. When troubleshooting a connection, don't run all three updates at once or it will be hard to tell whether the cause was a remote configuration change, a change in core behavior, or a different routing result. Keep your current configuration and note the error first, then choose the update that addresses the problem.

Before upgrading the client, close any running instances and back up subscription groups and custom routing rules. After upgrading, test a server that worked previously before trying new features. Set the subscription auto-update interval to suit your usage and provider's requirements. Frequent requests don't necessarily improve availability and may trigger rate limits. If a subscription URL has expired, changing the interval won't fix it; address the URL itself first.

Connection Checks: Separate Test Results from App Behavior

A successful server test doesn't mean every app is using the proxy. First verify the destination in a browser, then check the client logs for the corresponding connection, and finally confirm that routing chose the expected outbound route. A real connection test, TCPing, and loading a webpage check different parts of the connection, so one test number can't tell you whether the entire path is working. Network changes, DNS caches, and the destination site's status can also affect results.

If only one app fails, check its proxy options and traffic coverage first. If all apps fail, check whether the core is running, a server is selected, and the local port is listening. Even when you want global proxying, distinguish between routing app traffic into the proxy and sending traffic that has entered through a proxy outbound. System proxy or TUN usually controls the former; routing rules control the latter. For setup steps, see Getting Started. Check the platform guide for permission differences.

Configuration Guides

Importing Subscriptions & First-Time Setup

Choose the guide that matches the problem. If no servers appear, start with subscription imports. If the client won't launch, check the installation guide. Once connected, learn how to test and select servers. Keep one specific troubleshooting goal at a time; avoid switching servers, proxy modes, and routing rules all at once.