• Open-source clients · Setup guides in Chinese

V2Ray Community Downloads & Setup

Find open-source client downloads, with step-by-step guides in Chinese to importing subscriptions, routing traffic, and choosing a core.

  • VMess
  • VLESS
  • REALITY

CLIENT SHELF / DOWNLOADS

Choose a client by platform

For desktop, start with v2rayN; for Android, start with v2rayNG. Check your OS and processor architecture before downloading, then follow the setup guide to import your configuration.

Windows

Recommended for desktop

Choose between the desktop edition and the classic WPF edition. The desktop edition uses a cross-platform interface, while WPF keeps the familiar desktop layout. Check your device and OS settings before visiting the download page for installation instructions. Don't replace an existing app just because another installer has a similar name.

On first launch, save your subscription URL and update the group, then select a node and configure the system proxy. If you already have a setup, back it up first and keep your existing groups, routing, and local ports intact to avoid changing too much during migration.

macOS

v2rayN

Choose the Apple Silicon or Intel download based on your processor. Open About This Mac from the Apple menu to see whether your Mac has an Apple chip or an Intel processor, then select the matching package. The download page lists both options for easy comparison.

On first launch, follow the system prompts to grant permissions. Start with the system proxy and check whether your browser can reach the sites you need before considering Tun. Tun uses a virtual network adapter and has different permission requirements and traffic coverage from a standard system proxy, so there's no need to enable both during initial setup.

Android

Recommended for Android

v2rayNG uses the Xray core; v2flyNG is an alternative that uses the v2fly core. Most devices should start with the arm64 download. If you're unsure of your processor architecture, check the universal build details. Choose a client based on the protocols and settings in your subscription, not just the app name.

After importing your subscription, select a node, start the connection, and approve the system VPN prompt. If the connection drops after you leave the app, check battery and background activity restrictions in system settings. Background permissions affect whether a connection stays active, but don't replace checking the node configuration itself.

Linux

v2rayN

Choose deb or rpm to match your distribution's package manager, then check whether your device is x64 or arm64. Package format and processor architecture are separate: the first determines which package manager installs the app; the second determines whether it can run on your processor.

Once the graphical interface is running, check the local listening port and your desktop environment's proxy settings. Some apps don't automatically follow the system proxy, so you may need to configure them individually. Before enabling Tun, check its permission requirements to avoid mistaking a permissions issue for a broken subscription.

Penguin graphic: Font Awesome, CC BY 4.0.

CONFIGURATION / SETUP WORKFLOW

Subscriptions, proxies, and routing

Get one configuration working first, then adjust which traffic it handles. The steps below follow a practical setup order; labels may vary slightly by client and operating system.

Subscription groups and update options

A subscription is a URL that lets a client fetch configuration; it doesn't establish a connection by itself. In v2rayN, open Subscription Group Settings, enter a group name and subscription URL, save, then update the group. Separate groups make it easier to identify which source returned an error. If an update fails, first check whether the URL has expired or was copied in full, then try Update Subscription (Without Proxy). This only changes the network route used to fetch the subscription; it won't fix an invalid URL. Avoid importing the same URL repeatedly, which can create duplicate entries.

See how to import a subscription →
Setup example

Subscription Group Settings

Group nameEveryday use
Update subscriptionWithout proxy

Subscription URLs may contain access credentials. Don't share them publicly.

System proxy and Tun

Select a node, then choose Set system proxy automatically under System Proxy to route traffic from apps that follow system settings through the local proxy port. This doesn't cover every app: some require proxy settings of their own, while other situations may call for Tun, which routes traffic through a virtual network adapter. Start with one traffic-handling method and verify browser access before adding more. Before closing the client, choose Clear system proxy to prevent the system from pointing to a local port after the app stops. Follow the platform-specific guide for Tun permissions and components.

See connection and verification steps →
System proxy
  • Clear system proxy
  • Set system proxy automatically
  • Don't change system proxy

Static illustration; these options won't change your device.

Routing rules and local network access

Routing rules determine whether traffic goes direct, through a proxy, or is blocked. This is separate from the system proxy setting. Start with a suitable preset in the client's routing settings and keep local network traffic direct, so connections to your router or printer don't go through a remote server. Before adding a domain rule, check its order and test it against the site you need; an earlier match can prevent later rules from taking effect. If only certain domains fail, check DNS—the process that resolves domain names to IP addresses. Change one setting at a time to distinguish a DNS failure from an incorrect routing choice.

Read the routing and protocol reference →
Routing settings example

Bypass local network

Local network addressesDirect
Rule matchingEvaluated in order

Preset names and behavior depend on the client you're using.

Protocol settings and core capabilities

The core establishes the connection; the client turns interface settings into a configuration. The same protocol name doesn't guarantee that different cores support identical transport and security settings. If your configuration uses REALITY or specific flow-control parameters, check that your client and Xray support them. For existing v2fly configurations, verify compatibility against the original fields. Note the current selection before switching cores, then save, check the startup log, and test the same site. Don't change every protocol at once: connection failures can also result from an incorrect address, time settings, or mismatched server parameters.

Compare V2Fly and Xray →
Core settings example
Core Xrayv2fly

Check the protocol, transport, security layer, and flow-control settings before choosing a core.

Use one subscription on multiple devices; check settings on each

Using the same subscription across devices means reusing a valid URL, not copying every setting from one device to another. Save the same subscription URL in v2rayN and v2rayNG, then update each client separately. This won't automatically sync system proxy settings, app routing, or background permissions. After importing, check that protocol and security settings are intact, then select a node and test each device independently. Before migrating, you can use the client's backup feature, but subscription URLs and exported configurations may contain access credentials; store them securely. When sharing screenshots, hide URLs and identity fields, leaving only the details needed to troubleshoot.

See desktop and Android setup guides →
Configuration migration checklist
Subscription URLSave separately on each device
Routing and permissionsCheck separately on each device

Syncing subscription data doesn't sync device system settings.

PROJECT V / OPEN-SOURCE ECOSYSTEM

How clients, cores, and protocols fit together

Separate these three concepts to make downloads and troubleshooting clearer: clients provide the interface, cores handle connections, and protocols define how communication works.

v2rayN → Choose a core for your configuration v2rayNG → Xray v2flyNG → v2fly

Project V and the core ecosystem

Project V is a useful starting point for understanding the V2Ray ecosystem. It brings together proxy communication, transport, and routing capabilities, while graphical clients add subscription management, node lists, and settings interfaces. So when searching for the V2Ray website or a client download, first decide whether you need project information, core documentation, or an app for everyday use. This site brings together common download links and setup references in Chinese; its community-maintained pages are not a substitute for the official release pages of every upstream project.

V2Fly continues the community development of V2Ray, while Xray has developed its own feature set from related code. They share a background, but should no longer be treated as identical programs with different names and fully interchangeable configurations. Some basic concepts overlap, but support for newer transports, security mechanisms, and configuration fields should be checked separately. Passing one core's configuration directly to another may result in unrecognized fields or different behavior. Check the error message first rather than simply switching to a different-looking client.

Open-source status of the three clients

v2rayN, v2rayNG, and v2flyNG are all open-source graphical clients. v2rayN is designed for desktop use, with tools to manage groups, system proxy settings, and routing. v2rayNG provides an Android client using the Xray core; v2flyNG offers an Android alternative based on v2fly. The clients and cores are maintained by separate projects, so their release schedules may differ. Whether the app opens, the subscription imports, and the connection works are three separate things to verify.

Open source means the source code is published under applicable licenses; it doesn't mean code and releases can be freely mixed between projects. The ecosystem includes different terms, from GPL-family licenses to MPL 2.0. Check each project's and dependency's license notices for the terms that apply. These clients are free for everyday use, but if you plan to modify, redistribute, or integrate code, read the relevant licenses rather than assuming the entire ecosystem uses one license.

Protocol names don't guarantee connection quality

VMess, VLESS, Trojan, and Shadowsocks refer to different protocol designs. REALITY is a security-related mechanism; these terms aren't interchangeable node types. A connection also depends on settings such as transport, server name, and certificate verification. Selecting the right protocol in the client isn't enough—the other fields must also match the server. If settings are missing after import, first check whether the subscription format can represent them and whether the client can parse them.

Latency, throughput, and resource use also depend on the network route, server load, device performance, and app behavior. A protocol name alone can't tell you which node will be faster, and a single test may not reflect ongoing performance. First check configuration compatibility, then test connection stability, and finally compare performance in the apps you use. On mobile devices, background activity and battery restrictions matter too; frequent disconnects aren't necessarily caused by the protocol.

Update and troubleshooting order

Updating the client, core, and subscription are three different actions. A client update mainly changes app features and interface; a core update can affect protocol support and connection behavior; a subscription update fetches configuration again. If subscription parsing fails, check the URL and response format first instead of immediately reinstalling the app. If the core fails to start, look for the configuration field named in the log. If only your browser can't connect, check the system proxy, local port, routing, and DNS in that order.

Record the current settings before making changes, back up your configuration before updating software, and test with the same node and site each time. That way, you can tie each change to an observed result and restore the previous setup more easily. When reporting an issue, include the client, operating system, selected core, error message, and steps already tried. Don't share subscription URLs, full identity fields, or screenshots containing credentials. Continue with the protocol and core reference, or follow the first connection guide step by step.

Read about the project and this site's scope →

READING / SETUP & TROUBLESHOOTING

Latest technical articles

Find guidance for the issue you're facing: subscription updates failing, no access after connecting, or questions about protocols and flow control.

v2rayN download