Client Downloads & Setup

v2rayNG Official SiteClient Downloads

Use v2rayN on desktop and v2rayNG on Android. Follow the setup steps from importing a subscription to split routing.

Free forever Open source Documentation
Clients & Cores
Xray · V2Fly
  • v2rayN Desktop
  • v2rayNG Xray
  • v2flyNG V2Fly

The GUI manages settings; the core handles connections and applies rules. Protocol support depends on the core in use.

Open-Source Licenses
GPL-3.0

All three clients are open-source projects; their cores and dependencies may have separate licenses.

Protocols & Secure Transport
VMessVLESSTrojanREALITY

Import the settings provided by the server. Don't change a protocol based on its name alone.

Configuration Features

Subscription, Proxy & Routing Settings

Think of setup as three separate steps: a subscription provides connection settings, proxy mode determines which apps send traffic to the client, and routing decides where that traffic goes. When a connection fails, check these in order instead of changing several settings at once. The panels below illustrate settings; they do not show an active connection.

Subscription Groups & Node Updates

A subscription URL retrieves a set of connection configurations; it is not the same as a link for sharing a single node. In v2rayN, open Subscription Group Settings, enter a name and URL, save, then choose Update Subscription. In v2rayNG, manage subscription groups from the side menu. The client usually saves the URL without fetching all nodes immediately. After importing, check the update result, then select a node and test the connection. Groups make it easier to organize sources and refresh configurations than adding nodes one by one. An update does not verify whether your server account or plan is still valid.

  • Subscription URLs and single-node links use different import options.
  • Save the group, update it, then select a node.
  • URLs may contain access credentials. Keep them out of public screenshots and logs.
v2rayN / Subscription Group Settings
AliasCustom group name
Optional URLPaste subscription URL
After savingUpdate subscription
If the list is emptyCheck the update log
Choose by Device

Downloads for Four Platforms

Check your operating system first, then your processor architecture. Use v2rayN on desktop; for Android, start with v2rayNG and consider v2flyNG if you need the V2Fly core. Package format and node protocol are separate concerns: the former determines whether the app can run on your device, while the latter determines whether the client can use the server's connection settings.

Windows

Recommended: v2rayN

Choose between the Desktop and classic WPF releases. Desktop uses a newer cross-platform interface, while WPF retains the classic desktop experience. Pick the one that fits your system requirements and preferences; there is no need to install both. If you see a missing dependency warning on first launch, follow the release instructions for the required runtime rather than treating a missing runtime as a node issue.

After extracting or installing the app, make sure its main window opens before importing a subscription. Enable the system proxy and test access in a browser. To proxy a specific app individually, enter the local listening address and port shown by the client in that app's settings.

macOS

v2rayN

Choose the Apple Silicon or Intel download based on your chip; check About This Mac to confirm. Both the processor architecture and macOS version must meet the release requirements. If macOS shows a security warning on first launch, confirm the file's source and follow the system's security settings. Avoid lowering your overall security settings just to run the client.

System proxy and TUN use different permission mechanisms. Start with basic proxy settings to establish a connection. After switching networks or waking from sleep, if only some apps stop working, check the proxy endpoint and DNS first before restarting the service.

Android

Recommended: v2rayNG

v2rayNG uses the Xray core; v2flyNG is an alternative with the V2Fly core. Recent mainstream devices typically use arm64. If you are unsure of your device architecture, check the universal package notes. A universal package is intended to support different architectures, not to provide faster connections than a device-specific build. Each app stores its own settings, so recheck subscriptions and routing when switching clients.

On first connection, approve the system VPN request. If the connection often drops in the background, check battery optimization and background activity restrictions. If another VPN app is running, disconnect it before starting this client to avoid conflicts over system traffic routing.

Linux

v2rayN

Choose deb or rpm based on your distribution's package system, then select x64 or arm64. A package extension does not guarantee that every distribution can install it directly; check system dependencies and desktop environment requirements. A GUI client can manage subscriptions, nodes, and routing, so you do not need to write a complete core configuration by hand to get started.

Desktop environments may handle system proxy settings differently, and terminal apps may not use the desktop proxy. If a browser works but a terminal app does not, check the app's own proxy settings first. Configure TUN and the required permissions only if you need to route its traffic at the system level.

Browse all clients →The download page covers installers, architecture choices, and system requirements.

Import settings → Confirm connection method → Verify routing

First-Time Setup

Get a Basic Connection in Three Steps

A client uses existing connection settings; it does not provide a remote service you can use by itself. Before you begin, get a valid subscription URL or node-sharing link. Use settings from a trusted source. A server address alone is not enough: without authentication and transport settings, the client cannot fill in the missing details automatically.

  1. 01 / Import

    Save the subscription and refresh the list

    In v2rayN, save the URL under Subscription Group Settings, then choose Update from the subscription menu. In v2rayNG, open Subscription Group Settings from the side menu, then return to the list and update the subscription. Import a single share link using the clipboard or QR code option, not the subscription URL field. After importing, check that the protocol and transport settings are complete, then select a node to connect.

    If the list is still empty, check the update log to see whether the URL is unreachable, the response format is unrecognized, or the subscription has expired. Creating the same group again usually will not fix these problems. Label groups clearly so you can identify their sources, but never post subscription URLs in public support requests.

  2. 02 / Connect

    Choose a proxy method and start the service

    On desktop, start with automatic system proxy settings so browsers that follow system settings use the client. On Android, tap Connect and approve the VPN request when prompted. Keep the default routing for now and avoid running multiple traffic-routing tools at once. If the client reports a startup error, check for a local port conflict, permission issue, or invalid setting before troubleshooting the remote connection.

    Global routing and system proxy are not the same setting. Global routing determines how traffic that reaches the client goes out; system proxy determines whether an app sends requests to the client. Changing routing alone will not make apps that ignore system proxy settings connect. Once you understand the difference, decide whether TUN is needed.

  3. 03 / Verify

    Test access and restore settings when done

    Open the target site and check whether it loads, then review the client logs for connection errors. A latency test is only a rough indicator; it does not guarantee that a website, video, or specific app will work. If the browser works but one app fails, check whether that app uses a proxy. If nothing works, check the node settings, system clock, subscription status, and DNS.

    After verifying the basic connection, add routing rules one at a time, testing access to the target and local network after each change. When you're done, check that the system proxy is cleared on desktop or that the VPN connection is stopped on Android. Keep a record of the settings that worked to make future troubleshooting easier when switching nodes.

Read the full guide →Menu options may vary by release; follow the interface you have.

Open-Source Projects & Scope

Project V, V2Fly & Xray

Clients, cores, protocols, and subscriptions operate at different layers. Downloading a client gives you a local interface; the core handles connections, protocols define how devices communicate, and subscriptions distribute configuration. Understanding these roles helps you decide whether to update the app, change a rule, or ask the configuration provider to confirm a setting.

From Project V to the Core Families

Project V is an open-source ecosystem of proxy communication tools, with V2Ray among its widely used core projects. V2Fly continues community development of V2Ray; Xray grew from related code into a separate project, expanding its own protocol and transport capabilities. The projects share some history, but their current features, configuration details, and release schedules differ. Do not assume that every guide for one applies directly to the other.

For everyday use, the key is not the core's name alone but whether it supports the node's requirements. A node's settings typically combine a protocol, transport, security layer, and authentication parameters. VMess and VLESS are protocol names; REALITY is a secure transport approach. These terms describe different layers and are not interchangeable options. A mismatch in any required field can prevent a connection.

Four Layers of a Configuration
GUI clientImport, select, configure
CoreConnect, parse, route
Protocol & transportCommunication method and security settings
SubscriptionRefreshable node settings

What Each Client Does

v2rayN is a desktop client for managing servers, subscriptions, system proxy settings, and routing through a GUI, with support for configuring multiple cores. Menus may differ between platforms and releases; if your interface does not match a guide, first check which desktop release you are using. Available cores also depend on what is included in your installation, so do not assume every platform has the same options based on a screenshot.

v2rayNG is for Android and uses the Xray core to route traffic through the system VPN interface. v2flyNG uses the V2Fly core and may suit configurations that require its capabilities. The names are similar, but these are separate apps, not different skins of the same app, and they do not share all settings. When migrating a subscription, check protocol compatibility, routing mode, app-specific routing, and system permissions. Matching node names alone does not mean the migration is complete.

Open-Source Licenses and Service Providers Are Separate

All three clients are open source under the GPL-3.0 license; their cores and other dependencies follow their own project licenses. Open source means the code and license terms are available for review, with conditions for using, modifying, and distributing the software. It does not mean the client projects provide remote subscription services, nor does it establish whether a subscription source is trustworthy. Whether a client is free to download and whether a remote service charges a fee are separate questions.

Subscription URLs may contain credentials for retrieving your personal settings, and node configurations may include authentication details. Treat them as sensitive information and store backups only in trusted locations. Before sharing logs or screenshots, check for exposed subscription URLs, server credentials, and QR codes. For support, share the error type, steps taken, and a redacted configuration structure rather than the full original configuration.

Client, Subscription & Routing Data Updates

Updating a subscription usually refreshes node settings from the provider; it does not upgrade the client. Updating the client may change its interface, core, or configuration generation, but it will not necessarily restore a remote node. GeoIP data, routing rules, and DNS settings are separate items to maintain. When something breaks, identify which layer changed before taking action. Repeated updates will not help if they do not address the actual cause.

Before upgrading, back up your subscription source, custom routing rules, and essential settings. After the upgrade, test the basic connection that worked before, then check app routing, local network access, and TUN behavior one at a time. If a new setting is unrecognized, check client and core compatibility. Do not delete security-related fields just to dismiss a warning, or overwrite a different core's configuration with an older one without checking it.

From a Basic Connection to Reading Configurations

Once importing and connecting work reliably, read the generated configuration in this order: inbound, outbound, then routing. Inbound describes how the client receives local requests; outbound describes how it connects to a destination or upstream; routing links them through tags. The direct-connection rule shown in the homepage panel only works when the corresponding outbound and classification data exist. Copying the snippet alone does not create a complete configuration.

To learn more, use the glossary to distinguish protocols, transport, cores, and routing, then check supported platforms in the client comparison. For a systematic guide to setup and maintenance, read the user guide. For a specific connection issue, work through the Help Center by symptom. Keeping one known-good configuration is more useful than repeatedly switching unrelated settings.

Configuration & Setup Articles

Protocol & Platform Guides

These three articles cover protocol differences, desktop setup, and choosing nodes. Start with the basic connection steps, then read the guide that fits your question. Region or protocol labels in node names are clues only; judge actual behavior using the full settings and connection results.

Browse all articles →