v2rayN · v2rayNG · v2flyNG Guides

V2Ray Docs CenterClient & Config Guide

Get started with GUI clients, understand inbounds, outbounds and routing through real JSON configurations, and follow step-by-step guides.

Import subscriptionsRoute trafficConfigure DNS

CONFIGURATION / Configuration sections

From GUI options to JSON keys

First identify where requests enter, what conditions they match, and which outbound handles them. Then adjust settings with a clear understanding of each layer.

v2rayN / v2rayNG / v2flyNG

The local port is the app’s entry point

An inbound accepts requests from apps; it is not the address of a remote server. Desktop apps can connect to the core through a local SOCKS listener, or use the system proxy when supported. This example listens only on the loopback address, making it suitable for local use. The port must match the client and app settings. Enabling UDP allows the listener to handle relevant requests, but successful forwarding also depends on the app, outbound and server. GUI clients generate most inbound fields, unlike a fully hand-maintained config. Before editing manually, check whether the client will regenerate the config.

{
  "inbounds": [
    {
      "tag": "local-socks",
      "listen": "127.0.0.1",
      "port": 10808,
      "protocol": "socks",
      "settings": {
        "auth": "noauth",
        "udp": true
      }
    }
  ]
}
Read the inbounds guide →

CLIENTS / Choose a platform

V2Ray client downloads

Choose v2rayN for desktop systems. On Android, start with v2rayNG, then consider v2flyNG if its core better fits your compatibility needs. Check your operating system and processor architecture before choosing an installer on the downloads page.

Windows

v2rayN offers a desktop edition and a classic WPF edition. The desktop edition uses a cross-platform interface, while the WPF edition suits users who prefer the classic layout. The interface frameworks differ, but actual features depend on the release notes and selected core—not on the interface alone.

If you already have a configuration, preserve your subscription groups, routing and DNS settings before switching program directories. For a first setup, choose one interface and use it to import and connect. Running two client instances at once can cause port conflicts or repeated changes to the system proxy.

Go to downloads

macOS

v2rayN provides separate downloads for Apple Silicon and Intel. Check your chip in About This Mac, then choose the matching installer. The cross-platform interface follows similar configuration concepts, but permissions, menu locations and system proxy controls may differ from those on other desktop systems.

After launch, make sure the app can access its configuration directory before importing a subscription. If the system proxy is enabled but an app still does not use it, check that app’s network settings. Tools that ignore the system proxy may need the local address and port entered separately, as described in their documentation.

Go to downloads

Android

v2rayNG uses the Xray core and suits setups that need its protocol and transport support; v2flyNG is an alternative based on the V2Fly core. For most newer devices, check the arm64 download first; if you are unsure of the architecture, look into the universal package. Confirm compatibility on the download page and against your device specifications.

The first time you connect, the system asks for permission to create a VPN interface. This is how the client receives device traffic; it does not mean the remote server is reachable. Background restrictions, per-app routing and other apps using the same system interface can all affect connectivity.

Go to downloads

Linux

v2rayN offers deb and rpm packages for x64 and arm64. Debian and Ubuntu users generally choose deb; Fedora users generally choose rpm. The package format must suit your system’s package manager, and the processor architecture must match your device.

Desktop environments do not all handle the system proxy in the same way. If a browser works but terminal tools do not, check how each app connects before changing the remote node. Verify startup settings, write access to the configuration directory and local port availability separately.

Go to downloads

Browse all clients →

FIRST CONNECTION / Quick start

Import, choose a mode, test the connection

Read the full tutorial →

Before you begin, get a working subscription URL or the details for an individual node. The client stores configuration and starts the core; the installer itself does not provide remote connection details. These steps focus on the GUI: establish a minimal working setup first, then add routing rules and custom settings.

  1. Import a subscription and check its details

    In v2rayN, add the URL to a subscription group, give it a recognizable name and update the group. On Android, save a subscription group before updating the node list. A single share link can be imported from the clipboard, but it is not the same as a subscription URL. Using the wrong import option can cause parsing errors.

    Once entries appear, check that the protocol, server address, port, transport and security settings are intact. A node name is only a display label, not a substitute for checking its parameters. Subscription updates may overwrite manual edits. For changes you need to keep, use a separate configuration or the client’s override feature, and note where the changes came from.

    Subscription URLs may contain credentials, so never include the full URL in a troubleshooting screenshot. If the list is empty, first check whether the URL is unreachable, the response format is unsupported or parsing failed. Then decide whether to import the subscription again.

  2. Choose a node and distinguish proxy settings from routing

    Set the active node, then choose the system proxy option and routing mode. The system proxy determines which apps that follow system settings send requests to the client. The routing mode determines whether requests entering the core use a direct or proxy outbound. Both use the word “proxy,” but they operate at different layers.

    For an initial test, use a setup with few rules and a clear traffic path. If you need LAN access, check that private-address rules take priority. “Bypass mainland China” modes typically rely on domain and IP rule data; the mode name alone does not guarantee that every app will route traffic as expected. After switching modes, establish a new connection and check what actually happens.

    On Android, also check the scope of per-app proxying: “proxy only selected apps” and “bypass selected apps” mean opposite things. During troubleshooting, change one setting at a time and keep the last verified working node. This helps distinguish an entry-point issue from a node issue.

  3. Reconnect and test each layer

    After starting the connection, check that the client does not immediately report a configuration error, then send a fresh request from the target app. A node test result reflects only that specific test method; it does not guarantee that web pages, file transfers or real-time communication will work. Judge the result using the app and destination you actually need.

    If the connection fails, check the local entry point, DNS resolution, remote connection and protocol handshake—in that order. If an app never reaches the local entry point, changing remote settings repeatedly is unlikely to help. If the request reaches the remote server but the handshake fails, check the protocol fields, security parameters and system time. Log error types can help distinguish these cases.

    After verifying the connection, add custom routing, background operation and startup settings as needed. Before closing the client, disable any system proxy you no longer use so apps do not keep pointing to an inactive local port. The full tutorial explains where to find each setting and how to handle common variations.

READING NOTES / Featured articles

Choosing clients and troubleshooting by layer

Browse all articles →

Once the basic connection works, consult articles for specific questions. Choose an installer based on your system and interface framework; investigate speed issues by looking at the route and local entry point; choose protocols based on remote configuration and core support. Separating these questions helps identify which settings are worth changing.

To find a configuration key, go straight to the JSON guide. To understand the differences between subscriptions, nodes and cores, start with the glossary.