v2rayN
Two interfaces, one client: v2rayN. Desktop is the newer cross-platform UI; WPF is the classic, stable version with a familiar Windows layout.
Choose your operating system, then your architecture. Use v2rayN on desktop and v2rayNG on Android, or choose v2flyNG to suit your configuration needs.
The clients are free to use. You’ll need to provide your own subscription and node configuration.
Two interfaces, one client: v2rayN. Desktop is the newer cross-platform UI; WPF is the classic, stable version with a familiar Windows layout.
| Check | What to look for |
|---|---|
| CPU architecture | Both downloads are x64 packages for compatible 64-bit Windows systems. |
| Windows compatibility | Use a Windows version that still receives system updates. Check the selected release package for its minimum supported version. |
| Runtime requirements | Runtime dependencies may vary by release. If a component is missing, note its name and address that specific requirement. |
| Permissions | Standard proxy settings and TUN have different permission requirements. You don’t need to enable TUN for a first install. |
Once the download finishes, fully extract the ZIP to a writable folder, then run the installer from there. Don’t launch the program from the ZIP preview: dependency files may not extract correctly. After installation, open the client from the Start menu or its install folder. Make sure the main window opens normally before importing a subscription.
You don’t need to install Desktop and WPF at the same time. If you already use the client, back up subscription groups, routing, and DNS settings first. Don’t assume every setting will migrate automatically when switching interfaces. To compare them, stop the running client first so both instances don’t compete for the same local port. If you hit a port conflict, check whether another instance is still running in the system tray.
After importing a configuration, select a node and then set the system proxy. The system proxy affects apps that follow the system proxy settings; it doesn’t automatically route traffic from every app. Test web access before adjusting routing. For a full walkthrough of the GUI, see the Windows installation and version guide.
First check the chip in About This Mac. Choose Apple Silicon for an Apple M-series chip, or the Intel package if it shows an Intel processor.
| Check | What to look for |
|---|---|
| Chip type | Apple M-series Macs use arm64; Intel Macs use x64. |
| macOS version | Use a macOS version that meets the selected release’s requirements. Check the installer prompt for the minimum supported version. |
| Package format | DMG disk image. Open it and follow the on-screen instructions to copy the app. |
| System permissions | You may need to approve access in System Settings on first launch or when changing network settings. |
Open the downloaded DMG and move the client to Applications, then launch it from there. Don’t keep running the app from the mounted disk image; this can cause confusion with updates, file paths, or system permission records. Once the app is copied, you can eject the disk image. The installer and the copied app are separate items.
If macOS blocks the first launch, verify the app name and download source, then check the prompt under System Settings > Privacy & Security. Only approve an app you intended to install; don’t disable system-wide security protections just to install one app. If macOS reports that the app is incompatible, check your system version instead of repeatedly trying packages for different chips.
After opening the client, import and update your subscription, then select a node. System proxy and TUN are different ways to route traffic. For your first test, use one method and confirm that your browser works before changing other settings. If you’ve used another network tool, stop its connection and check whether the system proxy still points to an old local address before troubleshooting the current client.
Recommended for Android. Most mainstream phones released since 2015 can use arm64, but check the ABI supported by your device’s operating system.
For configurations that require the V2Fly core. Check that the node’s protocol and transport combination is supported; the node name alone doesn’t confirm compatibility.
| Check | What to look for |
|---|---|
| System architecture | The arm64 package requires arm64-v8a support. A 64-bit processor doesn’t necessarily mean the operating system is 64-bit. |
| macOS version | Your device must meet the minimum Android version for the selected APK. Check the system installer prompt. |
| Install permissions | Allow installs from this source only for the browser or file manager you use to open the APK. |
| Connection permission | On the first connection, approve the system VPN request. Avoid running another VPN connection at the same time. |
Once the download finishes, open the APK from your system’s Downloads list or file manager. If prompted to allow installs from this source, verify which app opened the file before granting permission. You can revoke it after installation. If you see “App not installed,” read the specific error. Common causes include an outdated Android version, a mismatched architecture, or a different signature from an existing app.
Don’t uninstall the old client before backing up its configuration. If you run into a signature conflict, export any configuration you can restore and make sure you can still access your subscription URL before deciding whether to reinstall. arm64 and Universal are package variants, not proxy modes. Switching packages won’t fix an expired subscription, an unreachable server, or incompatible protocol settings.
Before connecting for the first time, import and update your subscription, select a node, then tap Connect. Approve the system VPN prompt when it appears. If the connection drops when the app goes into the background, check battery optimization, background activity permissions, and your device maker’s power-saving settings. Don’t connect with v2rayNG and v2flyNG at the same time. Disconnect the current client before switching to avoid confusion about which app is routing traffic.
Check your distribution’s package format and CPU architecture first. deb and rpm are package formats, not performance tiers; don’t install a package just because its file extension looks familiar.
| Check | What to look for |
|---|---|
| Desktop environment | This is a GUI client and requires a Linux desktop session that can run the app. |
| Package format | Debian- and Ubuntu-based systems generally use deb; RPM-based systems use rpm. Check that your distribution’s dependencies are compatible. |
| Architecture names | amd64 and x86_64 correspond to x64; arm64 and aarch64 correspond to 64-bit ARM. |
| Permissions and dependencies | Installing requires package management permissions. TUN also requires the relevant network permissions; the package manager checks dependencies. |
Check the architecture in your system’s device information, then open the downloaded file with your distribution’s software installer. The installer will report dependencies, conflicts, or unsupported package formats. Address these warnings instead of forcing the install. Some older distributions may lack system components required by the current package; switching to another package format won’t necessarily help.
After installation, launch v2rayN from the application menu. If no window appears, check the desktop environment’s error message and see whether another client instance is already running. System tray behavior varies by desktop environment, so a missing tray icon doesn’t necessarily mean the app failed to start. Check the app window and running processes to confirm.
Not every Linux desktop app follows the system proxy settings. After importing a subscription, test the connection with an app known to support the system proxy before deciding whether to use an in-app proxy or TUN. Note your existing settings before changing how traffic is routed. If you have multiple proxy tools enabled, stop the others first to avoid conflicts between local ports and routing rules.
A successful installation only means the client is ready. Check your node configuration, traffic routing method, and routing rules separately. Work through them in order to avoid changing multiple settings at once.
Read the complete Getting Started guide →Updating the client, refreshing a subscription, and switching nodes are three different actions. A client update changes the program and its bundled components; a subscription update fetches the node configuration provided by your service; switching nodes changes the current outbound. When a connection fails, first identify which layer is affected—you don’t need to reinstall right away. If only one node is unavailable, try another node from the same subscription and check the specific error in the logs.
Before upgrading, note which settings currently work and save your subscription URL, custom routing, and DNS settings. Exported configurations may contain credentials; keep them somewhere you control and don’t upload them to public forums. Before sharing logs for troubleshooting, redact subscription URLs, user IDs, and server credentials. Include only the error context needed.
Before upgrading, disconnect and exit the client. After installation, check whether subscription groups and the default mode were preserved. Test with your existing node first, then try new features. If you update the client, switch nodes, change DNS, and enable TUN all at once, it’s hard to tell what caused a problem. Change one thing at a time and keep a way to roll back; it’s easier to troubleshoot than repeated reinstalls.
Not sure which of the three clients to choose? Start with the client comparison. If you’re already connected and want to adjust routing, TUN, or DNS, see the user guide. This page focuses on choosing an installer; you don’t need to configure every advanced option on your first install.
For a first install, try Desktop, which uses a newer cross-platform interface. WPF is the classic, stable version for Windows users who prefer the familiar layout. Both downloads are x64 packages; install either one. Back up subscriptions and custom settings before switching.
Most mainstream phones released since 2015 can start with arm64, but check which ABI the operating system supports. If your device runs a 32-bit OS or you’re unsure of its architecture, try the universal version. If installation fails, check the Android version, whether the download completed, and whether an older install has a different signature.
Open About This Mac from the Apple menu. Choose Apple Silicon if it shows an Apple M-series chip, or the Intel package if it lists an Intel processor. Open the DMG, follow the on-screen instructions to move the client to Applications, then launch it from there.
The client manages configurations and connections; the installer does not include a subscription service. Get a valid subscription URL or node share link, import and update it in the client, then select a node and proxy mode. Subscription URLs contain access credentials and should not be shared publicly.
Export or back up subscription groups, custom routing, DNS settings, and other personal configurations. Note your current proxy mode, then disconnect and exit the client. After upgrading, check that your settings remain and test with your existing node and mode before changing anything else.
Make sure the download is complete, the file format matches your operating system, and the CPU architecture is supported. Fully extract Windows ZIP files first. On macOS, check the prompt under Privacy & Security; on Android, check install permissions and whether an older app has a different signature. On Linux, review dependency conflicts reported by the package manager instead of forcing the installation.
Still having connection or configuration issues? Visit the Help Center.