Desktop and Android · Setup Guides

V2Ray Official Downloadv2rayN and v2rayNG clients

Open-source clients, subscription groups, and custom routing—from installation to routing setup.

The interface above is a static illustration. Menu names and option locations vary by client release; routing tags, ports, and network modes depend on your local settings.

Five layers of configuration

Subscriptions, routing, and traffic capture

Subscriptions provide server parameters, routing determines where traffic goes, DNS resolves domain names, and TUN changes how traffic enters the client. Checking these layers separately makes issues easier to pinpoint than changing several options at once.

v2rayN · Subscription group settings

Example settings fields

Group nameName it after the subscription source
Subscription URLEnter a link from a trusted source
Server filterKeep entries as needed
Update subscriptionCheck the update results

Subscription URLs may contain access credentials. Do not share them publicly.

Subscription groups link server entries to their sources. Add a source in the group settings, then update it to avoid mixing entries from different sources in one list. Group names are for local reference only and do not change access permissions on the remote service. If you use filters, first confirm that the unfiltered subscription imports correctly, then narrow the results gradually. Groups are easier to keep up to date than links added one by one, but an update may remove entries deleted at the source. Save important custom settings separately. When switching to an Android client, check the group and update options again.

These interface snippets illustrate configuration structure; they do not indicate that a feature is enabled. Save a working configuration before making changes, adjust one layer at a time, and check the logs to confirm the actual behavior.

Explore Advanced Setup →

Choosing a client and installer

Download for your operating system

Choose v2rayN for desktop systems and v2rayNG for Android; v2flyNG is an alternative for the V2Fly core. Check your operating system and processor architecture before choosing an installer format. Platform links open the corresponding category in the download center, where current files and release details are maintained.

Windows

v2rayN is available as a desktop edition and a classic WPF edition. The desktop edition uses a cross-platform interface, while the WPF edition retains a traditional desktop workflow. Both focus on server management, subscription updates, and routing. Check the download page for the exact menus and runtime requirements. For a first installation, choose the option that matches your system architecture; you do not need to install both interfaces to get a basic connection working.

After importing a subscription, choose a fully configured server before setting the system proxy. If a browser works but another app cannot connect, check whether that app reads system proxy settings before assuming the server is down. If you need TUN, save a working configuration first, then check administrator permissions and other virtual network adapters. Before closing the client, make sure the system proxy has been restored so it does not point to a port that is no longer running.

Go to downloads

macOS

v2rayN provides separate downloads for Apple Silicon and Intel processors. Check the chip or processor name under About This Mac, then choose the matching architecture. Do not rely only on the computer's appearance or purchase year. After installation, confirm that the app launches and saves its settings before importing a subscription. If the system shows a security alert, read it carefully and distinguish an app authorization issue from a network connection problem.

Desktop clients work differently from Android apps, but server address, port, transport type, and TLS fields must still match the server. Which programs are affected by the system proxy depends on how each program handles networking. Test first with a browser that follows system settings, then check other apps. If you enable traffic capture, also check system permissions, DNS behavior, and LAN access; a menu toggle alone does not confirm that the configuration is working.

Go to downloads

Android

v2rayNG uses the Xray core and is a common choice for Android; for V2Fly core behavior, consider v2flyNG. Most modern devices use arm64. If you are unsure of your device's architecture, check the universal build notes. Similar client names do not guarantee identical core capabilities, protocol fields, or import behavior. Before choosing, check the protocols and transports used by your subscription, then decide whether you need a different client.

The first connection prompts you to grant system VPN permission. This creates a local traffic interface; it is not subscription authentication. After granting permission, check the selected server and routing mode. Android battery optimization, background restrictions, and other VPN apps can all affect connection stability. If the connection only recovers when you reopen the app, check its background settings first. Per-app proxy rules change which traffic is captured. During troubleshooting, note what the allowlist or blocklist means so apps excluded from capture are not mistaken for connection failures.

Go to downloads

Linux

v2rayN is available in deb and rpm formats. Choose the package type for your distribution, then check whether your system uses x64 or arm64. The download center features x64 packages as the main option and also lists arm64 builds. A graphical client is useful for managing subscriptions and rules in a desktop environment. A package manager recognizing the installer does not mean proxy settings are configured for your current desktop session; verify installation and traffic capture separately.

Desktop environments do not all handle system proxy settings the same way, and terminal apps may require their own proxy configuration. First check the local listening address and port, then confirm which proxy type the target app uses. For virtual network adapter traffic capture, check how permissions, routing, and DNS services interact. Record the original network settings before making changes. If LAN addresses become unreachable or DNS fails, revert one change at a time. Avoid changing the installer, core, and network mode simultaneously, or it will be difficult to identify what caused the change.

Go to downloads

A client handles local configuration and traffic forwarding; it does not provide a server or subscription. After installation, you still need valid parameters from a trusted source. The protocol name in a share link is only one part of the picture—transport, encryption options, and server requirements matter too.

Browse all clients → Compare the three clients →

Project V / V2Fly / Xray

Where cores and clients differ

The client interface, proxy core, and remote service are three separate components. Open-source describes how code and licensing are made available; a working connection also depends on local settings, network paths, and server status. Knowing what each layer does helps you update and troubleshoot the right component.

01 / Project V

From a toolkit to a configuration system

Project V focuses on networking tools, and V2Ray is one of its widely used proxy software projects. V2Ray is not the name of a single transport protocol; it is a configuration system for organizing inbounds, outbounds, routing, and DNS. In everyday use, “V2Ray client” usually means a graphical app that generates these configurations and launches a core. Understanding this distinction helps avoid treating a toggle in one interface as a capability shared by every core.

A connection typically enters through a local inbound, is assigned an outbound by routing, and then communicates with the remote server using the relevant protocol. Server lists manage connection parameters, the system proxy provides a traffic entry point, and routing modes determine where traffic goes. All three can affect the experience, but they are not interchangeable. When troubleshooting, first check whether the request reaches the client, then whether it matches the expected outbound, and finally whether the remote handshake succeeds. This makes the diagnostic sequence clearer.

02 / V2Fly · Xray

Different cores in the same ecosystem

V2Fly continues community maintenance of V2Ray, while Xray has developed a separate core based on related technology. They share many configuration concepts, but their feature sets and field details are not identical. A client recognizing a shared link does not guarantee that the current core supports every parameter it contains. For specific security mechanisms, flow control, and newer transport combinations, check both the client's import support and the core actually running.

v2rayNG is based on the Xray core, while v2flyNG offers an Android option with the V2Fly core. v2rayN uses a desktop interface to manage servers, rules, and core runtime parameters; available options depend on the distribution and configuration. When switching cores, keep the original parameters and compare the generated configurations. Do not keep changing cores just because a connection fails: a wrong address, time, port, or TLS name usually will not be corrected automatically by another core.

03 / Open source

Open-source code and licensing

v2rayN, v2rayNG, and v2flyNG are open-source client projects. The V2Fly and Xray cores use the MPL 2.0 license; check the individual licenses for graphical clients and bundled components. Open source provides a public basis for reviewing implementations, modifying code, and discussing issues, but suitability for your device still depends on system requirements and real-world testing. Distributing apps, modifying code, and republishing components are subject to their respective license terms; these projects should not all be treated as if they had the same license.

For everyday use, pay close attention to configuration and permission boundaries. Subscription URLs may contain access credentials, share links may include user identifiers, and logs may record destinations. Before sending troubleshooting information to someone else, remove these details and keep only the error type, sequence of events, and necessary fields. Open-source status does not change your trust relationship with a remote service or replace the need to assess subscription sources. Installing a client and choosing a service source are separate decisions.

04 / Configuration maintenance

Updating the interface, core, and rule data

Client, core, subscription, and rule data updates each affect different things. A client update may change menus and how configurations are generated; a core update changes protocol implementation and runtime behavior; a subscription update refreshes remote server parameters; and a rule data update affects matches against categories such as geosite and geoip. A successful subscription update does not mean the client is up to date, and installing a new client does not make an expired subscription valid again.

Save your current configuration before updating, especially custom routing, DNS, listening ports, and per-app settings. After the update, verify the basic connection in its original mode before testing additional features. If only one rule behaves differently, check the data set and rule order; if no servers start, inspect the core startup logs first. Change one layer at a time. This usually preserves more evidence than resetting everything and makes it easier to return to a known working state.

05 / Reading path

From installation steps to configuration guides

For your first setup, follow the guide to install the client, import a subscription, choose a server, and verify the connection. Once the basic route works, use the glossary to distinguish system proxy, global routing, TUN, and DNS. “Global proxy” usually refers to a routing policy; it does not mean every app sends traffic to the client. Conversely, a virtual network adapter can capture traffic while rules still send some destinations direct. Keeping these two dimensions separate makes it easier to describe the current network state accurately.

If you already have a working configuration, there is no need to rewrite everything just to match an example. Start with one clear goal, such as keeping LAN traffic direct, adding an exception for a domain, or organizing multiple subscription sources. Record the behavior before and after each change, then check the logs. The configuration snippets on this site explain fields and relationships; a complete working setup also needs the appropriate inbounds, outbounds, authentication parameters, and data files. Copying a fragment of JSON is not a substitute for a complete client configuration.

Configuration Notes

Protocol selection and rule troubleshooting

Read by configuration topic instead of changing every switch at once. The three articles below cover protocol selection, rule priority, and connection timeouts. First identify whether you are dealing with parameter compatibility, routing matches, or a basic connection issue, then follow the relevant checks.

Choosing Guide

VMess vs. VLESS, Trojan, and Shadowsocks: Protocol Differences and Use Cases

Compare encryption, handshake overhead, transport combinations, and client support. When choosing a protocol, start with the full parameters provided by the server, then check whether your local core supports that combination. The protocol name alone cannot predict connection performance, and speeds should not be compared without considering network conditions.

Read the protocol comparison →
Advanced Setup

Custom V2Ray Routing Rules: domain and ip Syntax, geosite Matching, and Rule Priority

Explains the full, domain, keyword, and regexp prefixes, along with how to use geosite and geoip data sets. Follow concrete examples to understand top-to-bottom rule matching, check whether broad rules override exceptions, and make sure outbound tags match their definitions. This helps prevent rules that look correct but send traffic along the wrong path.

Read the routing rules guide →
Troubleshooting

v2rayNG Connection Timeout? A Troubleshooting Checklist from Local Network to Server Settings

Check the local network, system time, subscription status, transport parameters, TLS settings, and server status in order. Distinguish timeouts affecting every server from failures on a single entry. Note which connection stage reports the error, then decide whether to check local traffic capture or remote parameters. This avoids wasted effort from repeatedly reinstalling the app.

Read the timeout checklist →

Browse all articles →