Choose v2rayN for desktop and v2rayNG for Android. Check your operating system and CPU architecture before downloading the matching package. Subscription URLs and server configurations must be provided separately.
Free, open-source clientsDesktop and mobile platformsImport a subscription after installation
Windows Downloads
One client, two interfaces. Both downloads below are for x64.
v2rayN
Recommended7.24.1
Desktop uses a modern cross-platform UI; WPF is the classic Windows-only version. For a first install, start with Desktop. If you're used to WPF, you can stick with it.
Uses the Avalonia interface and is a good choice for a fresh desktop setup. Extract it to a dedicated folder, then run the installer included in the package. Don't launch it directly from the ZIP viewer.
Keeps the classic Windows workflow. If you already have settings, back them up before upgrading and follow the installer prompts. Don't overwrite files from the two interface editions in the same directory.
Subscription groupsSystem proxyRouting
System and installation requirements
Check
What to look for
System architecture
Both downloads on this page are x64. Check your system type under Settings → System → About.
System and runtime
Follow the installer's prompts for your Windows version and required runtime components. Install any missing dependencies first.
Permissions
Grant permissions as prompted during installation. TUN may require administrator access; using the system proxy is not the same as enabling TUN.
Package handling
The download is a ZIP package. Extract it before running the included installer, and make sure the configuration directory is writable.
After installation, open the main window and check that you can access Subscription Group Settings. If Windows reports a missing runtime component, follow the prompt to install it. This is separate from an expired subscription or a server timeout. Opening the interface does not mean your server configuration is ready, nor does it mean every app on your system will use the proxy automatically.
Choose between Desktop and WPF based on the interface and workflow you prefer—not because one version inherently provides a better connection. Connection quality also depends on your configuration, core support, routing, and network conditions. When switching versions, keep your subscription source and custom rules. Verify that they import correctly in the new version before removing the old one. See the user guide for details.
macOS Downloads
Check your chip in About This Mac and choose the package built for your Mac's architecture.
v2rayN
7.24.1
On macOS, v2rayN uses a cross-platform desktop interface. The Apple Silicon and Intel packages target different processors, not different feature sets. Check your Mac's architecture before downloading.
Choose this package if About This Mac lists an Apple M series under Chip. Using the native architecture avoids unnecessary translation; there's no need to choose the Intel package for compatibility.
Choose this package if About This Mac lists Intel under Processor. The arm64 package is not an alternative for Intel Macs. If the architecture doesn't match, return here and choose the right package.
Cross-platform desktop interfaceDMG installerChoose by chip
System and installation requirements
Check
What to look for
Apple Silicon
For an Apple M series chip, choose the arm64 DMG.
Intel
For an Intel processor, choose the x64 DMG.
macOS compatibility
Check the current release's macOS requirements during installation and startup. Older versions of macOS may need an update first.
Permissions and installation
Follow the instructions in the DMG to install the app in Applications. For system proxy or network extension access, follow the authorization prompts macOS actually displays.
Open the DMG and follow its instructions to install the app, then launch it from Applications. If you see a security warning the first time you open it, verify the download source and read the prompt before following the standard macOS authorization process. Disabling system security is not a normal installation step. Treat an architecture mismatch and macOS blocking an app as separate issues.
After importing a subscription, test the system proxy with an app that supports it. Some terminal tools, standalone network utilities, and apps with their own connection settings may not use the same proxy configuration. If you need broader traffic routing, read the TUN guidance and check permissions, DNS, and routes. Before quitting the client, check whether the system proxy has been restored so it won't point to a local port that is no longer running.
Android Downloads
Choose v2rayNG by default. Consider v2flyNG if your configuration requires the V2Fly core.
v2rayNG
Recommended2.2.6
An Android GUI client built on the Xray core. Most mainstream phones released after 2015 can start with arm64, but check the app architectures your device supports. Choose the universal package if you're unsure.
For devices that support 64-bit ARM apps. Most modern phones use this architecture, but a 64-bit-capable processor doesn't necessarily mean the operating system can install 64-bit apps.
For devices whose architecture you haven't confirmed. It includes more architectures and is usually larger. If arm64 reports an incompatibility, come back and choose this package.
An Android client for configurations that use the V2Fly core. Choose it based on the protocols and transport features your configuration requires; the client name alone doesn't guarantee compatibility. Xray-specific features are not necessarily available.
For devices confirmed to support arm64 apps. After installing, check the imported configuration, especially core-specific fields for protocols, transports, and routing rules.
For installations where the device architecture hasn't been confirmed. The universal package covers more architectures; it does not add protocol or configuration support beyond what the core provides.
System and installation requirements
Check
What to look for
App architecture
Choose arm64 if your device supports arm64-v8a; choose Universal if you're unsure.
Android version
Rely on the APK installer to check compatibility with your Android version. The phone's release year alone isn't enough to determine compatibility.
Install permission
Follow the system prompt and grant permission to install apps only to the browser or file manager you're using for this installation.
Network access
When connecting for the first time, approve the Android VPN permission. Other VPN apps running at the same time may compete for the same connection slot.
If Android says the APK can't be installed, first identify the cause: an unsupported OS version, an architecture mismatch, or a different signing key on an existing install. If an installed app with the same name can't be updated, don't uninstall it right away; doing so may remove local subscriptions and custom settings. Back them up in the existing app first. The version information inside the app and the package name come from separate release manifest fields, so the file name alone can't tell you whether it will update an existing app.
After installation, import a subscription you're authorized to use, choose a server, start the connection, and approve the system prompt. If the connection drops when the app is in the background, check battery optimization and background activity restrictions, which are controlled by Android and the device manufacturer. v2rayNG and v2flyNG use different cores, so check configuration compatibility when switching. See the client comparison for details.
Linux Downloads
Choose a package format for your distribution, then match it to your x64 or arm64 architecture.
v2rayN
7.24.1
On Linux, v2rayN uses a cross-platform desktop interface and requires a working graphical desktop environment. deb and rpm are package formats, not connection modes. The primary downloads below are for x64.
For systems that use deb packages and meet the dependency requirements. Open it with your distribution's software installer; use the system package manager to resolve any dependency prompts.
For RPM environments that meet the package's build target and dependency requirements. The filename contains el10; that doesn't mean it can be installed directly on every RPM-based distribution.
Using an arm64 desktop?
Choose the package format used by your distribution. arm64 may also appear as aarch64 in RPM filenames; both refer to the same processor architecture here.
x86_64 corresponds to x64, and aarch64 to arm64. amd64 is a common label for x64 in deb packages.
Package format
Choose deb for Debian-based systems or rpm for RPM-based systems, then check the build target and dependency compatibility.
Graphical environment
For graphical desktop sessions, not command-line-only servers. System tray behavior depends on the desktop environment.
Permissions and dependencies
Let your system installer handle package dependencies and installation permissions. Configure TUN permissions according to the prompts from your client and distribution.
If the package manager reports a missing shared library, an unsupported distribution version, or an architecture error, resolve the compatibility issue first. Don't force-convert a different package format and treat it as a universal fix. Whether the GUI launches, the system tray appears, and the app starts with the desktop session are separate checks. A successful installation message doesn't guarantee that every feature is ready.
Not every app uses the Linux desktop's system proxy settings. Browsers may have their own proxy policies, and terminal tools may use environment variables or separate configuration. Start by testing with an app that explicitly supports the system proxy, then configure other programs as needed. If you switch to TUN, check DNS, routing, and permissions too. Avoid stacking multiple traffic-capture methods and then troubleshooting them blindly.
Setup steps after installation
The installer provides the client application. You still need to configure subscriptions, traffic entry, and routing rules separately.
Import first, then choose a server
Open the client and add your subscription URL under Subscription Groups. Give it a recognizable name, then update the group. Subscription URLs may contain credentials, so don't share them in public discussions, screenshots of logs, or shared documents. If you use multiple sources, create a separate group for each to make updates and troubleshooting easier.
Once servers appear in the list, select the one you want to use. A successful import only means the client read the configuration; it doesn't guarantee that the server is reachable. If an update fails, check whether the URL has expired, your device clock is accurate, and your current network can reach the subscription source. Reinstalling the app won't fix these issues.
The system proxy determines how apps that support it send traffic to the client. Routing rules determine which exit the traffic uses after it reaches the client. These settings do different things. Automatically configuring the system proxy won't route every app through the proxy or replace your existing routing preset.
For your first setup, keep the settings easy to understand. Confirm that one app can access the network, then adjust routing or enable TUN. Change one thing at a time and keep your original settings. If something goes wrong, note the steps that triggered it and check the relevant logs; that's easier to troubleshoot than changing the client, subscription, and rules all at once.
First identify whether the issue is package selection, installation compatibility, or connection configuration. For connection problems, see troubleshooting.
Windows: Desktop or WPF?
For a first installation, start with Desktop, which uses a modern cross-platform interface. WPF is the classic, stable Windows-only version for users who prefer its familiar workflow. Both offer an x64 download. Back up your settings before upgrading or switching, and don't mix program files in the same directory.
Which macOS package should I choose: Apple Silicon or Intel?
Open About This Mac from the Apple menu. If Chip shows an Apple M series, choose Apple Silicon (arm64). If Processor shows Intel, choose Intel (x64). Whenever possible, install the package that matches your Mac's architecture.
Should I download the arm64 or universal Android package?
Most mainstream phones released after 2015 can start with arm64, but check which app architectures your device actually supports. If you're unsure, or arm64 reports an incompatibility, choose the universal package. It includes more architectures and is usually larger.
Does downloading the client include a working server?
The client installer does not include a working server or subscription. You'll need a subscription URL or server configuration you are authorized to use, then add it through subscription groups or the import feature. After importing, select a server, choose a traffic entry method, and check your routing rules.
How can I keep my subscriptions and routing settings when upgrading?
Exit the client first, then use the backup or export feature available in your current version to save your settings. If migrating settings through the program directory, confirm which configuration directory your version actually uses. After installing, check subscription groups, routing, custom DNS, and local ports. Remove old files only after everything works.
Installed, but can't connect. Should I download it again?
First check for subscription updates, the selected server, your system clock, and the logs. Then confirm that the app is using the system proxy. System proxy and TUN are different traffic entry methods; if the client launches but can't connect, downloading the same installer again usually won't fix a configuration or network issue.