Installing v2rayN for the first time? Start by choosing the right Windows architecture and release, then make sure the files are fully extracted and the subscription and local listening port are set up. Follow the steps in order: launch the app, import nodes, connect the core, then route traffic through the proxy. Already installed but can't load web pages? Use this guide to pinpoint which layer is failing.
1. Choose Between the WPF and Desktop Versions
v2rayN is a desktop interface for managing nodes, subscriptions, and proxy settings; the core handles the actual connection. WPF and Desktop differ primarily in their interface technology and runtime requirements—not in the proxy protocols they use. Choosing one does not inherently make your connection faster. Desktop uses a cross-platform interface, while WPF retains the classic Windows interface. Supported protocols also depend on the bundled core and its version.
Desktop version
RecommendedFor a first-time installation, start with Desktop and check the download page for Windows architecture and runtime requirements. Its menus may differ from WPF, so when following an older guide, look for the setting by its purpose rather than matching screenshots exactly.
Best for: Windows users setting up v2rayN for the first time who are comfortable with a cross-platform interface.
WPF version
Choose WPF if you prefer the classic Windows interface. If it reports a missing runtime, check the release requirements for the .NET Desktop Runtime and the correct processor architecture. A similarly named general-purpose runtime may not be enough.
Best for: Users who prefer the classic interface or want to follow an established workflow.
Before downloading, open Windows Settings → System → About and check System type. Match x64 or ARM64 to the download page and release notes; don't rely on the device brand alone. Find the download links on the client downloads page. This guide doesn't pin a version number or assume that every release requires the same runtime.
2. Extract All Files and Launch v2rayN
For a portable release, extract all files before running v2rayN.exe. Launching the app from inside the archive or copying only the executable can leave out dependencies, cores, or other required files. Use a stable folder your account can write to, such as D:\Tools\v2rayN. If you don't have a D: drive, create a dedicated folder under your user directory.
-
Check the package type
On the download page, choose Desktop or WPF for Windows and check the architecture and runtime requirements. Download the package, then extract it.
-
Extract every file
In File Explorer, right-click the archive and select Extract All. Don't run the app from inside the archive or extract different interface packages over the same folder.
-
Launch the app
Open
v2rayN.exein the extracted folder. For a standard system proxy setup, start with regular permissions. If an error occurs, keep the full message and logs. -
Check the listening settings
Open Settings → Parameters and find the local listening address and port. Note the current values. These options may appear on different tabs in different releases.
-
Make sure settings persist
Save your settings, exit normally, and relaunch the app to check that they're still there. If settings reset every time, check folder permissions and make sure you're not running a different copy of the app.
A non-ASCII folder path isn't automatically the cause of a problem. It can affect how some external components handle paths, but first check whether the logs point to a path or file-reading error. To test, exit the app and copy the entire folder to a short path using English characters, then try again. Keep the original folder so you can restore your subscription and settings. Network shares, synced folders, and protected system directories are more likely to cause write-permission or file-lock issues.
3. Import a Subscription and Choose a Node
A subscription URL retrieves a list of nodes; it isn't the same as a link for a single node. Make sure you have the full subscription URL, then go to Subscription groups → Subscription group settings. Add a group, enter a name and URL, and save. If your interface shows a “+” button, it adds a subscription group—not a server configuration.
- Enter the URL: Remove any spaces or line breaks added when copying, but keep the URL's path and query parameters intact. Use a simple name such as “Main subscription”; don't include account details.
- Update the group: From the Subscription groups menu, select the update command for the group. If you don't have a working node yet, try updating without a proxy first. If a direct connection fails and you already have a working connection, try updating through the proxy.
- Check the result: Review the logs to see whether the request succeeded, then confirm the nodes appear in the group you just added. An empty list may mean the subscription has expired, the server returned no content, or the format isn't recognized by your version.
- Set an active node: Right-click a node in the server list and select Set as active server. A node appearing in the list doesn't mean it's the current outbound connection.
Choose the V2Ray protocol based on the node settings provided by your service and the capabilities of the current core. When you see fields for VLESS, VMess, TLS, or transport type, don't change the server address, port, user ID, or server name to “optimize” the connection. These settings must match the server. Updating the subscription may also overwrite manually edited nodes.
- VLESS: The protocol itself doesn't encrypt payloads. Security depends on accompanying mechanisms such as TLS, so the protocol name alone can't tell you whether a connection is configured correctly.
- VMess: Keep your system clock accurate; a significant time difference can affect authentication. Don't assume an authentication failure is caused by the local proxy port.
- Core compatibility: v2rayN's interface and the core are separate layers. Switching interface packages usually won't help if the core doesn't support a particular configuration.
4. Configure the System Proxy and Check Local Ports
After confirming the active node, open v2rayN's System Proxy menu and select Auto configure system proxy. Test with a browser that respects system proxy settings. This changes the Windows proxy settings, but doesn't guarantee that every app will use them. Terminal tools, games, and apps with their own proxy settings may need separate configuration.
The local listening port and the remote server port are different. This guide uses 127.0.0.1:10808 as an example, but ports vary across releases and older configurations. HTTP, SOCKS, and mixed listeners may also use separate ports. Before running the command below, confirm that the port accepts HTTP proxy requests; don't use a SOCKS-only port as an HTTP proxy.
curl.exe --proxy http://127.0.0.1:10808 --head --max-time 15 https://example.com/
- Connection refused: First check for an incorrect local port, a core that hasn't started, or a failed listener. The request usually hasn't reached the remote node.
- Timeout or handshake error: Check the core logs for remote connectivity, authentication, transport settings, and system time. A browser error page alone isn't enough to identify the cause.
- Received an HTTP response: The request received a response, but that doesn't prove that all domains or apps are using the proxy.
This command explicitly specifies a proxy, so it doesn't depend on whether your terminal reads the Windows system proxy settings. If the command works but the browser doesn't, check browser extensions, custom proxy settings, and bypass rules. If the browser works but the terminal doesn't, check the tool's proxy options or environment variables. When you're done using the proxy, select Clear system proxy in the client before exiting. Otherwise, Windows may keep pointing to an address that no longer has a listener.
5. Test V2Ray Nodes and Verify Connectivity
Don't judge a V2Ray node by a single latency number. TCP connection checks, real request tests, and download speed tests measure different things. A successful TCP check doesn't confirm authentication, and low latency doesn't guarantee high sustained throughput. For a first-time setup, use the server list's right-click menu to run a test labeled “real connection” or “latency,” then open a known reachable page in your browser.
| Test result | What it tells you | What to check next |
|---|---|---|
| TCP test succeeds, but the actual request fails | The server port may be reachable; authentication and transport are still unverified | Check user settings, the TLS server name, and core logs |
| Actual request succeeds, but the browser fails | The node works, but the app's proxy path may differ | Check system proxy settings, browser extensions, and bypass lists |
| Some domains work, others don't | Routing, DNS, or restrictions on the destination site may be involved | Check which rules match and how the destination domain resolves |
| All nodes report a local listening error | Check the shared local environment before investigating remote nodes | Check port conflicts, process status, and file permissions |
When comparing nodes, keep the test destination, routing mode, and network conditions the same. Test a small number of candidates first to avoid triggering rate limits with too many concurrent requests. Download speed tests can use significant data, so check your provider's billing terms if your plan has a data cap. Repeat tests to account for occasional fluctuations, but don't treat one result as a node's fixed performance.
6. System Proxy vs. v2rayN TUN Mode
v2rayN's TUN mode uses a virtual network interface to capture traffic that matches its rules. It covers traffic differently from the system proxy. First get the system proxy working; consider TUN only if an app ignores system proxy settings or you need to capture more traffic. This helps distinguish node issues from problems with the virtual interface, routing, or DNS.
Choose based on whether apps follow the system proxy
System proxy
- Start with System Proxy → Auto configure system proxy.
- For browsers and apps that follow system proxy settings.
- The main app usually doesn't need to run as administrator.
- Test terminals separately with an explicit proxy option.
TUN mode
- First check whether your release supports TUN and what components it requires.
- May require administrator permissions, a service, or a virtual interface.
- After enabling it, check DNS, routing, and local network access.
- If something fails, disable TUN and compare with a system proxy test.
Choose based on the traffic you need to capture, not on which mode is “faster.” Keep your original settings and change one thing at a time.
If you already use another VPN or virtual network adapter, TUN may be affected by the default route, DNS, or interface priority. Don't enable multiple traffic-capture tools and then change all your routing settings at once. Take particular care in remote desktop sessions: changing routes can disconnect you. Have a local recovery option ready and know how to disable TUN.
7. Troubleshoot Crashes, Permissions, and Port Conflicts
Start troubleshooting with the first meaningful error in the logs. A missing interface, core startup failure, subscription request error, and inaccessible web page are four different problems; “download it again” doesn't explain all of them. Note the failing step, selected interface package, system architecture, and exact error before trying the targeted fixes below.
No window opens after double-clicking. Is a runtime missing?
First check Task Manager for a running process and see whether the window is just hidden in the system tray. If there's a clear missing-runtime message, install the runtime version and architecture required by the release. If a WPF package asks for the Desktop Runtime, the standard .NET Runtime isn't a substitute. If there's no message, check Windows Event Viewer → Windows Logs → Application for an error at the relevant time.
The logs say a port is in use. How do I find the cause?
Run the listening-port query below in PowerShell, replacing 10808 with the port you're using. Find the process by its PID in Task Manager under Details. If it's another v2rayN instance, close the extra instance normally. Don't force-quit an unfamiliar system process.
It works in an English-named folder. Does that mean the original folder is unusable?
It only shows that the two runs used different environments; it doesn't prove that non-ASCII characters caused the problem. Compare folder permissions, file integrity, whether the folder is synced, and security software logs. Use the specific path error in the logs to guide your diagnosis.
Is it safer to always run as administrator?
Usually not for a standard system proxy setup. If the logs say the app can't write its configuration, move it to a writable folder. If TUN requires elevated permissions, follow the current release instructions. Running as administrator won't fix an expired subscription, a remote timeout, or incorrect authentication settings.
The app starts, but it can't find the core files. What should I check?
Make sure you extracted all files, then check Windows Security → Virus & threat protection → Protection history. If you find a block, verify the file source and review the risk details; don't disable all your security protection. Also check whether your package requires you to provide core components separately.
Get-NetTCPConnection -State Listen -LocalPort 10808 |
Select-Object LocalAddress, LocalPort, OwningProcess
No results usually means there was no TCP listener on that port at the time. If you do get a result, verify the listening address and process—don't rely on the port number alone. After changing a local port, save the settings and reload the core, then configure the system proxy again. Update any proxy addresses you've entered manually in your browser or terminal.
8. Back Up Before Upgrading and Verify Your Setup
Before upgrading, exit v2rayN normally and make sure its core processes have stopped. Then back up the existing working folder. Check the release notes for Desktop and WPF configuration migration; don't assume any two folders can be merged or overwritten safely. Backups may contain subscription URLs and node credentials, so keep them somewhere private rather than uploading them to a public cloud drive.
- Main app: Starts and exits normally, and settings are still saved after relaunch.
- Subscription: The group updates successfully, the active node is clear, and the logs show no repeated parsing errors.
- Core: The local listener starts successfully, with no port conflict or missing-file errors.
- Proxy: Browser results and explicit proxy command results can be compared, and routing rules behave as expected.
- Exit: Clear the system proxy when you're done. If you enabled TUN, confirm the interface and routes return to normal.
That's the v2rayN setup process on Windows. What matters now isn't which interface you installed, but whether the node, core, routing, and apps are all configured consistently. To use the same service on Android, check the download page for v2rayNG or v2flyNG. v2rayNG uses the Xray core, while v2flyNG uses the V2Fly core; check protocol support for each one. Update the v2rayNG subscription separately—node changes on your desktop won't sync to another device.