v2rayN · v2rayNG · v2flyNG

v2rayN Downloads
Setup Guide

Choose a client for your OS, follow the step-by-step guide to import a subscription, then review routing and DNS settings. Get connected first, then fine-tune one setting at a time.

Open Source GUI Multiple Core Options
  • Tutorial—Four steps from subscription import to connection check
  • Config Reference—Examples covering everything from inbounds to policy
  • Troubleshooting—Fix connection and speed-test failures
Choose a client for your device

Configuration workspace

Related documentation

V2Ray Client Downloads by Platform

For desktop, start with v2rayN; for Android, look at v2rayNG. If you need a V2Fly core, consider v2flyNG. The installer depends on your OS and processor; connection behavior depends on your configuration and core. Evaluate these separately to avoid choosing the wrong build. The downloads page lists specific builds and installation requirements; this page helps you decide where to start.

A client stores your configuration, starts the core, and provides a local traffic entry point. It cannot create a working remote service. Before you begin, make sure you have a subscription URL or server details you’re authorized to use. If you already have a setup, preserve your groups and custom routing rules before installing or migrating. For a first-time setup, follow the tutorial to verify a single connection before enabling advanced options.

Windows

v2rayN

The desktop edition uses a cross-platform interface, while the classic WPF edition retains its familiar layout. If you’re installing for the first time, start by exploring the desktop edition. If you already have an established workflow and configuration, compare the interfaces before deciding. After installation, confirm the client can start its core, then import your subscription. A successful launch doesn’t mean the proxy is working yet.

macOS

v2rayN

Check your chip under “About This Mac,” then choose the Apple Silicon or Intel download. After importing your subscription, check whether the system proxy is enabled and whether your browser follows system settings. If you need TUN, configure permissions separately. For your first connection, don’t enable both the system proxy and virtual network interface at once; keeping variables separate makes troubleshooting easier.

Android

v2rayNG / v2flyNG

v2rayNG uses the Xray core, while v2flyNG offers an alternative based on the V2Fly core. Most recent phones can start with arm64; if you’re unsure of your device’s architecture, check its specifications or consider a universal build. For your first connection, approve the system’s VPN permission. If the connection drops when the app moves to the background, check battery optimization, background permissions, and other apps using the VPN connection.

Linux

v2rayN

Choose a deb or rpm package to match your distribution, then check the processor architecture. A GUI client’s system proxy setting may not apply to terminal programs, so check proxy support in each app individually. If your browser works but the command line doesn’t, check that program’s proxy settings and environment before replacing your entire server configuration.

What can
v2rayN help you manage?

Start by separating the setup into three layers: the app sends requests to a local entry point, the core selects an outbound based on routing rules, and DNS resolves domains for connections. The client brings these settings together in a GUI. When something goes wrong, tracing this path is more useful than repeatedly importing the same subscription.

A subscription gathers multiple server configurations behind one update point. Create a group, paste a URL you’re authorized to use, and confirm that configurations appear in the list after updating. If a regular update fails, try updating through the proxy if you already have a working connection. Subscription URLs may contain access credentials, so don’t include them in screenshots or public logs. Groups make it easier to track sources and update boundaries than adding servers one by one. Back up custom labels, ordering, and routing rules separately; a remote update is not a permanent archive of local settings. The example on the right shows how a URL is stored in JSON, not the client’s subscription file format.

{
  "url": "https://example.com/sub"
}

Configuration checklist: trace the entry point, rules, and outbound

If your subscription updated but you still can’t connect, first check that a valid configuration is selected, then review the core startup logs. Next, confirm that the app is actually connecting to the local inbound, and check which outbound routing selected and how the domain was resolved. A reachable TCP port only means a handshake may be possible; it doesn’t verify a complete protocol connection. A test can also fail because its destination is unreachable. Keep the original error details: they’re more useful for troubleshooting than simply noting “timeout.”

The JSON in the config reference explains how fields relate to one another. Clients usually generate a runtime configuration from the GUI, and direct edits to a temporary generated file may be overwritten the next time the client starts. Put rules you want to keep in a custom configuration area supported by the client, then inspect the generated result. For the full field reference, start with the inbounds section. For a first setup, follow the subscription import tutorial.

The Project V ecosystem
and what clients do

In everyday discussions, “V2Ray” is often used as an umbrella term. For practical setup, it helps to distinguish the project ecosystem, proxy cores, and GUI clients. Project V introduced a modular approach to proxy tools: inbounds receive requests, routing determines where they go, and outbounds make connections. V2Fly continues V2Ray’s community development, while Xray has developed as a separate core branch. They share technical roots but have evolved different features, so similar names don’t mean their configurations are always interchangeable.

The client provides the interface; the core handles connections.v2rayN brings subscriptions, server lists, system proxy controls, and configuration options together in a desktop interface, then runs the selected core. v2rayNG is for Android and uses the Xray core; v2flyNG offers the V2Fly core option. All three are open-source software projects. Choose based on your device and configuration needs; there’s no need to force the same interface across different devices just to keep the names consistent.

Protocol compatibility depends on specific features. VMess, VLESS, and Trojan are protocol choices; transport methods and security options such as TLS and REALITY are separate considerations. Whether a configuration works depends on whether the client imports it correctly, the core recognizes it, and the server parameters match. Seeing “VLESS supported” doesn’t tell you whether a configuration with a particular transport and security setup is compatible. If startup fails, check the reported field and the core’s supported features before switching clients.

Open-source licenses vary by project. v2rayN, v2rayNG, and v2flyNG use GPL-family licenses; the V2Fly and Xray core projects use MPL 2.0. Licenses define the terms for using, modifying, and distributing source code; they don’t authorize access to a remote service. Your subscription, server, and network each have their own terms and boundaries. You may not need to study every license for everyday use, but if you plan to redistribute, modify, or integrate code, read the relevant project license rather than assuming “open source” means unrestricted.

Updates also happen at different layers: client updates change the interface and integrations; core updates affect protocol implementations; subscription updates replace remote configurations; and rule database updates affect domain and IP collections. Each update addresses a different issue, so there’s no need to apply them all when troubleshooting. If a site is routed incorrectly, check rule order and databases first. If the core reports an unsupported field, review core capabilities. If just one subscription group fails to update, check its URL, permissions, and update route.

Keeping a configuration you can roll back to is more practical than trying to get every setting perfect at once. Before making changes, note the current outbound, routing mode, DNS, and proxy entry point. Change one group of settings at a time. Once your browser works, test the other apps you need. Don’t assume background apps, games, or command-line tools follow the system proxy. Don’t assume enabling TUN covers every network scenario either. Verify the traffic entry point, routing, and DNS for your device and environment. A toggle shows a setting, not its result.

Know what a connection test actually measures. TCPing is closer to a port reachability check; a real connection test also involves the protocol handshake and the test destination. Results depend on your local network, server status, DNS, and whether the destination responds. One successful test doesn’t mean every app will work, and one failure doesn’t prove the client is at fault. Use the same steps each time: select a configuration, start the core, confirm the proxy mode, visit the intended destination, and check the logs. Consistent steps make results comparable.

These guides separate how to set things up from why settings work the way they do. The tutorial walks through the steps after installation; the config reference explains fields and snippets; Troubleshooting narrows down issues by symptom; and technical notes explore specific mechanisms. V2Ray Club is an independent client documentation site, not a provider of remote connection services. Once you have a configuration you’re authorized to use, start with a basic connection and add complex routing only if you need it. Read what’s relevant to your current problem; there’s no need to go through every section at once.

Technical notes: connections, cores, and DNS

Once you have a basic connection working, dig deeper based on what you need to solve. These three articles cover first-connection checks, core selection, and FakeDNS, so you can avoid changing settings from different layers all at once.