Choose v2rayN for desktop platforms and v2rayNG for Android. Select your operating system first, then check the processor architecture.
The installer contains only the client. Before using it, prepare a valid subscription URL or share link. For initial setup, see the user guide.
Windows clients
Both downloads are for x64 systems. Choose the interface you prefer; there’s no need to install both editions.
v2rayN
Recommended7.24.1
The Desktop edition features a next-generation cross-platform UI; the classic WPF edition retains the traditional Windows interface. Both offer a GUI for managing configurations. If you’re new, start with Desktop.
A familiar, established interface. Best for users who prefer the original menus and window layout.
System and installation requirements
Check
Requirements and guidance
System architecture
This page provides x64 packages. Check your system type under Settings → System → About. These downloads won’t work on 32-bit systems.
Windows version
Use a Windows release that still receives security updates. Check the installer prompt for the current package’s minimum requirements.
Runtime
If startup reports that the .NET desktop runtime is missing, check which version and x64 architecture are required. Don’t try to fix it by copying random DLLs.
Storage and permissions
After downloading, extract the entire ZIP before running the installer or launcher inside. The configuration directory must be writable. Confirm the installation directory in the setup wizard.
Extract, launch, and migrate
Don’t launch the program from the archive preview. Extract the entire archive to a separate folder first, then locate the installer. If a system security warning appears during installation or first launch, verify that the downloaded file matches the selected package and follow the system’s instructions. Don’t leave system protection disabled just to run the client.
When migrating from WPF to Desktop, back up your configuration in the old client and note your subscription groups, routing mode, and local listening ports. Quit the old instance before opening the new one, then verify the imported settings. Running both editions at once can cause local port conflicts or competing system proxy settings. A window opening successfully doesn’t mean proxy routing is working correctly.
After installation, save your subscription URL under Subscription Group Settings, then update it from the subscription menu. Select the configuration you want, choose a routing mode, and use the tray menu to select Auto-configure system proxy. The system proxy affects only apps that honor it; some apps need a proxy address configured separately. For details, see how to import a subscription and connect for the first time.
macOS client
Open About This Mac and choose a DMG based on the chip information, not the year you bought the device.
v2rayN
7.24.1
A desktop GUI client for managing subscription groups, routing rules, and system proxy settings. The two packages differ by processor architecture. Install the app before configuring it.
Choose this package if the Processor field in About This Mac shows Intel. The macOS version name doesn’t indicate the processor type.
System and installation requirements
Check
Requirements and guidance
Processor
Apple Silicon uses arm64; Intel uses x64. Choose the native architecture package whenever possible.
Windows version
Use a macOS release that still receives security updates. The current app package’s compatibility requirements determine the minimum version.
App location
Open the DMG, copy the app to Applications, then launch it from there. Don’t keep running it from the mounted disk image.
Permissions
Grant permissions when prompted to change system proxy settings or enable related network features. Standard system proxy settings and TUN require different permissions.
First launch and system proxy
Once the app is copied, you can eject the mounted DMG. If macOS says the developer can’t be verified, confirm the app’s source, then check System Settings → Privacy & Security for an option to allow this launch. The button’s location varies by macOS version, so follow the prompt on your system. There’s no need to disable security checks globally.
For initial setup, import a subscription and select a configuration before enabling the system proxy. If you cancel the permission prompt, the interface may still look normal even though the system proxy wasn’t set. Retry the action in the client and check the proxy settings for your current network service. Don’t rely on a selected menu item alone to confirm that the connection is working.
Quit the app before updating to avoid running old and new instances at the same time. After the update, check that your subscription groups, routing mode, and local ports are still there, then test with a browser. If the browser behaves differently from other apps, first check whether those apps honor the system proxy. Don’t immediately switch protocols or reimport the same subscription repeatedly.
Android clients
Start with v2rayNG. Consider v2flyNG only if you specifically need a V2Fly configuration.
v2rayNG
RecommendedXray core2.2.6
An Android GUI client that imports subscriptions and share links, routes traffic through an authorized system VPN connection, and supports routing and per-app proxy settings.
Most mainstream phones released since 2015 can use this package. Make sure the system supports 64-bit apps; processor marketing specs alone aren’t enough.
Choose this if you’re unsure of the architecture or the arm64 package reports an incompatibility. It supports more architectures and is usually a larger download.
v2flyNG
Alternative · V2Fly core1.10.31
For Android configurations that require V2Fly core behavior. Don’t assume every protocol parameter will work just because the subscription imports; check any extensions used by the server.
An alternative when the device architecture is unclear. Choosing Universal doesn’t change the core type or add features specific to another core.
System and installation requirements
Check
Requirements and guidance
System compatibility
Your Android version must meet the selected APK’s minimum requirements. If the installer says the system is too old, switching to Universal won’t fix the version limitation.
App architecture
Choose arm64 for ARM devices that support 64-bit apps. If you’re unsure, use Universal and check the installer’s message.
Installation permissions
Allow Install unknown apps only for the browser or file manager you’re using for this installation. You can revoke permission afterward if you like.
Connection permissions
The first connection requires approval for a system VPN request. Usually, only one active VPN can run in the same user profile, so disconnect any other VPN first.
Background activity
For a persistent connection, allow the client to run in the background in your system’s battery settings. Menu names vary by device manufacturer.
After installation, grant permissions and check app coverage
After downloading the APK, install it with the system installer. If you see “App not installed,” check the specific cause: architecture mismatch, an unsupported system version, insufficient storage, and a signature conflict are different issues. If an update fails, don’t uninstall the old version right away; that may delete local configuration. Back up your settings before troubleshooting.
Open the client, add a subscription group and enter its URL, then update the subscription. Select a configuration and tap Connect. Android will ask to create a VPN connection; approve the request to start routing traffic. The VPN icon means a local tunnel is active, not that the remote service is working. If you still can’t access sites, check the configuration and logs first, then review routing and DNS.
Per-app proxy settings determine which apps use the proxy tunnel. When filtering is enabled, distinguish between “proxy selected apps only” and “bypass selected apps.” If your browser isn’t included, the client may show as connected while the browser bypasses the proxy. After changing the filter, recreate the connection as prompted so the new scope takes effect. For the difference between core selection and protocol compatibility, see the protocol reference.
Linux client
Choose deb or rpm for your distribution, then check whether you need x64 or 64-bit ARM.
v2rayN
7.24.1
For Linux systems with a graphical desktop. deb and rpm are package formats, not routing modes. Installation also depends on the dependencies available for your distribution.
For distributions that use RPM package management. This file has an el10 build tag, so check distribution and dependency compatibility carefully before installing.
Requires a desktop session capable of running graphical apps. These packages are for using the desktop client, not for server deployment.
Package management
Choose deb or rpm for your distribution. Your system’s package installer must be able to handle that format and its dependencies.
Processor architecture
x64, x86_64, and amd64 refer to the same common desktop architecture. 64-bit ARM packages are labeled arm64 or aarch64.
Dependencies and permissions
Make sure the required graphical runtime, system libraries, and installation permissions are available. Don’t ignore dependency errors and force the installation.
Install with your software installer
Open the package in your file manager and use your distribution’s software installer to review its details, architecture, and dependencies. If the format isn’t recognized, first check whether you downloaded the wrong type, deb or rpm. If dependencies can’t be met, check your distribution version and repository status. RPM packages with a distribution-specific build tag aren’t necessarily compatible with every RPM-based system just because they share the same extension.
After installation, launch v2rayN from the applications menu and import a subscription. Linux desktop environments don’t all handle system proxy settings the same way: some apps follow desktop network settings, while others need a proxy configured in their own settings. To test, use an app that clearly supports proxy settings, confirm the local listening address and port, then decide whether another routing method is needed.
If you need TUN, first verify a standard configuration, then check the client’s permission and network requirements. Don’t run your entire desktop session with elevated privileges as a permanent workaround. Quit the old process before updating, and keep your personal configuration directory. If the app behaves unexpectedly afterward, troubleshoot graphical dependencies and configuration separately instead of repeatedly changing subscriptions.
Configuration steps after installation
Verify the configuration before routing app traffic. Change one thing at a time to make issues easier to identify.
01 · Configuration source
Get a subscription or share link
A subscription URL updates configurations in bulk; a share link usually imports one configuration. Either may contain access credentials, so don’t post it publicly in comments or screenshots. Check the source and expiration first, then choose an import method supported by your client.
02 · Import and select
Update the subscription and select a configuration
After saving the subscription URL, you still need to update the subscription. When configurations appear in the list, select the one you want and check its protocol, transport, and security parameters. If import fails, check format compatibility first; switching protocols at random won’t fix it.
03 · Route and verify
Enable the proxy and test your apps
On desktop, set the system proxy. On Android, approve the VPN request, then check the routing mode and app scope. Once everything works, note the settings. When you’re done, clear the system proxy or disconnect through the client so a stale local proxy address isn’t left behind.
Check your system, architecture, and installation method before troubleshooting connection settings.
For a first Windows install, should I choose the desktop or classic WPF edition?
For a first install, try the Desktop edition, which uses a next-generation cross-platform interface. The classic WPF edition has a traditional Windows interface and suits users who prefer the familiar workflow. Don’t run both editions at once. Back up your configuration before migrating, then check your subscriptions, routing, and local ports.
For Android, should I choose arm64 or Universal?
Most mainstream phones released since 2015 should use arm64, but make sure the system supports 64-bit apps. If you’re unsure of the architecture, or the arm64 package reports that it’s incompatible, choose Universal. It supports more architectures, but doesn’t make connections faster.
How do I tell Apple Silicon from Intel on macOS?
Open About This Mac from the Apple menu. If the Chip field shows an Apple M series, choose Apple Silicon; if the Processor field shows Intel, choose Intel. Download for your device’s actual processor, not based on the macOS version name.
Can I connect right after installing the client?
The installer doesn’t include a usable service configuration. You’ll need a valid subscription URL or share link. Import it and select a configuration, then enable the system proxy or authorize a VPN connection as appropriate for your platform. A successful subscription import doesn’t guarantee the server is reachable.
What settings should I keep before updating the client?
Use the client’s backup or export feature to save subscription groups, manual configurations, routing rules, and any necessary DNS settings. Note your local listening ports, then quit the old instance before updating. Backups may contain credentials, so store them somewhere you control.
How do I choose between deb and rpm packages on Linux?
Choose the package format for your distribution: Debian- and Ubuntu-based systems usually use deb, while distributions that use RPM package management use rpm. Then check the processor architecture: x86_64 corresponds to amd64, and 64-bit ARM to arm64 or aarch64. A matching package format doesn’t guarantee that dependencies are met, so check your package manager’s messages.