Choose your operating system, then your device architecture.
Use v2rayN on desktop and v2rayNG on Android. Both clients are free and open source; after installation, import a subscription or configuration you’re authorized to use.
The stable classic version with the Windows WPF interface. Choose it if you prefer the familiar menu layout and workflow.
Both downloads are ZIP archives. Once downloaded, extract the entire archive before running the installer inside. Don’t launch it from the archive preview. The interface version does not affect server connection quality; choose based on your workflow and compatibility with your environment.
Import a subscription before enabling the system proxy
It’s normal for the server list to be empty the first time you open v2rayN. Add a subscription URL under Subscription Groups, then select Update all subscriptions (without proxy). If you already have a working proxy and the subscription URL requires it, choose an update method that fits your network. Once the subscription updates, select a server and set System proxy to Set system proxy automatically.
If your browser still can’t reach a site, first check whether it follows the system proxy settings, then review the client logs. The system proxy affects only apps that read this setting; it doesn’t route every program through the client. Before closing or switching clients, clear the existing system proxy so your system doesn’t keep pointing to a local port that is no longer active.
DESKTOP / APPLE SILICON & INTEL
macOS client
Check the chip under About This Mac; don’t guess the architecture based on when the computer was bought.
Choose this for a Mac listed with an Intel processor under About This Mac. Both packages serve the same purpose; the difference is processor architecture.
Open the DMG, drag v2rayN into the Applications folder, and launch it from there. Don’t keep running it from the mounted disk image; eject the image after copying the app. Keeping the app in the same location also helps maintain consistent update and permission settings.
Handle first-launch prompts and proxy permissions
macOS may show a security alert the first time you open a downloaded app. Verify the source and make sure the download completed, then follow the prompt to go to System Settings → Privacy & Security and allow the blocked app to open. Don’t bypass the issue by disabling system-wide security protections. If macOS explicitly says the app is damaged, download it again and check compatibility.
Import a subscription and select a server before enabling the system proxy. If requests aren’t reaching the client, check the proxy settings for your active network service under System Settings → Network, and make sure another proxy tool isn’t changing them. For initial troubleshooting, run just one client and test the system proxy and TUN separately; enabling both at once can make problems harder to isolate. See the macOS installation and setup guide for complete steps.
ANDROID / ARM64 & UNIVERSAL
Android client
Start with v2rayNG. Consider v2flyNG if you need to use an existing V2Fly configuration.
An alternative if you’re unsure of your architecture or can’t install the arm64 package. Includes components for multiple architectures, so the file is usually larger.
v2rayNG uses the Xray core and suits most first-time Android setups. After installing, add a subscription group and update the subscription, then select a server to connect. On first launch, Android asks for permission to establish a VPN connection. This authorization lets the client handle your device’s traffic; verify the app before allowing it.
The version shown in the current release listing doesn’t match the filename: the listing above shows the release value, while the APK filename is 2.3.11. Check About in the client to confirm the installed version.
Choose this if you’re unsure of your device’s architecture. The universal package doesn’t change core features or add compatibility that the operating system lacks.
v2flyNG uses the v2fly core and is suited to users who need to keep using V2Fly configurations. The two Android clients don’t have identical core capabilities, so the same subscription URL doesn’t guarantee that every configuration works with both. Before switching, check the required protocols and transport, and disconnect the other client’s VPN first.
First connection and background operation
Installing the APK doesn’t connect you automatically. Import a subscription, update the server list, and select a server before connecting. Once connected, you can check for the VPN icon in Android’s status bar. It only confirms that the local VPN service is running; it doesn’t prove the remote server is available. Open a site and check the client logs to verify requests are succeeding.
If the connection often drops when your screen locks, check the system’s battery optimization and background activity restrictions for the client. Menu names vary by manufacturer, so adjust only the settings related to the client; there’s no need to disable system-wide battery management. Before testing another client, disconnect the current one so the apps don’t compete for Android’s VPN service. See the Android installation and setup guide for detailed steps.
DESKTOP / DEB & RPM
Linux client
Check the distribution’s package format first, then confirm whether your system is x64 or arm64.
Open the downloaded file with your distribution’s software installer and review any dependency checks. deb and rpm are different package formats; don’t try to convert one into the other by changing the file extension. arm64 and aarch64 generally refer to the same 64-bit ARM architecture; amd64 and x86_64 refer to common x64 desktop processors.
Desktop proxy settings and app-specific proxy settings
Proxy settings vary across Linux desktop environments. After importing a subscription and starting a server, test with a browser that follows desktop proxy settings. Other apps may need their own HTTP or SOCKS proxy settings. Use the listening address and port shown by the client; don’t copy port numbers from a guide for another operating system.
For a first install, make sure the standard proxy setup works before trying TUN. TUN involves network devices, routing, and DNS, and its behavior can vary with permissions and distribution. If enabling it causes network problems, turn TUN off and return to a reproducible baseline before checking settings one by one. See the Linux installation and setup guide for the full procedure.
Downloads and setup
What to check before and after installation
The installer, subscription configuration, and local proxy are separate parts of the setup. Checking them in order makes issues easier to isolate than reinstalling repeatedly.
Before downloading: check your OS and architecture
Check your device’s processor type in system information, then choose the matching installer. The same operating system can run on different architectures, and you can’t identify a device’s architecture just by whether it’s a laptop, desktop, or ARM device. An architecture mismatch usually prevents installation or launch; it isn’t related to your subscription.
Keep the browser’s download record until the download finishes, then open the file. If you end up with a web page instead of the expected ZIP, DMG, APK, deb, or rpm, check the download task and network status first. Don’t just change the file extension and try to install it.
Before updating: back up your configuration and rules
Note your subscription groups, current routing mode, and any custom listening settings. If the client can export its configuration, use that feature. Configuration may contain subscription URLs and credentials, so store it somewhere you control and don’t share it publicly in troubleshooting screenshots.
Quit the old client before installing the new package. After updating, check whether your subscriptions were retained, then verify routing and proxy status. When moving between platforms, re-import your subscriptions and restore settings one by one instead of copying the entire old data directory to another system.
After connecting: verify requests and logs
Select a server before enabling the traffic routing method you need. On desktop, test the system proxy first; on Android, approve the system VPN request. A connection button showing that the client has started or a status bar icon only reflects the local service. Make an actual request to confirm the remote connection works.
If your browser can’t access a site, check separately whether the subscription updated, whether the app uses the proxy, and whether the logs show errors. Port conflicts, authentication failures, and connection timeouts are different issues. Use the logs to narrow down the cause before changing settings or contacting the configuration provider.
Download FAQs
Choosing and updating installers
This section covers download and installation issues. For connection troubleshooting, see the FAQs.
Which v2rayN version should you choose: Desktop or classic WPF?
For a first install, choose Desktop for the newer cross-platform interface. If you prefer the classic Windows interface or want to keep your familiar workflow, choose the stable classic WPF version. Both are v2rayN; install only one to start, and back up your configuration before switching.
Should you download the arm64 or universal Android version?
Most mainstream phones released after 2015 use arm64, but check your device's actual architecture and OS support. If you're unsure or the arm64 installer reports incompatibility, try the universal build. It includes components for multiple architectures and is usually larger; it does not make connections faster.
Can you connect right after downloading the client?
The installer contains the client only, not a subscription or server configuration. You’ll need a subscription URL or configuration file that you’re authorized to use. Import it, choose a server, then enable the system proxy or VPN connection for your platform. If the connection fails, check the subscription, local proxy settings, and client logs separately.
What if macOS says the app can’t be opened?
First, make sure the download matches your chip and move the app to Applications. After verifying the download source, follow macOS prompts in System Settings → Privacy & Security to allow the blocked app to open. If macOS says the app is damaged, download it again and check system compatibility. Don’t disable system-wide security protections.
Will updating the client keep your existing subscriptions?
Whether your configuration is retained depends on how the client is installed, its data directory, and differences between versions. Back up the client configuration before updating, and note your subscription groups and routing settings. Quit the old app before installing the update. When switching interface versions or moving between operating systems, don’t assume you can simply overwrite the entire configuration directory.
The version shown on this page differs from the installer filename. Which should you trust?
The version shown on the page may not match the release information for each architecture. To confirm the installed version, check About in the client; filenames distinguish the download packages. If your configuration depends on a specific version, back it up and confirm the new package’s actual version and configuration compatibility before replacing the existing one.