First, distinguish server configurations, the active server, system proxy settings and routing rules, then work through the relevant parts of the interface. This guide covers common menus in the Windows desktop app, including list fields, subscription updates, log checks and local listening ports. It’s for users who have opened v2rayN but aren’t sure what to click next. Button locations may vary between desktop interfaces; follow the labels in your installed version.
1. Check These Four States First—A Selected Row Doesn’t Mean You’re Connected
v2rayN is a desktop client for managing configurations and running a proxy core. The server list stores connection settings; the core listens on local ports, applies routing rules and connects to remote servers. A configuration appearing in the list only means it has been added to the client. It doesn’t confirm that the server is reachable or that your browser is using it.
A useful troubleshooting sequence is: configuration added → set as active → core started → app connected. Routing determines which outbound route a connection takes after it reaches the core. The system proxy setting determines whether apps that follow it send connections to the local proxy first. These settings operate at different levels.
| Interface area | What it does | Common misconception |
|---|---|---|
| Server list | View, edit and test server configurations | Highlighting a row doesn’t make that configuration the active server |
| Subscription groups | Organize configuration sources and filter their entries | Switching groups doesn’t switch the active server |
| System proxy | Changes the proxy settings the operating system provides to apps | Some apps may ignore this setting even when it’s enabled |
| Routing | Selects the rule set used by the core to route traffic | “Global” routing doesn’t mean all system traffic is intercepted |
| Logs and status bar | Check core startup, connection errors and local listener details | Traffic statistics don’t guarantee that every website is reachable |
2. Server List Columns: Address, Port, Protocol and Test Results
Each row usually represents one server configuration. The remarks field helps identify it; the address and port connect to the remote server; and the protocol and transport fields together define how the connection works. VLESS, VMess and Trojan are proxy protocols. WebSocket and gRPC are transport methods, not interchangeable options from the same category.
| Common column names | What they mean | What to do |
|---|---|---|
| Remarks / Alias | A label for identification; it isn’t used to authenticate with the server | A region or multiplier in the name is provider-supplied, not measured by the client |
| Address | Remote hostname or IP address | If the hostname fails to resolve, check the logs first. Don’t replace it with an arbitrary IP address. |
| Port | The port the remote service listens on, such as 443 in the configuration | The remote port isn’t your local proxy port. Don’t enter it as your browser’s local proxy port. |
| Type / Protocol | Identifies the connection protocol, such as VLESS, VMess or Trojan | Keep it consistent with the server settings after import. Changing the protocol won’t fix a timeout. |
| Transport / TLS | A summary of the transport method and connection security settings | The path, service name, SNI and other fields in the edit window must still match the server |
| Subscription | The subscription group this configuration belongs to | Confirm the source before deleting entries in bulk, so you don’t remove entries from other groups by mistake |
| Latency / Speed | The result of the most recent test of that type | Check the test type, time and units before comparing results |
Right-click a server row to see the available commands for editing, setting it as the active server, testing or deleting it. To switch configurations, choose “Set as active server” from the context menu, then check the active indicator and the core logs. Don’t rely on the row’s highlight alone. Double-click behavior can vary by interface, so it isn’t a reliable cross-version step.
- TCPing: Mainly indicates whether a TCP connection to the target address and port can be established. It doesn’t confirm that proxy authentication, TLS or access to the destination website will work.
- Real connection latency: Sends a test request through the proxy route for that configuration, making it a closer approximation of an actual proxy request. Results still depend on the test URL.
- Download speed: Depends on the test resource, route and current load. A single result doesn’t predict sustained bandwidth.
- Blank or failed: The test may not have run, may have timed out, or the configuration may be incorrect. Check the error first; a blank result doesn’t automatically mean zero speed.
3. Subscription Groups: Add a Source, Then Update the Server List
Subscription groups store source details and organize imported entries. The group name is for local organization; the subscription URL is the resource requested during an update. Treat any full URL containing an access token as sensitive, and redact it from screenshots, logs and support requests.
-
Open subscription group settings
In the main window, go to “Subscription Groups” → “Subscription Group Settings.” If your interface puts this under a button or another menu, look for the same label. Don’t enter a subscription URL in the server editor.
-
Add a subscription source
In the group settings window, choose “Add,” enter a recognizable alias and the full subscription URL from your provider, then save. Keep the query parameters in the URL; don’t copy only the domain.
-
Update subscriptions
Return to the “Subscription Groups” menu and choose “Update all subscriptions (without proxy)” or the corresponding “Update via proxy” command. The difference is the network route used for the request, not the subscription format.
-
Check the update results
Check the logs for request failures or parsing errors, then open the relevant group to review its entries. If the list is empty, clear the search filter first and make sure you aren’t viewing a different group.
-
Set an active server
In the updated list, right-click the target row and choose “Set as active server.” Once the core starts, configure the system proxy and test access to a website.
An update may rebuild or overwrite entries managed by a subscription, so don’t keep important manual changes only on subscription nodes. To retain custom settings, note the differences and save them using a separate configuration method supported by your client. After updating, check the active server again to avoid using an outdated entry that has been removed.
4. Logs: Tell Startup Failures, Connection Failures and Routing Results Apart
Note when the problem occurs, narrow down the log view, then reproduce the request once. The log or information pane at the bottom of the main window may show both client messages and core output. A subscription parsing error happens during import; a local port conflict happens at startup; a remote connection timeout happens during connection. Each calls for different troubleshooting steps.
| Log clue | Check first | Next step |
|---|---|---|
address already in use or a port-in-use message | Whether another process is using the local listening port | Close duplicate client instances, or change the local port and update the app settings to match |
connection refused | Whether the address in the error is local or remote | For a local address, check that the core is running. For a remote address, check the server port and reachability. |
timeout or deadline exceeded | Whether the timeout is for a subscription request, a remote connection or the test destination | Keep the full context and change only one setting before retrying |
certificate-related error | System time, certificate validity and server name matching | Correct the system time and check the TLS settings first; don’t make skipping verification your default fix |
| Connection destination and outbound tag | Whether the rule sends the request to the expected outbound | Check the active configuration and routing rules; tag names can vary |
No connection entries don’t necessarily mean the core is broken. The log level may not record connection details, or the app may not be using the proxy. Go to “Settings” → “Parameter Settings” to review the available logging options. Temporarily increase the output level for diagnosis, then restore it afterward. Logs may contain destination hostnames and local paths, so redact them before sharing.
- Confirm that the core started successfully before checking access to a destination. Trying other websites won’t help diagnose a startup failure.
- If only your browser fails, compare its own proxy settings with the system proxy settings and check for conflicting overrides.
- If one destination fails, check the connections logged around that time. Don’t treat every historical error in the log window as part of the current problem.
5. Settings: Check Local Ports Separately from Remote Server Settings
“Settings” → “Parameter Settings” mainly covers client and core runtime options; the server row’s edit window manages a specific remote configuration. Both areas may show a “port,” but they serve different purposes. 10808 and 443 below are examples only—not instructions to overwrite your settings or fixed defaults for every installer.
Example: local proxy listener
- Where to find it
- Local listener options in “Settings” → “Parameter Settings”
- Listen address
127.0.0.1, meaning the local loopback address only- Listen port
10808; use the value shown in your interface and runtime logs- App settings
- Enter the address and port for a protocol supported by the listener
A mixed listener can accept multiple proxy protocols on one port. Separate HTTP and SOCKS listeners should be checked individually; don’t copy a port combination from an outdated guide.
Example: remote server settings
- Where to find it
- Right-click a server row → “Edit”
- Remote port
443, as specified by the server- Protocol
- Use the protocol in the imported VLESS, VMess or Trojan configuration
- Authentication and transport
- The user ID or password, TLS settings, path and other details must match the server
A remote port of 443 doesn’t mean your browser should connect to local port 443, and it doesn’t prove that the configuration has the right TLS settings.
After changing and saving the local port, confirm that the core reloads successfully. If you use the system proxy, check the port recorded in the system settings too; update it in any apps where you configured a proxy manually. For LAN access, the listening interface and firewall rules determine whether other devices can connect. On a single-device setup, widening the listening scope won’t make things faster and isn’t necessary.
You can’t switch core types arbitrarily, either. Xray and V2Fly don’t support exactly the same configuration features. Seeing a protocol name in the client doesn’t guarantee that every available core supports all the settings in that entry. If startup reports an unsupported field, check the configuration requirements and selected core before troubleshooting the network. For details on configuration structure, see the JSON Configuration Manual.
6. Tray Menu and System Proxy: Closing the Window Doesn’t Quit the App
The Windows notification area tray menu lets you check the active server, change system proxy settings or quit the app. What happens when you close the window depends on the client settings: the window may hide to the tray while the core keeps running. To stop using the proxy, check its status in the tray menu and then quit the app; a hidden window doesn’t mean the app has stopped.
Choose a connection method based on whether the app uses the system proxy
Apps that use the system proxy
- Set the active server and confirm that the core starts.
- From the tray’s “System Proxy” menu, choose “Automatically configure system proxy.”
- Check the system proxy status in the main window, then try accessing a website.
- The current routing rules still determine the outbound route.
Apps that need their own proxy settings
- Enable the proxy in the app’s own network settings.
- Set the host to
127.0.0.1and the port to the actual local listening port. - Make sure the selected HTTP or SOCKS protocol is supported by the listener.
- For apps that don’t support proxy settings, consider using TUN instead.
“Clear system proxy” removes the system proxy settings; it doesn’t delete servers. “Do not change system proxy” won’t remove settings that are already there.
If your browser still points to a local port after you leave the client, it may get a connection refused error once that port stops listening. Check for leftover system proxy settings instead of reimporting all your servers. A “direct” route means the core sends matching connections directly; it doesn’t turn off the local proxy listener.
7. Common Main Window Questions: Find the Right Place to Check
Why does switching subscription groups leave my actual exit unchanged?
Switching groups mainly changes which entries appear in the list. Right-click the target server and choose “Set as active server.” Check the active indicator and core logs before testing. Your browser may reuse existing connections, so start a new request if needed.
Why can’t I open websites even though the list shows latency?
First check whether the test was TCPing or real connection latency, then confirm that the system proxy is configured. Check the logs for the current request: for a refused local connection, check the listener; for a remote timeout, check the server and network route; if only one site fails, check the routing rules and destination reachability.
The subscription update succeeded. Why can’t I find the new servers?
Clear the search filter in the main window, switch to the relevant subscription group or the full list, then review the update logs. A successful fetch doesn’t necessarily add new entries; existing settings may simply have changed. Don’t judge the update by the number of rows currently visible.
Do I need to clear the system proxy after closing the window?
First check whether the app is still running in the tray. If you want to stop using the proxy, go to the tray’s “System Proxy” → “Clear system proxy,” then quit the app. Open the system proxy settings again and confirm they no longer point to a stopped local listener.
After setting things up, keep track of three places to check: the server list for the active entry, “Settings” → “Parameter Settings” for the local listener, and the log window for startup and request results. When changing a subscription or routing rule later, change one thing at a time to pinpoint the source of any issue.