Open-Source Client · Setup Guide

v2rayN Downloads
and Setup Guides

Choose v2rayN for desktop or v2rayNG for Android. Find downloads for multiple platforms, subscription import, and connection troubleshooting—from first launch to routing setup.

VMessVLESSTrojanShadowsocks

Client Downloads by Platform

Choose your operating system first, then check the processor architecture and installation format. Desktop and Android clients have different setup options. Subscription addresses can usually be reused, but app permissions and traffic routing must be configured separately.

The installer lets the client run, but does not include a ready-to-use remote connection configuration. Have a subscription address or share link you’re authorized to use. After importing it, select an active server and confirm that your app is using the local proxy.

Browse all clients →

v2rayN Core Settings

Think of the client in three layers: subscriptions provide connection parameters, the core handles connections and routing, and proxy modes determine how app traffic reaches the core. Identify the layer involved before changing its settings.

v2rayN · System Proxy

Route apps through the local proxy

System proxy mode sets the local proxy address in your operating system, making it suitable for browsers and other apps that honor system proxy settings. Select an active server, choose “Set system proxy automatically” from the system proxy menu at the bottom, then test it in a browser. System proxy and routing serve different purposes: the former determines whether traffic enters the client; the latter determines its outbound path. Some programs use their own proxy settings, so enter the listening address manually. Before closing the client, clear the system proxy to prevent apps from trying to reach a local port that is no longer listening.

System proxy: Set system proxy automatically
App proxy address: 127.0.0.1
App proxy port: Use the current local listening port setting
Routing: Bypass LAN

Menu labels may vary between desktop interfaces. If a label differs, identify its function—system proxy, routing, subscriptions, or core—before looking for the corresponding setting. Don’t replace your current settings with a configuration snippet from another client. Find troubleshooting steps by symptom →

Three Steps to Your First Connection

Get the basic connection working first, then add routing and traffic-capture settings. Installation complete, servers visible in the list, and browser access working are three separate checkpoints.

  1. Import Configuration

    Add a subscription or share link

    In v2rayN, add a subscription address under “Subscription Groups,” save it, then update the group. If you have a single share link, copy its full contents and use the clipboard import option in the server menu. In v2rayNG, add the address in subscription settings, then return to the main screen and update the subscription. These are separate workflows—don’t use them interchangeably. For QR codes, first determine whether the contents are a subscription or a single connection.

    After importing, check that the protocol, server address, and port are present. If you need to enter parameters manually, match the transport path, service name, server name, and other fields to the provided configuration—don’t guess based on a label. If the list is empty, check the update message. If servers appear but connections fail, move on to testing instead of repeatedly deleting the subscription.

  2. Select a Connection

    Test a server, then set it as active

    Choose a configuration from the server list, run a real connection test, then set it as the active server. Keep the default routing and DNS settings during testing to avoid confounding results. If a port test passes but the real connection fails, check authentication, transport, and security settings. If every configuration fails, first check your local network and whether the client core started correctly.

    On desktop, first test browser access with “Set system proxy automatically,” then consider Tun mode. On Android, tap Connect and approve the system VPN prompt; check whether another app is already using the VPN connection. Keep per-app proxy settings simple until the basic connection works, then choose which apps to include or exclude.

  3. Verify the Connection

    Check both the app and the client

    Send a request from the target app while checking the client logs. If one app fails but the browser works, check whether that app uses the system proxy. If all apps fail, check core startup, the listening port, and the active server. Redact addresses, subscription contents, and authentication details before sharing logs for troubleshooting.

    Finish with a reversible comparison: note the original settings, temporarily disable traffic capture, and test the same destination again before restoring your settings. Don’t assume every app is covered just because a toggle is on or one speed test passes. Once you’ve verified the connection, enable custom routing, Tun, or per-app proxy one at a time, keeping a clear way to roll back each change.

If you encounter a first-launch prompt, a local port conflict, or background disconnections, follow the relevant checkpoints in the guides instead of reinstalling from scratch. Keeping the original configuration and error message often makes the cause easier to find than changing several settings at once.

Read the Full Guide →

Project V and the Core Ecosystem

Understand the distinction between projects, cores, clients, and subscription providers to see what an update actually changes. Similar client names don’t mean their configuration files and features are interchangeable.

Technical Relationships

Project V
An ecosystem of modular proxy tools

V2Fly / V2Ray
Continuously evolving core implementations

Xray
A core developed from V2Ray

Graphical clients provide configuration controls on top of the core; subscriptions and share links supply connection parameters.

Project V: A Shared Foundation for Protocols and Tools

Project V is an ecosystem of network proxy tools, with V2Ray as one of its key implementations. It divides capabilities such as inbound connections, outbound connections, routing, and transport into configurable modules. This lets a single graphical interface support different protocols and route traffic to different destinations according to rules. A “protocol” describes how the endpoints communicate; a “transport” describes how data is carried. They are separate settings.

Most people don’t need to write a full configuration from scratch. A graphical client uses subscription parameters to generate the configuration required by the core, but it can’t automatically fill in missing information. The server address, authentication parameters, transport options, and security settings must still match. Understanding these layers helps you tell a subscription issue from an installation issue—and explains why reinstalling the client may not change the connection result.

V2Fly and Xray: Separate Implementations with Shared Roots

The V2Fly community continues to maintain V2Ray-related implementations. Xray developed from V2Ray and now follows its own feature set and release schedule. The two share technical roots, but may differ in supported protocol extensions, transport details, and configuration fields. When following a guide, check both the client name and the core actually in use. A snippet labeled “V2Ray configuration” won’t necessarily work with every implementation.

If a field isn’t supported or a transport option isn’t recognized, check the core startup log and compare it with the connection requirements. Switching cores is a compatibility choice, not a universal fix. Whether a node works depends on the client being able to represent its parameters, the core being able to process them, and the server supporting them. A mismatch at any step can cause the connection to fail.

Three Clients, with Different Interfaces and Cores

v2rayN is a desktop graphical client with tools for server management, subscription groups, proxy modes, and routing. v2rayNG is for Android and uses the Xray core; v2flyNG is also for Android and uses the V2Fly core. All three clients are open source. Choose based on your device and configuration requirements—there’s no need to install every client to use the same subscription.

System proxy settings on desktop work differently from Android’s VpnService traffic capture, so interpret “connected” indicators in the context of each platform. On Android, apps route traffic through the system VPN service; this doesn’t mean the remote configuration must use a traditional VPN protocol. On desktop, apps that honor the system proxy settings are covered, but not every background process will use them. Platform permissions determine which traffic is captured; the core and node parameters determine what happens next.

Open-Source Licenses: Know the Terms for Each Component

Open source means the source code is available under the applicable licenses; use, modification, and redistribution must still follow each project’s terms. Clients, cores, and bundled components may use different licenses. If you deploy or redistribute them, review each license separately rather than applying one project’s terms to everything. For everyday use, focus on the permissions the app requests, where it stores configuration files, and what connection details may appear in logs.

The client manages and applies configuration; the subscription provider supplies remote server parameters. These are different roles. Open-source software doesn’t remove the need to assess a subscription provider, nor does it guarantee that a remote service is available. When saving configurations, sharing screenshots, or reporting an issue, include only what’s needed to reproduce it. Protect subscription addresses, user identifiers, and authentication details, and never expose access credentials in public posts.

Updates and Troubleshooting: Keep a Working Baseline

Client, core, and subscription updates affect interface features, protocol implementations, and server parameters respectively. Updating a subscription doesn’t upgrade the client; upgrading the client doesn’t change the remote configuration in a subscription. Before updating, back up subscription groups, custom routing, and key settings, and note which core is in use. Afterward, repeat the same tests against the same destinations instead of judging by interface changes alone.

If something breaks after an update, check the release notes for compatibility changes, then see whether the logs point to core startup, configuration parsing, or network requests. Keep a verified, simple configuration as a baseline and restore custom settings one at a time to find what changed. For slow speeds, compare node load, connection quality, and local settings separately. Changing several parameters at once can make a temporary improvement look like a lasting fix.

Not sure what “subscription,” “node,” “routing,” or “DNS” means? Start with the glossary. If you already have a specific error, go straight to the troubleshooting guide. The glossary explains the settings; the guide helps narrow down problems by symptom. You don’t need to use both paths at once.

Recent Technical Notes

Practical guides to importing subscriptions, what to check on first launch, and why Android connections may drop in the background. Each article focuses on a related set of issues, so you can check each step against your current interface.