Quick start · four steps

v2rayNG Subscription Import and Connection Setup

From getting a subscription URL to confirming the proxy works, the four steps take about ten minutes. Instructions follow the v2rayNG Android interface, and each step ends with the matching path in the v2rayN desktop client. If you have not installed a client yet, grab an installer from the download center first.

Platform differences: Android and desktop are two separate interfaces

v2rayNG (Android) keeps subscriptions, routing and logs in the drawer menu at the top left and the overflow menu at the top right, leaving only a node list and a round connect button on the main screen. v2rayN for desktop (Windows / macOS / Linux) spreads the same groups of settings across the Subscription, Settings and Test menus in the top menu bar plus the tray context menu. The setting names are largely the same on both sides; only their locations differ.

The steps below follow v2rayNG; the Desktop comparison note at the end of each step gives the matching entry point in v2rayN.

Import a subscription

Turn the subscription URL from your provider into a node list on the main screen

A subscription URL is usually a long link starting with http:// or https://, supplied by your provider. Copy the whole thing to the clipboard rather than typing it out: the address carries query parameters, and a single wrong character makes Update subscription fail. v2rayNG accepts two kinds of input — a full subscription URL, or a single-node share link (starting with vmess://, vless://, trojan:// or ss://).

Option 1: Import a subscription from the clipboard

Make sure the subscription URL is on the clipboard, then follow these steps:

  1. Open v2rayNG and tap the + button at the top right of the main screen.
  2. Choose Import from clipboard in the menu that opens.
  3. When the client recognizes a subscription URL on the clipboard, it opens an Import subscription dialog and asks for a name. The name is only for your own reference — use the provider name plus the purpose, for example Main subscription.
  4. Tap OK to save, then return to the main screen.

A new subscription group now appears in the drawer menu, but it may still be empty because no update has run yet. Keep reading for the update step.

Option 2: Add it manually in subscription group settings

If Import from clipboard does not pick anything up, or you need to add several subscriptions at once, use the manual route:

  1. Tap the menu icon at the top left of the main screen to open the drawer, then go to Subscription group settings.
  2. Tap + at the top right to add an entry, fill in the name under Remarks, and paste the subscription URL into the url field.
  3. Save, go back to the main screen, tap the three-dot menu at the top right and choose Update subscription.

The update shows a progress indicator; when it finishes, the group lists every node the provider sends, with the node name and protocol type on each row. Both the number and the names of the nodes come from the provider — the client only lists them.

Single-node share links

When your provider gives you only a single vmess:// or vless:// link, use + → Import from clipboard at the top right of the main screen in the same way; the client turns it straight into a node and does not put it in a subscription group. Such nodes never update themselves: once the provider changes the port or the key, the old link stops working and you have to import the new one. For long-term use, prefer a subscription URL and let the provider handle adding and removing nodes.

Updating subscriptions and auto-update

Subscription contents change — nodes are added or removed and addresses are adjusted — and an update is how those changes arrive. To update manually, use Update subscription in the three-dot menu on the main screen. To skip that step, open Settings → Subscription settings, turn on Auto-update subscription and pick an interval (6 hours, for example); the client then fetches the subscription in the background at that interval.

One easy trap: if you are connected through the proxy while updating and the subscription URL itself cannot be reached through that proxy, the update fails. Disconnect first, then run the update.

Node names are defined by the provider, so renaming them on the main screen is not recommended. A rename does not affect the connection, but the next subscription update overwrites it, leaving you unable to tell which node is which.

Desktop comparison · v2rayN

Subscriptions live in the Subscription menu on the top menu bar: first Subscription group settings → Add, and fill in a name and the address; then Subscription → Update subscription (without proxy). v2rayN makes the no-proxy update a separate menu item precisely to avoid the failure case described above.

Choose a proxy mode

Decide which traffic goes through the proxy and which connects directly

Once the subscription is imported, the nodes are visible on the main screen, but connecting now uses the default rules. v2rayNG splits which traffic goes through the proxy into two settings: the routing mode decides the overall direction, and per-app proxy decides individual apps. Both live under Settings; set the routing mode first, then use per-app proxy for exceptions.

Routing mode: pick one of three

Open the drawer menu → Settings → Routing settings; the predefined rules offer three options:

  • Proxy only: only the apps ticked in the per-app proxy list are handed to the core; everything else connects directly. Suits setups where just a few apps — a browser, a messaging app — should use the proxy.
  • Bypass LAN: LAN addresses connect directly, so the router admin page, a NAS or a printer keeps working, while all other traffic goes through the proxy. Use this option when you have local network devices at home or in the office.
  • Global: all traffic goes through the proxy with no exclusions. Useful for temporary troubleshooting, or when you know you do not need to reach local network services.

Switching options does not require restarting the client, but to make the new rules take effect immediately, disconnect and connect again.

Per-app proxy

Under Settings → Per-app proxy, choose a mode first, then tick apps: with Proxy selected apps only, ticked apps use the proxy; with Bypass selected apps, ticked apps connect directly. The list is sorted by app name — when there are many apps, use the search box above the list.

Two common trade-offs: put banking and intranet office apps on the bypass list so their exit address does not keep changing and trigger risk controls; put download tools on the bypass list so they do not saturate the proxy bandwidth and spoil the experience in your browser and messaging apps.

Start on boot and keeping the process alive

With Settings → Start on boot enabled, the client is launched when the device restarts. Some Android builds manage background processes strictly, so the in-app switch alone is not enough: in system settings → Apps → v2rayNG, enable Autostart and Run in background, and set the battery policy to unrestricted, otherwise the process is killed shortly after boot.

Domain resolution strategy

Routing settings also has a Domain resolution strategy option (domainStrategy) with the values AsIs, IPIfNonMatch and IPOnDemand. The default, AsIs, hands domain names straight to the node for resolution. If some domains fail to resolve, or IP-based routing rules do not take effect, try switching to IPIfNonMatch. This option touches the core's resolution flow and needs a long explanation, so it is covered in the technical reference.

Desktop comparison · v2rayN

The matching items are under Settings → Routing settings and Settings → System proxy. The desktop client has no per-app tick list; routing rule sets written by domain or IP are more common, and they are imported in Routing settings. The system proxy switch lives in the tray context menu and is not the same thing as the round connect button on Android.

Connect

Select a node, grant VPN permission, start the core

Connecting takes a single button, but the first connection adds a system permission step that cannot be skipped. The order is: select a node, tap connect, then handle the system dialog.

Select the target node

Tap the target node in the list on the main screen; a check mark appears on the right to show it is now the current node. With a long list, use Sort by latency in the three-dot menu at the top right to order it first, but that latency is only a reference — whether a node really works right now is what the real connection test in step 4 tells you.

Tap the connect button

A round button with a V icon sits at the bottom right of the main screen; tap it to start connecting. On the first connection, Android shows a Connection request dialog asking whether to let v2rayNG set up a VPN connection; tick the trust option and tap OK. This permission is managed by the system and appears only once — if you tap Cancel by mistake, tapping the connect button again brings the dialog back.

What to check after connecting

Once connected, the round button turns to its active state, the top of the main screen shows the current node and connection status, and a persistent notification appears in the status bar with the node name and traffic counters. You can tap Disconnect right in the notification without switching back to the client. Some systems fold notifications like this into Silent notifications; if so, set the v2rayNG notification level back to default in the system notification settings, otherwise the status stays hidden.

Drops and reconnecting

After switching between Wi-Fi and mobile data, the existing connection usually has to be rebuilt: disconnect, then tap the connect button again — the client does not rebuild connections across networks on its own. Also, even with Start on boot enabled, you generally have to tap the connect button once after restarting the device, unless the system lets the app start the VPN service in the background by itself.

Desktop comparison · v2rayN

v2rayN splits connecting into two steps: select a node in the server list and press Enter to make it the active server, then choose System proxy → Set system proxy automatically in the tray icon context menu. To disconnect, choose Clear system proxy, which only turns the proxy off and leaves other system settings alone.

Verify it works

Three layers of confirmation: reachability, exit address, real browsing

Connected on the main screen only means the core is running, not that traffic really goes through the proxy. Verification has three layers: the client's own reachability test, an exit address comparison, and real browsing behavior. The setup is only done when all three pass.

Layer 1: real connection delay test

The three-dot menu at the top right of the main screen has Test all configurations real connection, and long-pressing a single node tests just that one. Two kinds of numbers appear in the results: the TCP delay only checks whether the node port is reachable, while the real connection delay actually establishes a connection with the current protocol and is closer to real use. A real connection result of -1, or a spinner that never stops, means the node is currently unusable — try another one. Testing time grows with the number of nodes, so with a long list test the first few entries.

Layer 2: exit address comparison

Before connecting, open any page that shows your current exit address in a browser and note the result; after connecting, refresh the same page — the exit address should change to the node's location rather than your local network operator's address. If both results match, traffic is not going through the proxy. The most common reason is that the browser is on the per-app proxy bypass list, so go back to step 2 and check.

Layer 3: real browsing behavior

Open a page that is usually unreliable and see whether it loads; at the same time, pull down the notification shade and watch whether the traffic counter in the persistent notification is rising. If the counter does not move, no traffic is passing through the core — the connection status and the actual traffic disagree, so follow the log steps below.

Check the logs

Logs are the most useful tool when troubleshooting. Go to Settings → Log level and set it to info, or debug when you need finer detail; then go back to the main screen and tap the three-dot menu → Log to read the core output. The log shows connection setup, route matching and domain resolution, and error lines usually start with error or failed. Copy the error keywords before searching — far more effective than reconnecting over and over. A higher log level uses more resources, so remember to set it back to the default when you are done.

When verification fails

First go back to step 2 and check the combination of routing mode and per-app proxy, then switch nodes and run the real connection test again. If the log keeps showing resolution or connection errors, note the error keywords and look them up in the Troubleshooting category of the FAQ; protocol and core level causes are covered in more detail in the technical reference.

Desktop comparison · v2rayN

The test entries are in the Test menu on the main screen: Test real connection delay (current server) and Test real connection delay for all servers. Logs are opened from Settings, where you can also jump straight to the folder holding the log file.

Quick fixes for common snags

The four most common snags

These are usually the only places where the four-step flow stalls. Check them first before digging into the more detailed FAQ entries.

The connect button does nothing and no permission dialog appears

Android allows only one app to hold the VPN tunnel at a time. First make sure no other proxy client is connected, close them and tap the connect button again. If nothing happens, go to system settings → Apps → v2rayNG → Permissions and check whether a VPN-related permission was denied before — a past denial blocks later dialogs.

It says connected, but pages will not load

Work through this in order: 1) switch to another node and run the real connection test again; 2) check the log for resolution errors; 3) check per-app proxy and make sure the browser is not on the bypass list; 4) check whether the routing mode is Proxy only while the target app is not ticked. If all four pass and pages still will not load, note the error keywords from the log and look them up in the FAQ.

Subscription updates keep failing

Disconnect before updating — some subscription URLs cannot be reached through the proxy. Check that the URL has not expired or been replaced by the provider. If you have several subscriptions saved, update them one at a time to find out which one is failing.

Nothing starts automatically after boot

The Start on boot switch inside the client is only the first layer; the system has to allow it too: system settings → Apps → v2rayNG, enable Autostart and Run in background, and set the battery policy to unrestricted. On some devices you also need to lock the app in the recent tasks list.

More questions are organized into four categories — Basics, Installation and setup, Usage tips, Troubleshooting — on the FAQ page.