FAQ ยท Common questions

v2rayNG FAQ

20 common questions in four groups: basics, setup, usage tips and troubleshooting. Every answer maps to a setting that really exists in the client - subscription settings, routing mode, per-app proxy, DNS and TUN permissions - so you can change things as you read. Sections that involve the v2rayN desktop client are marked separately in the answers.

  • Core Xray / V2Fly
  • Protocols VMess / VLESS / Trojan / SS / REALITY
  • Platforms Windows / macOS / Android / Linux
  • Clients v2rayN / v2rayNG / v2flyNG

Basics

Start by sorting out how the three clients, the two core branches and the protocol names relate. The settings and fixes in the later sections all build on these concepts.

5 questions
What is the difference between the v2rayNG, v2rayN and v2flyNG clients?

v2rayN is a desktop client covering Windows, macOS and Linux, built around a node list, routing rules and system proxy management. v2rayNG is an Android client that uses the Xray core by default, with settings centred on routing mode, per-app proxy and subscription management. v2flyNG is also an Android client, the difference being that it uses the V2Fly core.

All three accept the same subscription URLs and node share link formats, so you can import them in any client. On selection: use v2rayN on desktop, v2rayNG by default on Android, and install v2flyNG when you need the V2Fly core. The two Android clients can also be installed side by side and import different subscriptions.

How do the V2Fly and Xray cores relate to each other?

They share the same origin, Project V's v2ray-core. The V2Fly community took over ongoing maintenance of v2ray-core, continuing that line; Xray split off from the same codebase and added protocol extensions such as VLESS, XTLS and REALITY.

In practice the difference comes down to protocol support: v2rayNG bundles the Xray core, so it recognises VLESS nodes and REALITY setups directly; v2flyNG uses the V2Fly core and is more conservative about compatibility with older configurations. The configuration file format is largely the same, and the vast majority of subscription URLs import fine in both.

What do the names VMess, VLESS, Trojan, SS and REALITY refer to?

The first four are proxy protocols. VMess was Project V's main protocol in its early days and uses time verification during the handshake; VLESS is a stripped-down stateless protocol that drops encryption and the time check; Trojan runs over a standard TLS connection, so its traffic resembles ordinary HTTPS; SS stands for Shadowsocks, a simple protocol with low overhead.

REALITY is not a separate protocol but a TLS camouflage method in Xray, usually paired with VLESS, borrowing a real website's certificate during the handshake. The client detects the protocol from the node information, so manual selection is rarely needed; for a side-by-side comparison, see the protocol chapter in the technical reference.

What is the difference between a subscription URL and a single node share link?

A subscription URL is an HTTP or HTTPS address that returns a whole set of nodes and supports scheduled updates; a share link starts with vmess://, vless://, trojan:// or ss:// and contains the full parameters of one node only, so it stays a fixed entry after import and never updates automatically.

Providers usually offer both: subscription URLs suit long-term use and bulk management, while share links are handy for adding one node temporarily or passing a configuration between two devices. In v2rayNG, the former goes through Subscription settings and the latter through Import from clipboard.

Will imported nodes and settings be lost after a client update?

A normal in-place update will not lose them. Nodes, subscription URLs, routing mode and the per-app proxy list all live in the app data directory; a version upgrade only replaces the program files and leaves the data untouched.

Two cases are worth noting: uninstalling and reinstalling clears app data, so copy your subscription URL out beforehand; and major version upgrades sometimes move individual settings, so after upgrading, check the routing mode, per-app proxy and DNS settings once each.

Setup

From which package to install and how to import a subscription to choosing a routing mode and per-app proxy, this is the section where the order of steps goes wrong most often.

5 questions
Subscription import fails with a parsing error - what should I do?

Work through three steps. First, make sure you have a subscription URL rather than a web page address: opening a subscription URL returns encoded text or a node list, not an introduction page. Second, check whether the address was truncated - copying from a chat window or web page easily drops trailing path parameters, so copy it again in full. Third, verify with another import method: in v2rayNG use Import subscription from clipboard to paste the address, and if it still errors, open the address directly in a browser and see whether the response is an error page or a login page.

If the address itself has expired, no amount of fiddling in the client will fetch nodes - ask your provider for a new subscription URL. After a successful import the nodes appear in the list by group; run a Real delay test before picking one.

On Android, should I choose the arm64 build or the universal build?

It depends on the processor architecture. Most phones released after 2015 use 64-bit ARM chips, so the arm64 build is the right pick - smaller package, better performance. The universal build bundles libraries for several architectures, which covers older devices and emulators at the cost of a larger installer.

If unsure, install arm64 first and switch to universal only if the system reports that the app was not installed or the package could not be parsed. App data is not shared between the two builds, so copy your subscription URL before switching and import it again afterwards.

When should I use Proxy only, Bypass LAN or Global in routing mode?

Proxy only sends just the traffic matched by routing rules through the proxy and connects everything else directly, which suits finely written rules; Bypass LAN proxies all traffic while excluding private network ranges (192.168.x.x, 10.x.x.x and so on), the usual choice on home and office networks; Global sends everything through the proxy and is handy for a quick check of whether a node works.

Switching takes effect only after you disconnect and reconnect. For everyday use, stay on Bypass LAN; when one app misbehaves, switch to Global temporarily for a comparison and you can tell whether the problem lies in the split rules or the node itself.

How do I set up per-app proxy, and which apps should go through the proxy?

v2rayNG's per-app proxy offers two modes: a whitelist that proxies only the selected apps, and a blacklist that proxies everything except the selected apps. By default all apps go through the proxy.

A common approach: whitelist browsers, mail clients and developer tools, and exclude banking, payment and food delivery apps that are sensitive to network environment, reducing friction from login risk checks and region verification. After any change, disconnect and reconnect so the new split rules take effect. The list is sorted by app name, so leave anything you cannot identify unchecked for now.

Subscription updates fail and the node list stays stale - what should I do?

Tap Update subscription manually once and read the message it returns. There are three common causes: the provider changed the token or path in the subscription URL, so the old address returns 404; the subscription domain cannot be resolved on the current network, so try another connection (switching from Wi-Fi to mobile data, for example); or the client's automatic update interval is long and it does not refresh on every launch.

Once the address is confirmed working, turn on automatic updates in the subscription settings. It is worth keeping a copy of a node share link as a fallback, so you can import the key nodes by hand while the subscription is temporarily unavailable.

Usage tips

How to read speed test results, how to confirm the proxy is really working, how to move configuration between devices - these questions decide whether daily use feels smooth.

5 questions
What is the difference between Real delay and Tcping in node speed tests?

Tcping only measures the TCP handshake time to the node server without any protocol negotiation, so a good number does not mean the proxy actually works; Real delay establishes a real proxy connection and requests a test address, so the result is closer to everyday experience.

The order for picking nodes: use Tcping to quickly rule out servers that are down, then use Real delay to choose among the rest. Test results only reflect the network at the moment of testing, so after changing networks or when node load shifts, test again before deciding which one to use.

How can I confirm that traffic is really going through the proxy?

Three checks that confirm each other. First, after connecting, look at the outbound address in the client status - it should show the node server's IP, not your own public IP. Second, open a test page that displays your visitor IP and compare the result before and after connecting. Third, check the client's connection log for traffic records.

If the outbound address has not changed while the status says connected, routing rules or per-app proxy are usually excluding the current app's traffic - go back to those settings and check the selection. On the v2rayN desktop client, also confirm the state of the system proxy switch.

How can I reduce battery drain when using V2Ray on mobile?

Battery drain comes mainly from three places: protocol handshake overhead, DNS lookups and connection keep-alive. What you can adjust: prefer protocols with a lighter handshake - VLESS skips the time check that VMess performs; let the node side handle DNS resolution to cut repeated local queries; turn off automatic subscription updates when you do not need them so the app stops making background requests; and avoid staying connected for long periods on a weak signal, since retransmissions drain more than normal use.

These switches are all in the client's settings page, with no need to edit configuration files. If you only use it occasionally, connecting on demand saves more power than staying connected.

How do I sync node configuration across several devices?

The simplest way is to share one subscription URL: import it on each device and update separately when nodes change. If you only want to sync a few nodes, passing individual share links between two devices is more direct. Between desktop and Android you can also export nodes as a text backup and import it from the clipboard on the other device.

Three things do not travel with a subscription when you change devices and need to be checked again: routing mode, the per-app proxy list and DNS settings.

The node list is too long - how should I group and sort it?

v2rayNG lets you tag nodes into groups. A common split is by purpose: one group for low-latency nodes you use daily, one for backups, and delete any node that keeps failing the Real delay test so you are not scrolling a long list every time.

For ordering, put stable, frequently used nodes first. Rename them with remarks you can recognise at a glance - easier to find than default node names. Deleting a node does not affect the subscription; they come back on the next update, so clean up freely.

Troubleshooting

Connected but pages will not open, all nodes timing out, TUN refusing to start, system proxy not taking effect - this section covers the checks that get results fastest when done in a fixed order.

5 questions
The status says connected but pages will not open - where do I start?

Troubleshoot from the outside in and change only one variable at a time. Step one: turn the proxy off and confirm the device's own network works. Step two: switch to another node to rule out a single dead node. Step three: check routing mode and per-app proxy to confirm the current app is covered. Step four: look at DNS settings, since local resolution failures block pages even through a working proxy. Step five: if only a few sites misbehave, it is most likely those sites' own access policy and nothing to do with the node.

It helps to note the result of each step; once you have located the specific link, adjust it directly - far more effective than reinstalling the client over and over.

All nodes time out and every latency test fails - what should I do?

When every node fails at once, the problem is usually outside the client. Update the subscription manually to confirm the node information has not expired; then test on another network to see whether the current Wi-Fi or line is at fault; then check the system clock, because time-sensitive protocols such as VMess are very sensitive to clock drift and an inaccurate clock causes handshake failures outright.

If some nodes recover on another network, the issue is with individual lines; if everything still fails on mobile data, the problem is almost certainly on the subscription side and you should check with your provider.

TUN mode reports insufficient permissions or will not start?

TUN mode takes over traffic through a virtual network interface and needs VPN permission from the system. The first time you enable it, the system shows an authorisation dialog and you must tap allow, or the connection drops immediately. If you declined before, re-authorise it in the system settings under VPN or app permissions.

Two other common causes: only one app can hold the VPN channel at a time, so first confirm no other proxy app is running; and some customised systems restrict background launches, so add the client to the background-run whitelist in the battery and performance settings. TUN mode captures more traffic than the system proxy, so after enabling it, confirm the outbound address has changed with a test page.

System proxy is on in the v2rayN desktop client, but the browser still connects directly?

First confirm the system proxy switch is on and the mode is set to Auto configure system proxy or Global. If the browser has a proxy management extension, the extension overrides system proxy settings, so switch it to follow the system or disable it temporarily.

One more case: programs running with administrator rights do not always read the current user's proxy settings, and those need TUN mode to capture their traffic. After changing settings, restart the browser so the new proxy configuration takes effect, then open a test page to confirm the outbound address.

How do I detect and prevent DNS leaks?

A DNS leak means domain resolution requests bypass the proxy tunnel and are resolved by the local network or ISP DNS. To detect one: connect and open a DNS leak test page, then check where the resolving server is located; if it shows a local ISP or router address, there is a leak.

To prevent leaks, enable remote DNS so resolution happens on the node side, and give DNS queries their own route in the routing settings; on desktop you can also specify a resolver address that does not go through the local network in the DNS settings. Reconnect after the change and test again to confirm. DNS settings and routing rules affect each other, so change one item at a time.