Choose a client · Import subscriptions · Configure routing

V2Ray Client Download & Setup

Choose an open-source client for your platform, start by importing a subscription, then configure routing and TUN mode.

  • VMess
  • VLESS
  • Trojan
  • REALITY

CONFIGURATION / SETUP OPTIONS

v2rayN settings and routing

First, distinguish subscriptions, traffic entry points, and outbound rules before changing specific settings. Choose a setup topic on the right; the mock interface on the left highlights the corresponding controls. It illustrates how the settings relate—actual menus depend on your client.

v2rayN · Settings overview
Subscription groupsSettingsRouting settings
Subscription groupsManage URLs and group names
Update current subscription
System proxyApps follow system proxy settings
Automatically configure system proxy
RoutingChoose an outbound by rule
Bypass mainland China
TUN modeRoute traffic through a virtual network interface
Core and protocolChoose a compatible core for the node settings
Xray / V2Fly

Interface illustration only; it does not show the current connection status. Import a subscription first, then verify the proxy and routing.

CLIENTS / CHOOSE A PLATFORM

Client downloads for four platforms

For desktop, start with v2rayN; for Android, start with v2rayNG. Choose an installer that matches your operating system, processor architecture, and package format. Node configurations for phones, desktop installers, and core files are different things.

Windows

v2rayN · Cross-platform desktop / Classic WPF

Choose the cross-platform desktop edition or classic WPF interface. Check your OS and processor, and avoid running clients on the same local port.

Browsers usually follow the system proxy; terminals may need separate settings. If browsing fails after exiting, check that the proxy was cleared.

Go to downloads

macOS

v2rayN · Apple Silicon / Intel

Check “About This Mac”: Apple Silicon needs arm64; Intel needs x64. Install the matching package and follow the system’s launch permission prompts.

Test the system proxy first; TUN needs additional permissions. After changing networks, check proxy status and routing before importing subscriptions again.

Go to downloads

Android

Recommended: v2rayNG · Alternative: v2flyNG

Use v2rayNG with Xray or v2flyNG with V2Fly. Most recent phones use arm64; check the universal build notes if you’re unsure of the architecture.

Select a node, connect, and approve VPN access. If sites fail, check the node, DNS, and routing. For background disconnections, check battery restrictions.

Go to downloads

Linux

v2rayN · deb / rpm

Choose deb or rpm for your distribution and x64 or arm64 for your CPU. Avoid mixing the desktop client with system services that use the same port.

Test browsers, terminals, and package managers separately. Start with the system proxy, then configure TUN permissions and routing if broader coverage is needed.

Go to downloads
Browse all clients →The downloads page covers system requirements, package types, and download questions.

QUICK START / SETUP ORDER

From subscription import to connection testing

Change one thing at a time. First, get a working configuration into the client. Then decide which apps should use it, and finally verify that the rules behave as expected. These three steps work for a first-time setup or when rebuilding your setup on a new device.

Create a subscription group and update nodes

After installing and opening the client, have your subscription URL ready. In v2rayN, add a group in the subscription group settings, enter a recognizable name and URL, save it, then update the group. In v2rayNG, add the URL from the subscription menu and update that subscription. The name is for local organization; it cannot replace the full URL. The example https://example.com/sub?token=xxxx is not a working subscription and should not be copied as one.

After updating, check that the node list shows details such as protocol, address, and port. If it’s empty, check the update result, confirm the URL is complete and still valid, and make sure your current network can reach it. Don’t keep adding the same URL; that just creates duplicate groups. Subscription URLs may contain personal access credentials, so hide the full link before sharing a screenshot. Installing the client and getting a subscription are separate steps; installing the software does not create usable nodes.

Select a node and choose how traffic enters

Select a node from the imported list, then choose how apps send traffic to the client. On desktop, start with “Automatically configure system proxy.” On Android, allow the VPN service when starting the connection. Next, choose an existing routing profile and understand the difference between direct, proxy, and blocked traffic. There’s no need to change DNS, add custom rules, and enable TUN all at once. Menu names may vary by edition, but the order stays the same: select a node, route traffic into the client, then choose an outbound.

System proxy settings do not route traffic from every program. Browser extensions, custom proxy settings in developer tools, and terminal environment variables may override or bypass them. If only one app fails, check how that app handles proxy settings first. If an app ignores system proxy settings, read the TUN guide and check the required permissions. Global routing and TUN are not the same: routing affects outbound selection, while TUN mainly determines how traffic enters the client.

Test access and use logs to find the cause

After starting the client, open a destination you need to reach and check the connection log for the corresponding request. Then visit a destination expected to connect directly and verify the routing result. If you use local network devices, confirm they’re still accessible too. A successful connection, a successful subscription update, and an accessible webpage are three different outcomes; none proves the others. Keep the node and rules unchanged during each test so you can identify what caused the result.

If it fails, check in order: whether the core started, whether the local listening port is available, whether the request reached the client, and which outbound rule matched. A timeout may occur while connecting to a remote server; for DNS resolution failures, check DNS first; if the core exits immediately, review its startup output. Hide subscription URLs, credentials, and personal addresses when sharing error details. Once the connection is verified, add routing exceptions one at a time and save a restorable copy of the configuration. Use the same troubleshooting sequence after future updates.

Read the full tutorial →For concept explanations, start with the glossary. For specific issues, see the FAQ.

PROJECT V / OPEN-SOURCE ECOSYSTEM

Project V, V2Fly, and Xray

Graphical clients, connection cores, and node protocols are separate layers. Understanding how they fit together helps you identify whether to update the interface, core, or remote configuration.

Ecosystem overview · Not a live status

Project V
V2FlyXray

Open-source networking ecosystem

v2rayNv2rayNGv2flyNG

The client manages configuration; the core handles connections. Supported features depend on the selected core and combination of settings.

Explore the projects →

Ecosystem background and core branches

Project V is an open-source ecosystem of proxy tools and related components, with V2Ray as one of its widely used core projects. V2Fly continues community development along the V2Ray path, while Xray is a separate core that grew from related code. They share some concepts and configuration conventions, but their features and supported settings differ. When reading an older guide, first check which core it covers; don’t assume every configuration applies just because it uses “V2Ray” as a catch-all term.

Whether a node works depends on whether the client can generate the right configuration, whether the core understands its settings, and whether the remote service uses the same protocol combination. Successfully importing a link only confirms part of the parsing process. For errors involving REALITY, security layers, or transport settings, check core support and remote parameters first. Switching interface themes or repeatedly refreshing a subscription usually won’t fix a protocol mismatch.

What each of the three clients is for

v2rayN is designed for desktop use and manages node lists, subscription groups, system proxy, and routing, making it a good starting point for desktop devices. v2rayNG is for Android and uses the Xray core to import nodes and manage connections. v2flyNG is also for Android and is an alternative based on the V2Fly core. Choose based on your device and node requirements; you don’t need to install all three.

Similar client names don’t mean their menus, permissions, and backup formats are identical. When moving to another device, first confirm the subscription source still works, then set up the client again. Review routing exceptions, app exclusions, and DNS options separately. Desktop and Android also handle traffic entry differently, so don’t apply desktop system proxy steps directly to a phone. Download options and setup guides are separate here, making it easier to find the right instructions for each step.

Open-source licenses and service boundaries

v2rayN, v2rayNG, and v2flyNG are open-source clients. Public code lets the community review, discuss, and improve them. Open-source licenses set the terms for using, modifying, and distributing code; different projects and included components may use different licenses, so review each notice before redistribution. Open source describes how software is developed—it says nothing about the quality or data practices of a node service and does not replace checking the source of a subscription.

The client handles local configuration and connections; the subscription source provides node settings; the remote service forwards traffic. Each may have a different maintainer and update schedule. When reporting an issue, distinguish “the app won’t start,” “the subscription won’t update,” and “a node won’t connect” to identify where the problem lies. This site provides selection and setup guides, not subscription URLs. Use configurations you already have permission to use, and follow the rules that apply where you are.

Updates and ongoing maintenance

Updating a subscription changes the node configurations in a group; updating the client changes its interface and integrated features; updating the core can affect protocol support and configuration fields. These are separate operations. For routine maintenance, save a recoverable copy of your settings first, then review the release notes and check compatibility with your core, routing resources, and existing nodes. After an important configuration change, verify three things again: the request reaches the client, the expected rule matches, and the destination is reachable.

For long-term use, periodically remove expired groups and duplicate nodes, and document the purpose of custom rules. You can temporarily increase log detail when troubleshooting, but don’t publish logs that reveal destinations or credentials. If a problem appears after an update, compare the startup output and configuration changes before adjusting multiple network settings at once. The full guide covers concepts, installation, subscriptions, routing, TUN, and maintenance in sequence.

Read the complete guide, from beginner to advanced →

READING / SETUP & TROUBLESHOOTING

Routing rules and runtime logs

Once the basic connection works, read on to solve specific problems. These three articles cover custom rules, system proxy traffic entry, and log-based troubleshooting—in that order—helping you move from “it connects” to understanding where each connection goes.