Uses a modern cross-platform UI built with the Avalonia framework. A good starting point for a first install or if you want a consistent interface across desktop operating systems.
zip archive · extract before running the installer
Uses a Windows-focused WPF interface and is the stable classic edition. Choose it if you're already familiar with the original window layout, menus, and system tray controls.
zip archive · Windows-only interface
Install the client, then import a subscription
Extract the entire zip file to a local folder, then run the installer inside it. Don't launch it from the archive preview. After startup, open “Subscription Group Settings,” add your subscription URL, save it, and select “Update All Subscriptions (without proxy).” If your current network can't reach the subscription URL, verify the URL and your network conditions before changing the update method.
Select a working profile, then enable “Set system proxy automatically.” For everyday browser use, start with the system proxy; there's no need to enable Tun right away. Before switching between the Desktop and WPF editions, export or back up your configuration. Exit the old instance before testing the new one to prevent both programs from changing the system proxy or competing for the same port.
Windows requirements and installation checks
Check
What to look for
What to do
Processor architecture
x64 packages are available on this page
Go to Settings → System → About and check System type.
Operating system and runtime
Requires a Windows environment supported by the release
Check compatibility on older systems. If a runtime is missing, follow the installer's instructions.
Permissions and traffic routing
Standard proxy and Tun have different permission requirements
Tun uses a virtual network adapter and may require administrator privileges. You don't need to run the client as an administrator for normal startup.
This page doesn't specify one minimum Windows version for every release. Follow the current package's installation prompts. If startup fails, note the message and troubleshoot by symptom in Troubleshooting.
macOS downloads
Open About This Mac and choose Apple Silicon or Intel based on the chip listed.
Choose this package if About This Mac lists an Apple M-series chip. Use the package that matches your processor architecture to avoid differences caused by translation layers.
Choose this package if About This Mac lists an Intel processor. Don't decide based only on the computer's appearance or purchase year; the two types of devices use different app architectures.
dmg disk image · x64
Install in the Applications folder
Open the dmg and follow its instructions to move the app to the Applications folder, then launch it from there. If macOS shows a security alert the first time you open it, verify the file's source and the reason for the alert, then follow the system's confirmation steps. Don't disable system protections entirely just to launch the app.
After importing a subscription, test the system proxy with one profile. The system proxy mainly affects apps that honor that setting; it doesn't route all device traffic. If you need Tun, review the permission, virtual network adapter, and routing requirements first. Before updating the app, exit the old process and keep a configuration backup. Uninstalling the app and deleting its configuration are separate actions.
macOS requirements and installation checks
Check
What to look for
What to do
Chip
Apple Silicon uses arm64; Intel uses x64
Open About This Mac from the Apple menu and check the chip or processor field.
Operating system version
Requires a macOS version supported by the current desktop release
On older systems, check compatibility first. Matching the chip architecture doesn't guarantee OS version compatibility.
App and network permissions
Grant permissions for the features you use
Test the standard proxy first, then configure Tun and grant related permissions if needed.
Changing chip architecture doesn't transfer your configuration. When moving to another device, export your subscription groups and custom rules separately. After importing, check local paths, listening addresses, and proxy mode.
Android downloads
Start with v2rayNG. Most mainstream phones released since 2015 use arm64; check your device architecture if you're unsure.
For devices that support arm64-v8a apps. Most newer Android phones can start with this package, but some devices support only specific app architectures.
Supports multiple architectures and is useful when you can't confirm your device's architecture. Universal doesn't mean compatible with every Android version; the app's requirements still apply.
Add a subscription and approve VPN access
After downloading the apk, allow installation only for the browser or file manager you're using, as prompted by Android. Open v2rayNG, go to “Subscription Group Settings,” add the URL, then return and select “Update Subscription.” Choose a profile and tap Connect. Approve the VPN connection request from Android, then test access in an app.
Phones typically can't run multiple VPN services at once. If the connection fails, check whether another VPN service is active, then review the logs. If it often disconnects when the screen is locked, check battery management and background activity restrictions. Don't assume background limits, an expired subscription, and an incompatible configuration are all package issues.
For Android devices that support arm64 apps. Choose this alternative if you need the v2fly core and your configuration is compatible with its features.
Choose this package for alternative architecture support based on your device. Before switching, check whether the protocols and transport settings in your subscription are supported by this core.
Know the difference between client and core capabilities
v2rayNG and v2flyNG are both graphical clients, but they use different core families and don't support identical configurations. A similar interface doesn't mean every share link works in both. If an imported configuration contains unsupported fields, check its protocol, transport, and security settings. For settings such as REALITY, confirm that the selected core supports them.
Each app manages its own configuration and system permissions. When trying the alternative client, stop the existing connection before importing and testing in the new app. Subscription URLs may contain access credentials; handle them carefully when backing up, taking screenshots, or sharing, and never include the full URL in public feedback.
Android requirements and installation checks
Check
What to look for
What to do
App architecture
Prefer arm64; consider universal if unsure
Check the app architectures supported by your device, not just its processor name.
Operating system version
Must meet the selected apk's installation requirements
If Android reports incompatibility, check whether the cause is the OS version or architecture.
Installation and connection permissions
Installation and VPN permissions are required
Set installation permissions separately for each source. Approve the VPN request when prompted on first connection.
Background activity
System battery settings can interrupt persistent connections
Adjust background restrictions as needed and watch for increased battery use.
If an update reports a signature conflict, back up your existing configuration and check where the apps came from before proceeding. Don't uninstall first and look for a backup afterward. Switching clients also won't fix an expired or unreachable subscription URL.
Linux downloads
Check your distribution's package format first, then choose x64 or arm64. These are graphical desktop clients.
For desktop systems that use deb packages and meet the dependency requirements, such as Debian and Ubuntu-based distributions. amd64 and x64 refer to the same architecture class.
For systems that use rpm packages and meet the release's dependency requirements. The same package format doesn't guarantee compatibility with every distribution; check your package manager's prompts first.
Use your system's software installer to handle dependencies
Open the package in your file manager and install it with your distribution's software installer. If dependencies are missing, check which components are required and whether they're available for your distribution; don't force the installation past dependency checks. Choose the small arm64 link for arm64 devices. x86_64 and aarch64 correspond to x64 and arm64, respectively, and aren't interchangeable.
After launching the graphical interface, import a subscription and check routing before choosing a proxy mode. Desktop environments vary in how they handle system proxy settings. If an app isn't using the proxy, check whether it reads the desktop's system proxy settings. Tun involves network devices and permissions, so test it separately after a standard connection works. Running the entire desktop client with elevated privileges isn't a general solution.
Linux requirements and installation checks
Check
What to look for
What to do
Processor architecture
x64 or arm64
Check the architecture field in your system information and choose the matching package.
Package format
deb or rpm
Use your distribution's package format and confirm that the available dependency versions meet the requirements.
Graphical environment
Requires a working desktop session and related components
This download isn't intended for headless, command-line-only servers.
Traffic routing
Depends on the desktop environment, apps, and permissions
Test the system proxy and Tun separately; they're different modes, not the same setting.
Exit the client and save your configuration before upgrading. If your package manager refuses to install, note your distribution version, architecture, and dependency message, then troubleshoot in the System Guides. Don't repeatedly overwrite the configuration directory.
Setup steps after installation
Import a subscription, then test the connection
Downloading the client is only the first step. Check your configuration, traffic routing, and access results separately to narrow down issues faster.
Subscriptions and configuration
Save the URL, then update
Adding a subscription URL doesn't automatically fetch a configuration. Save the URL, run an update, check that entries appear in the group, then select a profile. If the subscription returns no content, check that the URL is valid, your network is working, and the subscription format is supported. Reinstalling the client won't fix an invalid URL.
Share links and subscription URLs serve different purposes. A share link usually imports a single profile; a subscription fetches and updates multiple profiles. Updates may replace entries generated by the subscription. Before customizing them, check where changes are saved and what an update will overwrite.
On desktop, test the system proxy first; on Android, confirm the VPN service is running. Check whether a commonly used app connects as expected, then adjust routing and DNS. The system proxy affects only apps that honor it. For broader traffic routing, see the Tun guide.
Change one setting at a time when testing. Note what happens before and after connecting, and distinguish DNS failures, connection timeouts, and invalid configuration fields. After disconnecting, check that the system proxy has been restored so leftover proxy settings aren't mistaken for a network problem.
Start by checking the symptoms. For connection and routing issues, see Troubleshooting.
Which should you choose: the Windows Desktop or classic WPF edition?
For a first install, start with the v2rayN Desktop edition, which uses a modern cross-platform interface. If you prefer the familiar Windows menus and workflows, choose the classic, stable WPF edition. Both downloads are x64 packages. Back up your configuration before switching, install and test each edition separately, and don't let both instances control the system proxy at the same time.
Should you download the Android arm64 or universal version?
Most mainstream phones released since 2015 use arm64, but check which app architectures your device actually supports. If you can't confirm the architecture or the arm64 package is incompatible, try the universal version. If installation still fails, check the Android version, available storage, and signatures of any existing app instead of repeatedly switching packages.
Why can't I connect after installation?
The download includes the client, not a ready-to-use server configuration. Import a valid subscription or share link, update the subscription, and select a profile. Then set the system proxy or approve the Android VPN request. Check the subscription's validity, your device's time, and the connection logs; troubleshoot each issue the logs report.
What should you save before updating the client?
Use the client's backup or export feature to save your configuration first, including subscription groups, routing rules, DNS, and proxy mode. Exit the running client, then install the package for your operating system and architecture. After updating, test one profile before restoring custom settings. Don't delete the existing configuration directory.
What if the download won't start or the installer won't open?
Check your browser's download history to see if the download was paused, blocked, or saved elsewhere. Check your connection and available disk space, then download again and make sure the file matches your operating system and architecture. Extract Windows zip files first; use dmg on macOS, apk on Android, and deb or rpm on Linux as appropriate for your distribution. Don't disable system protections to bypass an unfamiliar security warning.