In this guide

For anyone who has just installed a client and has a subscription but isn't sure what to do next. First, understand the difference between clients, cores, and nodes. Then import your subscription, route traffic through the client, and verify the connection in a browser and the connection log. Desktop instructions use v2rayN as an example; for Android, we explain how to choose between v2rayNG and v2flyNG. Menus may vary by version, so look for the equivalent feature if a label differs.

1. What's the difference between V2Ray, a core, and a client?

V2Ray is a common name for a proxy tool and its ecosystem, not a ready-to-use server service. The core handles incoming connections, routing, and communication with remote servers. The client provides a graphical interface for importing subscriptions, selecting nodes, and viewing logs. Installing a client gives you the tool, but you still need a valid connection configuration.

Client User interface
Examples include v2rayN, v2rayNG, and v2flyNG. Most day-to-day tasks happen in the client; you generally don't need to edit core configuration files directly.
Core Connection engine
Xray and V2Fly are separate core projects. They don't support exactly the same protocols, transports, or security features, so a software name alone doesn't tell you whether a configuration is compatible.
Nodes and subscriptions Connection details
A node contains a set of remote connection parameters. A subscription URL retrieves or updates one or more sets of parameters. It is not the proxy server address you enter in a browser.

VMess and VLESS are proxy protocols; WebSocket is a transport; TLS and REALITY are connection security settings. These belong to different layers, and none of them alone represents a complete node configuration.

2. Which client should you use on desktop or Android?

For Windows, macOS, or Linux, start with the v2rayN download for your platform. On Android, choose v2rayNG or v2flyNG based on your subscription's requirements. If your provider specifically requires Xray or VLESS + REALITY, check support for the Xray option first rather than trying every client in turn.

Choose based on your device and subscription

Desktop: v2rayN
  • Choose the installer for Windows, macOS, or Linux.
  • Check your device's processor architecture, such as x64 or ARM64.
  • In the client settings, confirm that the core matches your node's requirements.
Android: choose by core
  • v2rayNG uses the Xray core.
  • v2flyNG uses the V2Fly core.
  • Check your provider's protocol requirements, then confirm client compatibility.

Whether one subscription works across devices also depends on its format, supported protocols, and any device limits imposed by your provider. The imported results may differ between clients.

3. Why can't you connect right after downloading a client?

A client doesn't create a usable server automatically. To get started, you need a valid subscription or a complete node share link from the server administrator. A server hostname and port alone are usually not enough; authentication details, transport, and security settings must also match.

4. How do you add a subscription and update nodes in v2rayN?

Copy the client subscription URL provided by your service, not the account sign-in page URL. These steps use the common v2rayN desktop interface: subscription management saves the URL, and the update command fetches the nodes. The list won't populate until you complete both steps.

  1. Copy the subscription URL

    On your provider's website, choose the subscription format for your client. Copy the full URL and make sure it has no extra spaces or line breaks at either end.

  2. Create a subscription group

    Open “Subscription Group” → “Subscription Group Settings” and add a group. Enter a recognizable name in the remarks field, paste the URL into the URL field, and save.

  3. Update the subscription

    Return to the main window and select “Subscription Group” → “Update All Subscriptions (No Proxy).” Fetch the nodes over your current connection and check whether the update succeeds.

  4. Set an active server

    After the update, select a node in the list and choose “Set as Active Server” from the right-click menu. Then enable the system proxy so browsers that follow system proxy settings can use it.

In some versions, the add option is in the subscription management window under “Add” or “+”; update commands may have slightly different names. If you must use a proxy to reach the subscription URL, first establish a working connection, then choose the option to update through the proxy. Switching this option repeatedly with an empty list won't solve the initial fetch.

5. Can you use node links, subscription URLs, and QR codes interchangeably?

These three formats may contain different information. Content starting with vmess:// or vless:// is usually a link for a single node. An address starting with https:// could be a subscription or an ordinary webpage. A QR code just encodes text; check what it actually contains after scanning.

What you receivedWhere to import itWhat to check after importing
Subscription URLSubscription Group SettingsUpdate result, node count, and whether the group is enabled
Single-node linkImport from clipboardProtocol, server address, port, and security settings
Node QR codeScan QR codeWhether a node was created successfully, rather than just recognizing a regular webpage

In v2rayNG, open “Subscription Group Settings” from the side menu, tap “+” to save the URL, then return to the main screen and select “Update Current Group Subscription” from the top-right menu. To import a single node, use the clipboard or QR scanner under “+” on the main screen. Don't paste a full subscription URL into the “Address” field on the node editing screen.

6. Should you start with system proxy or TUN?

For your first desktop test, start with the system proxy. It sends requests from apps that follow system proxy settings to the local proxy; it doesn't cover every program. In v2rayN, the usual path is right-click the tray icon and select “System Proxy” → “Set System Proxy.” Check the listening port under “Settings” → “Parameter Settings.”

System proxy: example settings

Applies to
Apps that follow system proxy settings
Local address
127.0.0.1
Proxy port
10808, example only
Test the connection
Browse to a website and check the client's connection log

Use the port and proxy type shown in your client. Older configurations may use a different port, so don't assume the example applies to yours.

TUN: what to check

How it works
Routes traffic through a virtual network interface
Permissions
May require administrator privileges or system authorization
When to use it
Try it if an app doesn't follow system proxy settings
What to troubleshoot
Conflicts with routes, DNS, or other tunneling software

TUN doesn't guarantee a working connection. Verify the node first, then enable the mode that captures more traffic. This makes it easier to isolate the cause of any problems.

On Android, v2rayNG and v2flyNG typically route selected traffic through the system VPN interface. You'll need to approve system access the first time. This is different from changing the system proxy on desktop. When prompted, verify the app's name and source before allowing it to establish a connection.

7. Should you use global or rule-based routing?

Routing determines whether a connection uses the proxy or connects directly; it can't fix an incorrect server password or an expired node. For everyday use, start with the client's rule-based routing. If a particular site has problems, temporarily switch to the “Global Proxy” routing mode to check whether a routing rule is the cause.

For example, if a browser can reach a site but a particular app can't, first check whether that app uses the system proxy. Check routing rules only after confirming that the request reaches the client. Don't keep changing rules when there's no connection record.

8. How can you tell if your first connection really works?

A latency value beside a node only shows that a specific test got a response at that moment. An open TCP port doesn't mean authentication succeeded, and a client showing “Running” may only mean its local service started. For your first test, check both the result in a browser and the connection log. Don't rely on one icon or speed test.

  1. Check your internet connection: Open a website that normally works without a proxy to rule out a disconnected device or an unfinished public Wi-Fi sign-in.
  2. Check the active node: Verify which server is selected. Highlighting a row doesn't necessarily switch the client to that node.
  3. Check that traffic is routed: On desktop, enable the system proxy. On Android, confirm the connection is running and system VPN access is approved.
  4. Test the destination: Visit a page that actually requires the connection, then check the client log for the matching connection or error.
  5. Test again: Open a new page and try once more. If it only works occasionally, check network stability before changing a lot of settings.

A built-in “real connection latency” test is usually more representative of application-level connectivity than a basic TCP test, but results still depend on the test address and your current network. Don't treat latency as download speed or assume every website will be reachable.

9. Connected, but webpages won't load: what should you check first?

Troubleshoot in this order: local proxy entry → whether the request reaches the client → remote connection. Change one setting at a time and note the error before and after. If the log shows no request, check traffic routing. If the request reaches the client but then fails, check the node, DNS, and network path.

Browser keeps loading, but the log is empty?

In the v2rayN tray menu, check “System Proxy” → “Set System Proxy” again. Make sure the browser doesn't have its own proxy configured or an extension overriding the settings. If the app doesn't follow system proxy settings, consider configuring the proxy manually or using TUN.

Log says address already in use?

This usually means another process is using the local listening port. Close duplicate client instances and any other programs using the same port. If needed, change the local port under “Settings” → “Parameter Settings,” then update any apps where you entered that port manually.

Log shows a timeout or a DNS resolution error?

Try another node in the same subscription, then test again on a different working network. A timeout may mean the remote server is unreachable; a resolution error points to the node's hostname or DNS. Don't assume the subscription format is wrong based on one timeout.

Authentication or TLS handshake failed?

First check that your device's date and time are correct, then update the subscription and confirm the service is active. If you edited the node manually, import the original configuration again and check fields such as the server name. Don't disable certificate verification to hide a configuration or certificate problem.

10. What should you save after your first successful connection?

Save a minimal configuration you've verified, then add scheduled updates, per-app proxying, or TUN one feature at a time. Don't change the core, DNS, and routing all at once as soon as you connect; it'll make later problems harder to trace. If you use a node managed by a subscription, avoid editing the generated config.json directly—it may be regenerated when you switch nodes or restart the client.

A successful first connection isn't about changing the most settings. It's about verifying each step: the subscription creates nodes, a node starts a local proxy, the app sends its requests to that proxy, routing selects the right exit, and the remote connection succeeds. Check the chain one step at a time, and it'll be easier to reconnect after switching devices or updating the client.