Routing rules at a glance
  • geosite:cn → direct
  • geoip:private → direct
  • geosite:category-ads-all → block
  • final → proxy
How to write routing rules →
GUI Client Setup Guides

V2Ray Source v2rayN Client Downloads

From importing subscriptions to routing traffic, choose a client for your device and configure system proxy and DNS settings step by step.

Protocols VMess VLESS Trojan Shadowsocks
Downloads

Choose a V2Ray client for your platform

Start with v2rayN on desktop or v2rayNG on Android. Check your operating system and processor architecture, then choose the matching package from the download center. Installing a client and configuring a connection are separate steps; you’ll still need to import your subscription or server details.

Windows

v2rayN

The desktop edition uses a cross-platform interface, while the classic WPF edition retains a familiar desktop workflow. For a new installation, start with the desktop edition guide. If you’re keeping an existing setup, back up your subscriptions and rules before switching editions. Runtime requirements and installation steps are listed on the download page; don’t install different editions over the same directory.

Go to downloads →

macOS

v2rayN

Check your chip under “About This Mac,” then choose the Apple Silicon or Intel download. When you first open the app, follow macOS prompts to allow it to run and grant network access. Opening the main window doesn’t mean the proxy is handling traffic—you’ll also need to import a subscription, select a server, and configure the system proxy.

Go to downloads →

Android

v2rayNG / v2flyNG

Start with v2rayNG, which uses the Xray core; consider v2flyNG if you need the V2Fly core. Choose an arm64 or universal package for your device, and approve the system VPN prompt the first time you connect. If the connection drops in the background, check battery optimization and background activity permissions rather than repeatedly importing the subscription.

Go to downloads →

Linux

v2rayN

Choose a deb or rpm package based on your distribution, and make sure to select x64 or arm64 as appropriate. After installation, start with a standard system proxy connection, then configure TUN if needed. Your desktop environment, permissions, and app-level proxy support affect which traffic is routed; the package format doesn’t configure these network settings for you.

Go to downloads →

Not sure which client to choose? Narrow it down by device first, then compare cores and configuration workflows. Desktop and Android clients aren’t interchangeable packages.

Configuration

Subscriptions, routing, and traffic handling

GUI clients bring server details, core settings, and system network options together, but these settings do different things. Explore each topic below to understand its scope: start with where your configuration comes from, decide which connections enter the core, then check which outbound they use.

Importing subscriptions: Keep configuration sources separate from server lists

A subscription is a way to fetch server configurations, not proof that a connection is working. In v2rayN, add the URL under “Subscription group settings,” save it, and update the list. Then select a server to use as the active configuration. On Android, start by creating a subscription group as well. Groups make it easier to refresh and organize sources than entering servers one by one, but an update may replace entries in the list. Subscription URLs can contain credentials, so hide the full URL in screenshots. If the list is empty, check the update result and URL before changing routing or DNS.

Subscription group settings · Update subscription · Set active server

Settings may be named differently as client interfaces change. Once you understand how inbounds, rules, and outbounds relate, follow the current interface. For custom rules or DNS routing, explore the advanced configuration guides.

Explore advanced configuration →
Quick start

Three setup steps after installation

For your first connection, get one basic setup working before turning on every option. Follow the steps below in order: configuration source, traffic entry point, then connection checks. Change one type of setting at a time so you know where to look if something goes wrong.

  1. Import a subscription and choose an active server

    Have your subscription URL or server share link ready. On desktop, save the URL in a subscription group and update it. On Android, do the same under subscription group settings. Once the configuration appears in the list, select one server as the current connection. If you import a share link manually, check that the protocol, address, port, and transport parameters are all present—not just that a name appears.

    Updating a subscription fetches configuration; the connect button starts the selected configuration. Treat them as separate steps. If an update fails, check whether the URL has expired, contains extra spaces, or can be reached from your current network. Save the exact error message—it’s more useful than repeatedly importing the link. Don’t post a subscription URL with access credentials publicly.

  2. Choose a routing mode and enable a traffic entry point

    On desktop, first make sure the core starts, then enable automatic system proxy configuration if needed. On Android, approve the VPN prompt when starting a connection. Next, choose a routing mode for your needs: Global mode generally sends connections entering the core through the proxy outbound; Bypass mainland China keeps some traffic direct according to the rules. The exact behavior depends on the active rule set.

    “Global” doesn’t mean every app on your device automatically uses the client. Apps that ignore the system proxy may need a separately configured proxy entry point, or TUN after you understand its permission and routing implications. For your first test, avoid running other proxy tools at the same time, as they may keep changing the system proxy settings. If devices on your local network can’t connect, check the direct rules for private IP addresses first.

  3. Test traffic paths and keep a working configuration

    After connecting, test destinations expected to go direct and through the proxy, and check how your browser and commonly used apps behave. A connection icon or successful port test confirms only part of the setup; it doesn’t replace testing real destinations. If just one app fails, check whether it uses the system proxy. If nothing connects, check the active server, error logs, and DNS resolution path.

    When troubleshooting, change one setting at a time and record the results. For certificate errors, check the device clock and server name; don’t simply disable verification. For port conflicts, check whether another client is running. Once the basic connection is stable, back up the configuration, then add routing, DNS, or TUN settings gradually. That gives you a clear point to return to if something breaks.

Read the complete guide →

The guides explain differences between desktop and Android setup. If you’re new to the terminology, visit the concepts at a glance section to distinguish subscriptions, servers, inbounds, and outbounds before continuing.

Open-source ecosystem

Project V, cores, and GUI clients

V2Ray-related names often appear together in download and setup guides. Understanding the project background, the core that handles connections, and the client that provides the interface helps explain why settings still need to be checked on each device—even when using the same subscription.

Project V: Ecosystem and project history

Project V is the open-source ecosystem behind a range of network communication tools, with V2Ray as one of its best-known core projects. The V2Fly community has continued V2Ray’s development and maintenance, while Xray is another core branch built on related code and technology. They share some history and configuration concepts, but their development has taken different directions. Similar names don’t guarantee that every configuration field is compatible.

In practice, users usually manage subscriptions, servers, and routing through a GUI client rather than editing the entire core configuration directly. “Download V2Ray” can therefore mean a GUI client or the core itself. This site focuses on v2rayN, v2rayNG, and v2flyNG. For a first setup, choose a client for your device, then check which core your server parameters require.

Core families: Similar configurations, but check feature support

The core reads configuration, establishes connections, applies routing, and handles related DNS resolution. The client interface turns your selections into a usable configuration. Xray and V2Fly both operate at this execution layer, but supported protocol extensions, transport parameters, and settings differ. Importing a share link doesn’t mean the current core supports every feature it requires; startup logs are still an important way to diagnose issues.

v2rayNG is based on the Xray core, while v2flyNG uses the V2Fly core. Desktop v2rayN provides core configuration and management options. Choose based on your server’s protocol, transport, and security parameters rather than treating one core as the right answer for every setup. Keep a working configuration before switching cores, then check startup and test access before adjusting routing or DNS.

Open-source licenses: Understand the terms for using and modifying code

v2rayN, v2rayNG, and v2flyNG are open-source GUI clients. Open source means the code can be reviewed, studied, and modified under the terms of its license; it doesn’t mean code from different projects can be copied without restrictions. Clients, cores, and their dependencies may use different licenses. Before redistributing, modifying, or integrating software, read the licenses and copyright notices included with each project rather than relying on the general label “open source.”

For everyday users, an important benefit of an open-source ecosystem is that configuration behavior can be discussed, problems can be reproduced with logs and specific steps, and documentation can improve around real settings. Clients don’t include ready-to-use server resources, so you’ll still need an existing subscription or server configuration. Open-source licensing, the source of connection services, and permission to use a network are separate matters. Check each one and use the software responsibly on networks you’re authorized to access.

Compare three clients by platform and core →
Understand the client and execution layers separately
GUI client
Subscription management, configuration editing, system integration
Core
Protocol handling, routing, connection establishment
License
Terms for reading, modifying, and redistributing code

Similar names don’t mean the same project; similar interfaces don’t guarantee compatible settings.

Updates: Manage clients, cores, and rules separately

Client updates mainly affect the interface, configuration management, and system integration. Core updates may change protocol support and parameter handling; rule data updates affect domain and IP classification. Subscription updates are a separate process that fetches server configurations. Distinguish these update types when troubleshooting so you know which layer changed. A refreshed subscription list doesn’t mean local rule data or core settings have also been updated.

Before updating, back up subscription groups, custom routing, and DNS settings, and note your current traffic handling method. After updating, verify your existing setup before trying new settings. If an old rule no longer matches, check the rule data, match order, and outbound tags—not just whether the client interface changed. The download page lists installation options and version information; the homepage provides a way to find downloads by platform. For startup failures, connection timeouts, or rule-loading errors, follow the blog’s troubleshooting guides to investigate further.

Explore advanced subscription, routing, and DNS settings →
Blog and troubleshooting

From runtime logs to choosing a client

The basic guides help you get connected for the first time; topic-specific articles address particular problems. When something goes wrong, note your operating system, client name, traffic handling method, and a relevant log entry before choosing an article. Hide server addresses, subscription details, and access credentials before sharing logs.

Troubleshooting

How to read V2Ray logs: Common errors and how to diagnose them

Learn about log levels and log line structure, then work through common errors such as connection timeouts, certificate verification failures, port conflicts, and missing rule files. Use the stage where an error occurs to determine whether it’s a local startup, DNS resolution, or remote connection issue, then check the relevant settings instead of changing unrelated options.

Read article →
Troubleshooting

v2rayN crashes on launch: Troubleshoot .NET runtimes, folder permissions, and configuration files

Review common causes of startup failures, from missing runtimes and protected extraction folders to corrupted configuration files and revoked Android permissions. First distinguish between the main window failing to open and the core failing to start. Then check the installation environment or connection settings as appropriate, handling one issue at a time after preserving your original configuration.

Read article →
Browse all articles →

For a quick answer to a specific setting question, visit the FAQ. To work through subscription groups, routing rules, and DNS strategies step by step, continue to the advanced configuration guides.