For desktop, choose v2rayN. On Android, start with v2rayNG; choose v2flyNG if you need the V2Fly core.
Choose your operating system first, then your CPU architecture. All three clients are free and open source; subscription URLs and node configurations must be obtained separately. Package names, client versions, and core versions are different things—choose an installer by platform, architecture, and package format.
Windows installers
One v2rayN, two interfaces. Desktop is a good place to start.
v2rayN
Recommended
Windows · x64 · 7.24.1
Desktop
A newer cross-platform interface. A good fit for first-time installs and anyone who wants a similar experience across desktop operating systems.
The Windows installers on this page are x64. Check “System type” under Settings → System → About.
Windows version
Use a Windows 10 or 11 release that still receives updates. For older systems, first check compatibility with the client and its runtime requirements.
Permissions
A system proxy is not the same as TUN. Virtual network adapter features may require administrator permission.
After downloading the ZIP, extract it to a regular folder and run the installer from there. Don’t launch it from the archive preview. Choose a location the app can write to. If you’re upgrading, exit v2rayN from the system tray first to avoid two instances competing for the same local listening port.
On first launch, open Subscription Group → Subscription Group Settings, add a group name and subscription URL, then update the subscription. When nodes appear in the server list, select one as the active server. Finally, use the system tray menu to set the system proxy. Simply starting the client won’t change how your browser connects unless you select an active node and route the browser’s traffic through it.
Desktop and WPF may arrange their menus differently, and copying program files alone isn’t a reliable way to migrate settings. Note your subscription groups, routing choices, and local ports, then use the backup or export feature in your current version. If the app reports a missing runtime component, follow the installer’s instructions to resolve the dependency instead of repeatedly installing a different interface version.
macOS installers
Check your chip in About This Mac, then choose the matching DMG.
v2rayN
macOS · DMG · 7.24.1
Apple Silicon
If About This Mac shows an Apple M-series chip, choose arm64 for the native installer.
Open Apple menu → About This Mac and check the Chip or Processor field.
Windows version
Use a macOS version supported by the current client. On older systems, check the minimum version shown at launch.
Network permissions
System proxy and TUN are different ways to route traffic. Check the system’s permission prompts before enabling network extensions or elevated access.
Open the DMG and copy the app to Applications, then launch it from there. Avoid running it long-term from the mounted disk image, which can complicate upgrades, permission records, and launch locations. If macOS blocks the app, verify the download source and review the prompt, then check the relevant entry under System Settings → Privacy & Security. Don’t disable system-wide security for a single install.
After importing a subscription, select an active node and then set the proxy. To check the system proxy, open System Settings → Network, select your current network service, then go to Details → Proxies. Confirm the settings match the client’s local address and port. An app’s own proxy settings may override system settings, and a working browser connection doesn’t mean every app is using the proxy.
Before upgrading, quit the client from the menu bar, then replace the old app in Applications. If the new version starts with an empty configuration, check that you opened it from the original location and are using the same user account. If permission prompts keep appearing, make sure you aren’t launching the app from a DMG or an older copy. Avoid keeping multiple indistinguishable copies running.
Android installers
Choose a client first, then select arm64 or Universal. Each app manages its own configuration.
v2rayNG
Recommended
Android · Xray core · 2.2.6
The go-to choice for most Android users. Supports subscription management and node import, and routes traffic through Android’s VPN interface. Supported protocols depend on the core included with the app.
Most mainstream phones released after 2015 use arm64. If you’re unsure, choose Universal. Check the ABI supported by your device’s operating system.
v2flyNG
Alternative
Android · V2Fly core · 1.10.31
For users who need a V2Fly configuration. This is a separate app from v2rayNG. Before switching, check that the target core supports your node’s protocol and transport settings.
arm64 is for 64-bit ARM systems. Universal supports more architectures, but the installer is usually larger.
System requirements and setup
Check
What to look for
OS compatibility
Follow the Android installer’s compatibility notice for the APK. A 64-bit-capable processor doesn’t guarantee the operating system provides a 64-bit runtime.
Install permission
Allow the browser or file manager you use to open the APK to install unknown apps. You can revoke this permission after installation.
VPN interface
On first connection, approve Android’s VPN request. Typically, only one app using this type of VPN interface can route traffic at a time.
After downloading the APK, open it from your downloads or file manager. Settings names vary by device; search Settings for “Install unknown apps” and grant permission only to the app opening this file. If the installer says “App not installed,” check available storage, Android version, CPU architecture, and the signature of any existing version. Don’t delete the old app without checking first.
In v2rayNG, open Subscription Group Settings from the side menu, add the URL, then update the subscription from the main menu. If you already have a node share link, use the clipboard import option in the add menu. When the node appears, select it, tap Connect, and approve Android’s VPN request. Updating a subscription and connecting to a service are separate steps—check both.
If the connection drops in the background, check battery and background activity restrictions under the app’s system App info. Some devices limit network activity when the screen is locked. First check whether the connection stays stable in the foreground, then adjust the relevant permissions. When switching to v2flyNG, import the subscription URL or a compatible share link again; app data isn’t synced between the two clients.
Linux installers
Choose deb or rpm for your distribution, then confirm x64 or arm64.
v2rayN
Linux desktop · 7.24.1
deb package
For Debian, Ubuntu, and other distributions that use deb packages. The default download is for common 64-bit Intel and AMD desktops.
For distributions that use RPM packages. The package may also require specific system library versions; a matching format doesn’t guarantee compatibility with every distribution.
Check your distribution’s software center or documentation to see whether it uses deb or rpm. Don’t guess based on the desktop appearance.
Processor architecture
x64 corresponds to amd64 / x86_64; arm64 corresponds to aarch64. Check About or system hardware information.
Desktop and dependencies
Requires a graphical desktop environment and the system libraries required by the installer. Check the dependency results shown by your package manager.
Open the downloaded package with your system’s software installer. Review the dependency and compatibility notices before confirming installation. If dependencies can’t be met, first check whether your distribution version matches the package requirements. Don’t force past dependency errors, and don’t assume that RPM packages install across distributions just because they share the same format.
After launching v2rayN, import a subscription and select an active node. On Linux desktops, the desktop environment usually manages the system proxy, and apps vary in how they honor it. In GNOME, check Settings → Network → Network Proxy; look for the equivalent setting in other desktop environments. Terminal tools and apps with their own network stacks may need separate configuration.
TUN uses a virtual network device and may require elevated permissions; it isn’t the same as a system proxy. For your first test, use one traffic routing method and verify the local port, node, and routes before enabling anything else. Before upgrading, stop the old process and back up your configuration. Switching between deb and rpm or changing architecture isn’t a substitute for a proper migration, and won’t fix connectivity issues with the server itself.
Three checks after installation
Installation is just the first step. Check the subscription, node, and traffic routing in order to narrow down problems.
Subscription imported
Make sure the subscription URL is complete and the expected nodes appear after updating. If the update fails, check the log to tell an invalid URL from a network request failure or an unsupported format. Re-importing the same group won’t fix the underlying error.
A subscription group isn’t an active node. Select a server before connecting, then check the log for port conflicts, missing protocol fields, or handshake errors. A name in the list is just a label—it doesn’t guarantee the service is available.
A system proxy only works for apps that honor the setting; TUN routes traffic through a virtual network adapter. Confirm which method is enabled, then check the routing rules. A website connecting directly may be the result of split routing, so don’t judge the setup only by whether a page loads.
The client interface, core protocol support, and server settings all affect compatibility. Project V, V2Fly, and Xray are related parts of the ecosystem, but their configurations aren’t interchangeable by default. If you use custom transport or security settings, check that the target client’s core supports them before migrating nodes. To compare the three clients, see client comparison.
Download and installation FAQs
Answers about choosing an installer, upgrading, and connecting for the first time. For other network issues, see frequently asked questions.
Does the client download include working servers?
Clients manage configuration and route traffic; the installer does not include a server service. Get a subscription URL or node share link you are authorized to use, then import it into the client. Subscription URLs may contain credentials, so don’t post them publicly or include them in screenshots.
Which should I choose for Windows: Desktop or WPF?
For a first install, start with Desktop, which uses a newer cross-platform interface. WPF is the classic, stable version for users who prefer the familiar Windows workflow. Both are v2rayN, and the installers on this page are x64. Back up your configuration before switching versions, and don’t run both clients at once.
Should I download arm64 or Universal for Android?
Most mainstream phones released after 2015 are likely to use arm64, but check the ABI supported by the operating system rather than relying on the processor name. If you’re unsure, choose Universal. If installation fails, check the OS version, confirm the download completed, and make sure the app signature matches the installed version.
Do I need to uninstall the old version before upgrading?
Back up your configuration, then exit the old client. You can usually install over the existing version if the app, signature, architecture, and installation method all match. If Android reports a signature conflict, don’t uninstall right away—you could lose app data. Confirm the installation source and export your configuration first. On desktop, keep a copy of your configuration before changing the install location or interface version.
The install succeeded, but websites won’t load. Should I download it again?
Check the node, subscription, and traffic routing before reinstalling. In v2rayN, confirm the active node in the server list, review the log at the bottom, and check the system proxy. On Android, make sure VPN access is allowed and the service is running. Reinstalling won’t fix port conflicts, expired subscriptions, an incorrect system clock, or invalid TLS settings.