• V2Ray Client · Settings Reference

v2flyNG Download V2Ray Client Setup Guide

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

  • Xray / V2Fly
  • Subscription groups
  • Rule-based routing

This is a static illustration of settings, not a recommendation to enable every option. Check LAN listening, routing resources, and core capabilities for your environment.

CONFIGURATION INDEX

Browse the configuration handbook by setting

First verify that a connection can be established, then adjust groups, traffic routing, and how traffic is handled. Configuration snippets explain individual fields; they are not complete files to apply as-is.

Subscription groups: keep update URLs and filters separate

Open “Subscription group settings,” create a separate group for each source, and enter the full subscription URL. The group name identifies the source; filters determine which servers appear in the list. Don’t use one in place of the other. For the first update, leave filters blank and confirm that content loads before filtering by name. If the list is empty afterward, check whether the URL is still valid and returns subscription data, then review the filter expression. Unlike importing a batch of share links, subscription groups preserve an update source that you can refresh independently. Remove access credentials from subscription URLs before sharing logs.

v2rayN → Subscription group settings
Add group → Enter subscription URL → Save
Subscription group → Update current subscription (without proxy)
Read this chapter in the advanced handbook →

Verify in this order: import succeeds → core starts → app uses the proxy → routing rule matches. Subscription updates and connection tests are separate: successfully loading a subscription means its URL is accessible, not that every server can connect. A page loading in your browser also doesn’t prove that other apps are using the proxy. Change one setting at a time and keep the previous value so you can tie results to a specific cause.

For your first setup, start with Quick Start; move on to the advanced handbook once you have a working connection. If a field is unfamiliar, use the glossary to distinguish protocols, transports, cores, and outbounds. Interface labels can change between client releases, so use the settings in your version. Don’t paste JSON snippets from different cores together.

PROJECT V / V2FLY / XRAY

Understand the difference between open-source cores and GUI clients

Downloading a client gives you software to install and manage. The core determines configuration capabilities, and server details must be imported before a connection can be established. Check each of these three steps separately.

Project V and the core ecosystem

Project V is an ecosystem of network proxy tools and related capabilities, with V2Ray as a key component. The V2Fly community continues development and maintenance of the V2Ray core, while Xray has evolved from related technical foundations along its own path, with its own core and features. They share some protocol concepts and configuration conventions, but they aren’t different interfaces for the same program. When comparing V2Ray cores, consider supported protocols, transport combinations, configuration fields, and client integration together.

The core reads configuration, accepts inbound connections, matches routes, and establishes outbounds. A GUI client converts subscriptions and settings into a configuration the core can use, and provides controls for starting and stopping it, viewing logs, and integrating with the system. Similar names don’t mean clients use identical cores; one client may also support multiple cores. Checking the core that actually started and its logs is more reliable than judging compatibility by the app’s name.

Protocol names describe how the two ends of a connection exchange data; transport describes the channel that carries it, and security parameters affect the handshake and authentication. When you import a share link, the client parses these fields but doesn’t fill in configuration missing from the server. If a connection fails, check the server address, port, time, and handshake parameters first, then consider whether the core supports the configuration. Don’t assume every error is caused by the software installation.

Choose from three open-source clients by device

v2rayN is designed for desktop use, with subscription management, routing settings, and support for multiple cores. The desktop edition uses a cross-platform interface; the classic WPF edition offers a different desktop interface and workflow. Choose based on your operating system, architecture, and interface needs. Don’t install both editions in the same directory just because they share a name. Back up subscription groups, routes, and custom settings before upgrading or migrating to avoid losing your setup.

v2rayNG is designed for Android and uses the Xray core for its primary connection capabilities, receiving app traffic through the system VPN interface. v2flyNG is an alternative client that uses the V2Fly core. Their interfaces and import workflows may look similar, but check core support separately. Before choosing a mobile client, confirm that the server configuration is compatible with its core, then check per-app proxy settings, background operation, and battery policies. A client’s name doesn’t guarantee a successful connection.

All three clients come from open-source projects. Open source means the source code and applicable licenses are available for review; it doesn’t mean every modified build comes from the same source. When reviewing licenses, distinguish the client from its integrated core: the V2Ray core uses the MIT License, while the Xray core uses the MPL-2.0 License. Each client also has its own licensing terms. Check the applicable terms separately before modifying or distributing software.

Manage software, subscription, and rule updates separately

Software updates change what the client or core can do; subscription updates refresh server details; rule resource updates affect domain and address matching. These are different kinds of updates. Reinstalling the client usually won’t fix an expired subscription URL. A routing rule that doesn’t match doesn’t necessarily indicate a server problem; the cause may be classification resources, rule order, or how the target domain is identified. First determine what needs updating, then use the appropriate update option.

Before enabling automatic subscription updates, verify the full process manually. Confirm that the URL is reachable, the content is recognized, and group filters are correct; then set an interval based on how often the source actually changes. Whether to update through a proxy depends on whether the current network can reach the subscription URL. Don’t make updates depend on a connection that isn’t working. Repeated refreshes won’t fix certificate errors; check the system clock and the specific error instead.

After changing a core or rule resources, keep a fixed set of test targets: one domain expected to connect directly, one expected to use the proxy, and a LAN resource you actually need. Check the logs to see whether each matches the expected rule. Confirm the results before changing DNS or enabling TUN to reduce interactions between variables. Before exporting configuration or sharing screenshots, remove server identifying details, subscription credentials, and other private information that isn’t relevant to troubleshooting.

Follow the connection path through the handbook and logs

The system proxy provides an entry point only to apps that choose to read that setting; it doesn’t force every program to use the same path. Routing rules determine the outbound after traffic reaches the core, so “global proxy” and “all apps are covered” aren’t the same thing. If a browser works but another program doesn’t, first check whether it uses the system proxy or needs a local proxy address entered separately. Consider TUN takeover only after that, rather than repeatedly changing rules at the wrong layer.

DNS issues also depend on where resolution happens. An app may use the system resolver to get an address, while the core may resolve domains when matching routes or establishing connections. An address in the logs doesn’t mean the original domain was preserved; enabling traffic sniffing doesn’t mean every connection’s domain can be recovered. For domain-based routing, check how the inbound, resolution path, and sniffing settings work together. Read FakeDNS configuration alongside the traffic takeover scope; changing just one resolver address isn’t enough.

When reading error logs, note the time, target, and error type, then identify whether the failure occurred during resolution, connection, handshake, or routing. A connection timeout and a certificate error need different remedies; a core that won’t start is a separate problem from a target you can’t reach. The complete setup is in Quick Start, while combined configurations are covered in the advanced handbook. To identify the layer where a problem occurs, follow the checks in FAQ categories, then return to the relevant settings page.

TECHNICAL NOTES

Client installation and troubleshooting notes

Break each problem into steps you can verify. Before reading, note the client type, operating environment, and conditions that trigger the issue; don’t apply instructions for another platform without checking first.

10 Common V2Ray Questions: Cores, Clients, Subscriptions, and Connection Failures

Answers to ten common beginner questions: how cores and clients differ, which client to choose, how to import subscriptions, global proxy versus rule-based routing, and what to check when a connection fails.

For users who have installed a client but aren’t sure how the system proxy differs from routing modes. First identify what provides the configuration and what handles the traffic, then verify import and connection in order. Connecting terms to the settings in your interface gives troubleshooting a clear starting point.

Read the beginner’s guide →

v2rayNG Draining Your Battery? Battery Optimization Exceptions and Background Operation

Explore common causes of high battery usage by v2rayNG on Android, including per-app proxy settings, log levels, and manufacturer background restrictions, with guidance on battery optimization exceptions and keeping the VPN active.

First distinguish power used by an active connection from repeated background restarts. Keep essential system permissions enabled, check whether apps that don’t need the proxy are included in traffic takeover, and use logs to identify unexpected reconnects. Don’t disable every system battery control just to keep the app running in the background.

Read the battery troubleshooting steps →

Installing v2rayN on macOS: Fixing “Developer Cannot Be Verified” and Network Permission Issues

Resolve the “developer cannot be verified” warning when opening v2rayN for the first time on macOS, and configure system proxy access, permissions required for TUN mode, and login items using the relevant system settings.

Handle the first-launch security warning separately from network permissions needed after the app is running. Confirm the installation source first, then review the specific options shown by the system. Grant the required permissions only when TUN traffic takeover is needed; lowering security for the entire system isn’t a general installation step.

Read the installation and permissions guide →

Browse all articles →

CLIENT DOWNLOADS

Choose a client by operating system

Check your operating system and processor architecture first, then choose an installer for the right platform. The client provides a local configuration and connection interface; server details or a subscription must be obtained separately. Installing the client doesn’t give you a working connection by itself.

Windows

v2rayN · Desktop / Classic WPF editions

The desktop edition uses a cross-platform interface; the classic WPF edition retains a familiar desktop workflow. Check system requirements before downloading and choose the edition that fits your needs. Don’t mix the two applications or their configuration files. Back up subscription groups and custom routes before migrating.

After the first launch, import a subscription, choose a server, then enable “Set system proxy automatically.” Once your browser connects, check apps that need a proxy configured separately. Enable TUN only if you need broader traffic takeover. LAN sharing also requires checking the listening address, firewall, and access scope.

Go to downloads

macOS

v2rayN · Apple Silicon / Intel

Open “About This Mac” to check the chip: choose arm64 for Apple silicon or x64 for Intel. Match the installer architecture to your device. If a warning appears the first time you open the app, confirm the source and follow the specific options in system settings; don’t copy permission steps from another operating system.

After installation, check the system proxy, network permissions, and login items separately. Closing the window may not quit the client; check the process or menu bar to see if it’s still running. Before quitting, restore the system proxy. If problems occur only in TUN mode, check permissions and whether other networking tools are conflicting.

Go to downloads

Android

v2rayNG · Xray / v2flyNG · V2Fly

Start with v2rayNG; choose v2flyNG if you need the V2Fly core. Most recent devices use arm64; if you’re unsure of the architecture, check the universal build details. Review system requirements before installing, and after importing a configuration, confirm that the selected client and core support its protocol.

On the first connection, the system will ask for VPN permission. This lets the client receive app traffic; it doesn’t mean the server has been verified. After connecting, check the per-app proxy scope and test the apps you need. If the connection drops when the screen locks, review battery optimization and manufacturer background policies. Keep essential permissions, and don’t run multiple tools that compete for the VPN interface.

Go to downloads

Linux

v2rayN · deb / rpm

Choose a deb or rpm package based on your distribution’s package manager, then select x64 or arm64. After installation, launch the GUI client from your desktop environment. Use a regular user account for subscription management and basic connection tests; don’t run the entire desktop app with elevated privileges just to avoid permission prompts.

Desktop environments differ in how they read system proxy settings. If web pages load but a particular app can’t connect, first check whether it uses system settings or has its own proxy option. Before enabling TUN, check virtual interface permissions, routing, and resolver settings. After disabling traffic takeover, make sure network settings have been restored so leftover configuration doesn’t affect your next test.

Go to downloads

Browse all clients →