v2rayN · v2rayNG · v2flyNG

V2Ray Client Downloads & Setup

From subscription import to split tunneling, understand settings through the interface and JSON fields, with separate installation guides for desktop and Android.

  • Protocols / Cores
  • VLESS
  • VMess
  • Xray · V2Fly

Common Features & Where to Configure Them

The client stores settings; the core handles connections. Identify which layer a setting belongs to before changing it.

Organize connection profiles into subscription groups

Subscription URLs are stored in client-side groups, not in a generic core JSON field. In v2rayN, enter the URL in Subscription Group Settings, name the group, then update the subscription. Afterward, check that the server list is populated. Set the automatic update interval according to the provider's instructions. If an update fails, distinguish an invalid URL from a network timeout or an unsupported format. Compared with importing links one by one, groups make it easier to keep profiles in sync, but they do not provide routing rules. The diagram on the right shows a core outbound structure; do not enter a subscription URL in this configuration.

Configuration section →
Subscription Group Settings → Update interval (minutes)
{
  "outbounds": [
    {
      "tag": "direct",
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

Clients by Platform

For desktop, start with v2rayN; for Android, consider v2rayNG. Check your operating system, processor architecture, and package format before choosing a download.

Windows

v2rayN comes in a desktop edition and a classic WPF edition. The desktop edition uses a cross-platform interface, while the WPF edition retains a familiar desktop workflow. Their layouts may differ, so look for the equivalent menu item if a guide uses a different label. For your first installation, use just one edition to avoid local port conflicts from running both at once.

Check your processor architecture in system settings before downloading, then open the main window after installation and import your subscription. If the app closes immediately, check its desktop runtime requirements, directory write permissions, and security software logs; do not assume a startup failure means the node is down. Back up subscription groups and custom routing before upgrading. Updating the installer does not back up your personal settings.

Go to downloads →

macOS

v2rayN offers separate downloads for Apple Silicon and Intel. Check your chip under About This Mac before choosing; the device's appearance is not a reliable guide to its architecture. After installation, keep the app in a fixed location. If a system prompt appears on first launch, read it and confirm the download source before following the options provided by the system.

For the initial setup, verify subscription import and the local proxy before configuring launch at login or TUN. The system proxy affects apps that follow system settings, while a browser extension's own proxy settings may override it. If you need a virtual network interface, grant the permissions requested by the client. During troubleshooting, use only one traffic-capture method at a time to pinpoint the layer causing the issue.

Go to downloads →

Android

v2rayNG uses the Xray core and is a good starting point for Android; v2flyNG uses the V2Fly core and may suit configurations that require it. Most modern phones use arm64. If you are unsure of your architecture, check the system information and installation instructions before considering a universal package. Check each client's settings separately; a successful import does not mean all options are identical.

After importing a subscription, select a server. Your first connection requires system VPN permission. Background connections may also depend on battery settings and background app permissions. If the connection drops when you switch apps, check battery restrictions first, then review the client log. Connection profiles contain authentication details; when asking for help, share only redacted error information, never the full subscription URL or share link.

Go to downloads →

Linux

v2rayN provides deb and rpm packages for different processor architectures. Check your distribution's package format first, then choose x64 or arm64. Running the graphical interface, configuring the desktop system proxy, and granting TUN permissions are separate concerns. Opening the app confirms only that the interface has started; also verify that the core process and local listener are working.

Desktop environments may handle the system proxy differently, and some applications still need a proxy address set within the app. Start by testing with the loopback address and local port, then adjust routing and DNS. Before enabling TUN, check permissions and look for conflicts with other virtual network software. For router or travel-router deployments, read the core deployment guide; a desktop installer is not router firmware.

Go to downloads →

Browse all clients →

Project V: Ecosystem & Core Roles

Client names, core names, and connection protocols describe different layers. Understanding how they relate makes configurations easier to maintain than copying an entire setup.

Project V is a useful starting point for understanding the V2Ray ecosystem. The original V2Ray combined protocol handling, transport, routing, and other capabilities in a configurable networking tool. The community later developed multiple projects with different maintenance goals. V2Fly continues community development of V2Ray, while Xray has built its own features and implementation on related technology. They share a history, but they are not interchangeable names for the same program, and not every configuration is guaranteed to be compatible.

A graphical client sits above the core. Users save subscriptions, select servers, and edit rules in the interface; the client then generates or organizes the runtime configuration for the relevant core. That's why clicking “Update subscription” does not create a corresponding field in the core's JSON, and “Set system proxy” is not a remote server protocol option. When consulting documentation, first determine whether it covers an interface setting, a core field, or a server-side parameter. This can save a lot of trial and error.

The client and the core are separate layers

v2rayN is designed for desktop use, bringing server profiles, subscription groups, system proxy, and routing settings together, with options for multiple cores. v2rayNG is for Android and primarily uses the Xray core; v2flyNG offers an Android client based on V2Fly. All three are open-source clients, but similar project names do not mean their menus, configuration storage, or feature sets are identical.

When choosing a client, start with your device platform, then check the server requirements. If your connection profile relies on Xray-specific features, verify that the client's core supports them. If you have a V2Fly configuration, check field compatibility before migrating. Simply copying one client's configuration file into another client's directory does not guarantee that all settings will work.

Learn how clients and cores relate →

Protocols, Transports & Security

VLESS, VMess, and Trojan describe connection protocols; WebSocket and gRPC describe transport methods; TLS and REALITY are part of the connection's security configuration. They are not interchangeable options in a single list. Check the protocol, server address, port, authentication parameters, transport, and security layer in each connection profile. A mismatch in any one of them can cause the handshake to fail.

VLESS does not encrypt data by itself; deployments need an appropriate security layer. Import links often fill in some parameters automatically, but check that the server name, transport path, and related options are complete. If a connection fails, compare each setting with the server requirements first. Changing several options at once makes it hard to tell which change affected the result.

Understand protocol and configuration boundaries →

Open-source licenses & usage

Open source means a project's source code is available under the terms of its license. Use, modification, and distribution must follow the applicable terms. Clients, cores, and their dependencies may use different licenses, so the ecosystem does not share a single license. For everyday use, project documentation explains where features come from. If you repackage or redistribute software, check requirements for retaining license texts and copyright notices.

Clients and remote services should also be considered separately. Installing software does not provide a server, account, or subscription; the service behind a subscription URL determines its contents. Whether a client is open source and how a remote service records data are separate questions. For business use, assess the server's source, access permissions, and intended use—not just the client name.

About this site and its content →

Updates & Configuration Maintenance

Client updates, core updates, subscription updates, and rule data updates solve different problems. Client updates affect the interface and configuration generation; core updates affect protocol implementations; subscription updates sync connection profiles; rule data updates may change domain or address classifications. When a connection fails, identify which layer changed most recently. Repeating all four update operations is not a substitute for troubleshooting.

Keep a recoverable record when maintaining configurations. Back up custom rules and essential parameters before making changes; afterward, check startup logs, the local listener, and actual app traffic. Automatic updates can reduce repetitive work, but you still need to verify the results. For long-lived custom JSON, check that fields remain supported after core changes, and remove outbound tags that are no longer referenced.

View JSON configuration references →

From successful import to a working connection

For your first setup, follow the same verification sequence: import a subscription and confirm that servers appear in the list; select one, connect, and check the error log; configure an app to use the local proxy and verify real traffic; then add split routing and TUN. A successful import only means the profile could be parsed—it does not prove the server is reachable. Likewise, a successful core startup does not mean your browser is using the proxy. Verify each result separately.

When reading logs, focus on where the error occurs. For a DNS resolution failure, check DNS; for a connection timeout, check the destination address and port; for a handshake failure, compare the protocol and security layer; for a local port conflict, deal with duplicate processes. Logs may contain addresses and authentication details, so redact them before sharing. Troubleshooting one layer at a time is more reproducible than repeatedly changing servers, reinstalling the client, or modifying every setting.

Commonly Confused Configuration Concepts

Subscriptions vs. share links: A subscription URL usually retrieves a set of connection profiles; a share link usually describes a single connection. Use the matching import option, rather than judging by whether a link contains a long string. A URL may contain access credentials, so protect it like account information. See the subscription glossary entry for details.

System proxy vs. split routing: The system proxy determines where compatible apps send traffic; routing rules determine which outbound the core uses after receiving it. Even with a direct-connection rule, an app may still send its request to the local listener first. And enabling the system proxy does not mean every app will follow it. See routing and outbound tags for details.

Traffic sniffing vs. DNS: Sniffing can identify domain information from some connections to help match routing rules, but it cannot identify a domain in every case or replace a complete DNS setup. If a domain rule does not match, check inbound settings, resolution behavior, and rule order instead of repeatedly toggling sniffing. See the inbound configuration guide for related fields.

TUN vs. connection quality: TUN changes how application traffic enters the client; it will not fix server timeouts or incorrect protocol settings. If a regular proxy cannot connect, fix the underlying connection before enabling a virtual interface. In complex network setups, also check whether other VPN software or virtual interfaces are affecting routes. See the TUN mode glossary entry for details.

Installation, Subscriptions & Deployment Guides

Start with a specific entry point or error. The following articles are ordered from newest to oldest and cover platform deployment, subscription import, and the core ecosystem.

Browse all articles →