V2Ray Clients · Download and Setup Guide

V2Ray Cross-Platform DownloadFour PlatformsClients and Setup

Guides to free, open-source clients, subscriptions and routing, and troubleshooting—from choosing a download to verifying your connection.

GUI Xray · V2Fly Import Subscriptions

The dashboard above is a static illustration, not an interactive client UI. The port is shown only to explain local listening. Versions may use a combined listener or different ports; check the client settings and startup logs for the actual values.

Choose by operating system

Clients for four platforms

↗

Start by confirming your operating system, then check your processor architecture. Use v2rayN on desktop to manage servers, subscription groups, and routing. For Android, start with v2rayNG; consider v2flyNG if you need compatibility with an existing V2Fly config. Clients manage settings and connections, but you still need server details or a subscription link you’re authorized to use.

Windows

v2rayN

Download options include the desktop edition and the classic WPF edition. The desktop edition uses a cross-platform interface, while WPF retains the familiar Windows layout. If you’re new, use the download page’s system requirements to choose; there’s no need to install both just to compare their interfaces.

Before launching, confirm your system architecture and runtime requirements. After importing a config, test the selected server before enabling the system proxy. If your browser works but another app cannot connect, check whether that app uses the system proxy rather than importing the subscription again.

Go to Downloads

macOS

v2rayN

Choose the Apple Silicon or Intel download for your Mac. Check the chip or processor name in About This Mac, then install and launch the app by following the on-screen prompts.

Managing servers and enabling a local proxy listener are separate steps in desktop clients. Adding a node does not automatically route every app through the proxy. First confirm that the core starts, then check the system proxy settings. When you’re done, clear the proxy to avoid leaving settings that point to a closed port.

Go to Downloads

Android

v2rayNG / v2flyNG

v2rayNG uses the Xray core; v2flyNG is an alternative built around V2Fly. The download page offers arm64 and universal packages. If you’re unsure of your device’s architecture, check its system information instead of guessing from the app name.

The first connection usually requires permission to set up a system VPN. If the connection drops when the app goes into the background, check battery optimization, background activity, and per-app proxy settings. The clients support different config features depending on their cores, so confirm that your protocol and transport are supported before switching.

Go to Downloads

Linux

v2rayN

Choose a deb or rpm package based on your distribution, then select x64 or arm64. The package format, processor architecture, and desktop runtime all need to match. Successful installation does not guarantee that every desktop dependency is available.

Desktop environments may handle system proxy settings differently. If an app doesn’t use them, enter the local proxy type, address, and port directly in the app. Command-line tools often have separate proxy settings, so test them independently rather than assuming the GUI’s connection status applies to every program.

Go to Downloads

View all clients →

Client settings

Subscriptions, routing, and local listeners

It’s easier to understand the connection in three layers: an app sends requests to a local listener, the core uses routing rules to choose a direct or proxied outbound connection, and the proxy connects through the selected server. A subscription updates server details; it doesn’t replace either of the first two layers. Troubleshoot one layer at a time instead of changing several settings at once.

ROUTING

Separate traffic capture from routing

↗

The system proxy determines whether apps send requests to the client. Routing mode determines which outbound path the core uses for requests it receives. To route traffic by domain or address, choose a suitable routing preset and check the order of its rules. Global routing does not automatically send traffic from every app through the proxy; it only affects traffic that reaches the core. Centralized rules are easier to manage than configuring each app individually, but you still need to confirm how each app connects. After changing a setting, retest the same destination so you can tell whether the change made a difference.

System proxySet system proxy automatically
Routing presetBypass mainland China
Other presetsBlacklist / Global
Rule matchingChecked in the current rule order

Getting started

Verify your connection in three steps

↗

These steps work for a first-time setup or a cleanup of existing settings. On desktop, follow the v2rayN workflow; on Android, use the v2rayNG import and permission steps as a guide. Menu labels can vary by version. To confirm that a step worked, check the list contents, core logs, and actual access—not just the button color.

  1. Import a subscription or server

    Get a complete subscription URL or the share link for a single server. For a subscription, create a group and update it. For a single server, use the client’s import option to add it to the list. In either case, confirm that selectable entries appear after import; an empty list means setup is not complete.

    If parsing fails, check for extra spaces, line breaks, or missing characters in the copied content, then confirm that the client supports its format. Don’t change the server address, port, or identity parameters arbitrarily; they must match the server. A successful subscription update only confirms that the details were retrieved, not that every node can connect.

  2. Select a server and connection method

    Select a server from the list, check its connection test and startup logs, then configure routing. On desktop, enable “Set system proxy automatically” if needed. On Android, review and approve the system VPN permission when connecting for the first time. If per-app rules are enabled, make sure the app you want to use is included.

    Keep the setup simple for your first test: use a clear connection method and one destination you can retest. System proxy settings, global routing, and virtual network adapters operate at different layers; don’t enable them all just because their names sound similar. If another network interception tool is running, check whether it conflicts over the same interface or system settings.

  3. Test access and record the result

    Open the destination in the app you want to test. Distinguish a connection failure from a DNS lookup failure or an issue affecting only one service. A latency test reflects only its specific test method; it is not a measure of download speed or a substitute for real-world access. If a webpage loads but another app fails, check that app’s proxy settings and connection protocol first.

    If the problem persists, note when it occurred and save relevant log excerpts, removing subscription URLs, identity parameters, and sensitive server details. Check the local listener, app connection method, routing rules, and server config in that order. When you’re done, clear any system proxy you no longer need so apps don’t keep trying to connect to an old port after the client exits.

View the complete guide →

Open-source ecosystem and maintenance

Project V, V2Fly, and Xray

“V2Ray” is often used as a catch-all for a family of related proxy tools, but client names, core families, and protocol names are not interchangeable. Knowing the difference helps you choose an app, import the right config, and determine whether an issue lies in the UI settings or the core’s capabilities.

Project V / V2Ray ecosystem V2Fly · Xray core families GUI clients and config management

Origins and core branches

Project V brings together composable network proxy tools, including the well-known V2Ray implementation. The V2Fly community continues work on related core projects, while Xray has developed its own feature path from related technical foundations. The two share some concepts, but their implementations and configs differ. Switching cores doesn’t guarantee that every config will work unchanged.

Protocols, transports, and security settings need to be understood together. VLESS and VMess are proxy protocols; REALITY relates to connection security, while transport is a separate setting. Server share links often include all of these details. Judging compatibility by a single label can overlook required server-side parameters, leading to a successful import but a failed handshake.

What the three clients do

v2rayN, v2rayNG, and v2flyNG are open-source GUI clients. They provide interfaces for managing subscriptions, selecting servers, and configuring settings, while the corresponding core handles network traffic. v2rayN is for desktop use; v2rayNG and v2flyNG are for Android and use Xray and V2Fly respectively.

Choose a client based on your device’s operating system and the features your existing config requires. Seeing the same protocol name in two interfaces does not guarantee equal support for every transport combination. If a config already works, preserve its key parameters. When migrating, test a small setup first, then move subscriptions and rules to avoid conflating a UI change with a network issue.

Open-source licenses and config resources

Open source means code can be viewed, used, and modified under its applicable license; it doesn’t mean every related component uses the same license. Clients, cores, and bundled rule data may each have different terms. When redistributing or modifying software, follow the license for each component and retain any required notices instead of treating the ecosystem as a single product.

Free client software and charges for remote servers are separate matters. Installing an app doesn’t create a working server; the source provider controls subscription validity, access, and node maintenance. This site provides download links and usage guides, not subscription accounts. Before importing config, make sure the source is trustworthy, you’re authorized to use it, and you understand the network settings it contains.

What to check before and after updates

Updating the GUI, core, and routing data may require separate steps. After updating the client, recheck the selected core, active server, and local listener. After updating a subscription, confirm that your current node is still listed by the source. Don’t update every component after a single failed connection; adding variables makes the issue harder to reproduce.

Before updating, use the client’s export feature to save any settings you need, and store files containing sensitive information securely. After updating, test a config that previously worked, then check custom DNS, routing rules, and how apps connect. If a new error appears, record its exact message and the steps that led to it. Troubleshoot based on the symptoms instead of assuming that a completed update means the connection is fixed.

Recent troubleshooting notes

Connection and subscription troubleshooting

↗

Choose an article based on the symptoms. If the core won’t start, check the local port. If a subscription update returns no nodes, check the source and parsing. If a node times out, trace the connection path step by step. Similar “unable to connect” messages can come from different layers, so use logs and retest results to decide what to check next.

View all articles →

Download v2rayN