Desktop uses a modern cross-platform UI, making it a good fit for new installations and anyone who wants a consistent experience across desktop systems. The classic WPF edition is a stable Windows client for users who prefer its familiar window layout and workflows. Choose based on interface and familiarity, not subscription service quality.
The download is a ZIP archive. Extract it completely to a writable folder, locate the installer and follow its prompts. Don’t launch the app from the archive preview or extract only the executable, as other files may be required. If an older version is running, quit the client before installing to avoid locked files or two proxy configurations running at once.
After installation, open subscription group settings, add and save your subscription URL, then update it. Seeing profiles in the list doesn’t mean your system traffic is using the proxy. Select an active profile and configure the system proxy for your use case. TUN is optional; verify the basic connection first, then handle virtual network adapter permissions and routing.
Go to Settings → System → About and check your system type. Both downloads on this page are x64, not 32-bit packages.
OS compatibility
Check the system and runtime requirements for the installer you’re using. Verify compatibility on older systems instead of relying on the file extension alone.
Files and permissions
You’ll need a writable folder for extraction and enough disk space. Requirements may differ for the installer, system proxy and TUN.
Network setup
Have a complete subscription URL or share link ready for first launch. Before enabling TUN, check for conflicts with existing VPNs and virtual network adapters.
If the installer reports a missing runtime, install the specific component it identifies rather than guessing based on its name or adding several components at once. If the interface opens but connections fail, the issue is likely in configuration. Start by checking the subscription update result, active profile and system proxy status.
macOS:v2rayN
Check the chip details in About This Mac, then choose Apple Silicon or Intel.
Open About This Mac from the Apple menu. If it lists an Apple chip, such as an M-series chip, choose the Apple Silicon arm64 package. If it lists an Intel processor, choose x64. Select by your Mac’s chip, not your browser, system language or subscription protocol. Both downloads are DMG disk images; you only need one.
When the download finishes, open the disk image and follow the window instructions to move the app to Applications. Launch it from there, not from the mounted image; eject the image once installation is complete and the app opens normally. Before updating, quit the client and keep your existing settings, then replace the app to avoid running old processes alongside new files.
If a security alert appears on first launch, confirm the download source and file type, then read the system’s explanation. Grant permission only to an app you’ve verified. Don’t disable system-wide security just to open one program. On managed devices, installation and network extension permissions may be controlled by your administrator; follow your organization’s policies.
v2rayN’s system proxy and TUN use different methods to route traffic. Test the connection in a browser through the system proxy first, then decide whether other apps need TUN. Subscription groups, routing and DNS still require separate configuration. Choosing the right architecture solves installation and startup issues, not connection setup.
Choose arm64 for Apple Silicon and x64 for Intel, based on the chip or processor shown in About This Mac.
OS compatibility
Make sure the app package supports your installed macOS version. If it won’t launch, keep the full system alert for troubleshooting.
Installation location
You need write access to the app installation folder. Mounting a DMG does not install the app.
Proxy permissions
The system proxy and TUN may need additional permissions. On managed devices, check your organization’s network requirements first.
If the app launches normally but some programs still connect directly, check whether they use the system proxy. Don’t assume this means you chose the wrong architecture. For TUN, DNS or routing issues, see the relevant sections in the full guide.
Android: v2rayNG and v2flyNG
Start with v2rayNG. Consider v2flyNG only if you need V2Fly kernel compatibility.
v2rayNG uses the Xray core and is the recommended Android client on this page. Most mainstream phones released since 2015 can start with the arm64 package, but a 64-bit-capable processor doesn’t necessarily mean the OS can run 64-bit apps. Some devices still use a 32-bit OS. If you can’t confirm your app architecture, choose the universal version rather than relying on your phone’s release year.
Once the APK downloads, open it from your browser’s download history or a file manager to install it. Android may ask you to allow installs from that browser or file manager; grant permission only to the source you’re using. If the app won’t install, check OS compatibility, available storage and conflicts with an older app’s signature before clearing any existing client data.
After first launch, add a subscription group, paste the full URL and update it, then select a profile. When you start a connection, Android will request VPN permission. This grants traffic-routing access; it doesn’t mean the subscription is valid. Test by opening the service you need rather than relying on the status bar icon.
v2flyNG uses the V2Fly core and is suited to users who specifically need its behavior or have a compatible configuration. It’s a separate client, not another architecture of v2rayNG. The two apps may support different core features. Check compatibility first, especially if your configuration uses protocol extensions; similar names don’t make them interchangeable.
Choose between arm64 and universal using the same guidance above. Before switching clients, keep your subscription URL and any settings you need, then import and verify them in the new app. If you keep both apps installed, stop the other app’s VPN service before connecting to avoid mistaking a traffic-routing conflict for an invalid subscription. Choose an alternative client for a specific need; there’s no need to migrate data just to try it.
Choose arm64 if your system supports arm64 apps. If you’re unsure or the device uses another supported architecture, start with the universal version.
OS compatibility
Check the APK installer’s minimum OS requirement and your device’s prompts. The universal version does not lower the app’s minimum OS requirement.
Installation permissions
Allow installs from the app you use to open the APK. After installation, you can revoke that app’s install permission.
Connection and background operation
The app needs VPN permission to connect. For longer sessions, check battery optimization and background restrictions, and allow the client to run in the background if needed.
If the connection drops when the screen locks, first check whether the system is suspending the app, then review the client logs. Battery settings, an expired subscription and a remote connection failure are different issues; noting when the problem occurs can help narrow it down.
Linux:v2rayN
Match your distro’s package format first, then choose x64 or arm64.
Distros such as Debian and Ubuntu that use the deb package system generally need the deb package; distros using RPM need rpm. Matching the package format doesn’t guarantee compatibility with your dependencies or OS version. RPM packages may also target a specific distro family. Check the software installer’s dependency and compatibility notices, and don’t force an installation past errors.
Most 64-bit Intel or AMD desktop PCs use x64, shown as amd64 or x86_64 in the filename. Devices running a 64-bit ARM system use arm64, shown as arm64 or aarch64. Choose based on the running system, not just the processor brand. The packages on this page are graphical clients and require an available desktop session.
Open the downloaded file with your distro’s software installer and follow the prompts. If it asks for dependencies, first make sure your distro’s software sources are available, then resolve them. If the app installs but won’t open, keep the startup error and desktop environment details for troubleshooting. Changing file permissions alone won’t fix a compatibility issue.
Linux desktop environments don’t all handle system proxy settings the same way. After setting a system proxy in the client, check whether the apps you use actually follow it. TUN can route more traffic, but it involves virtual network adapter permissions, routing and DNS. Enable it only after basic setup works, and check your existing network manager settings.
Choose deb or rpm based on your distro, and check the package’s OS version and dependencies. Format isn’t the only requirement.
CPU architecture
x64 corresponds to amd64 or x86_64; arm64 corresponds to aarch64. The package architecture must match your running system.
Desktop environment
You need a desktop session that can run graphical apps, plus any runtime libraries required by the installer.
Installation and network permissions
Installing system packages usually requires administrator permission. TUN also requires the necessary virtual network adapter and network configuration permissions.
Install the client and open its main window before importing a subscription. If dependencies are missing, focus on resolving the installation issue first. Don’t change DNS, routing and subscription settings at the same time, or you’ll have too many variables to isolate the cause.
What to do after installation
Import a subscription and verify the connection
Installation is just the first step. Confirm your profile works before changing how traffic is routed.
Prepare a connection profile
The client manages profiles and starts connections; the installer itself doesn’t provide a ready-to-use subscription. Get an authorized subscription URL or share link from your service provider. Subscription URLs often contain personal access credentials. Copy the full URL, including all parameters, and don’t share it publicly or show it in screenshots.
Subscription URLs and individual share links may have different import steps. Desktop clients usually manage subscriptions in subscription group settings; Android clients add them through a related menu. For a single share link, use the relevant clipboard or scan option. Update after importing, then confirm the current client core supports the profile type.
Select an active profile. On desktop, start by enabling the system proxy; on Android, start the connection and approve the VPN permission prompt. Test with a service you actually need to access and check that requests succeed. An app showing as active doesn’t prove that your target app is using the selected profile.
If some desktop apps ignore the system proxy, consider TUN. Before enabling it, note your existing network settings and check the permission, routing and DNS requirements. Change one setting at a time. If something breaks, turn off the feature you just enabled and check whether the basic connection recovers before investigating further.
Before updating the client, use its backup or export feature to save subscription groups, routing rules, DNS settings and personal preferences. Configuration files may not be reusable across interface versions or different clients. During migration, use the app’s supported import method; copying the entire directory doesn’t guarantee that every setting will work.
Note your current package type and installation location. Quit the client and disable TUN before updating. Afterward, check that your subscription groups are still there, update the subscription and verify the active profile. Backups may contain service URLs and access credentials, so store them securely. When asking for help, share only error details with sensitive information removed, along with the relevant system details.
v2rayN, v2rayNG and v2flyNG are all part of the open-source client ecosystem. Project V, V2Fly and Xray provide useful context, but client names, core names and subscription services are different things. When choosing a package, focus on your OS and architecture; when troubleshooting a connection, focus on the protocol, configuration and network environment. Keeping these issues separate makes troubleshooting clearer.
Choosing a package and troubleshooting downloads
Download FAQs
Expand to see how to resolve each issue. For connection problems, see the Troubleshooting FAQ.
Desktop or classic WPF for Windows: which should you choose?
Desktop uses a modern cross-platform interface, while the classic WPF edition offers a familiar, stable Windows interface. For a new installation, start with Desktop; choose WPF if you prefer its traditional layout. Both downloads are x64 packages, so check your system type first.
How do you choose an arm64 package for macOS or Android?
On macOS, check About This Mac: choose arm64 for Apple Silicon and x64 for Intel. On Android, check which app architectures your system supports. Most mainstream phones released since 2015 can start with arm64, but some still run a 32-bit OS. If you’re unsure, choose the universal version.
Why do you still need a subscription or connection profile after downloading?
The client manages profiles and connections; the installer does not include a ready-to-use service subscription. Get an authorized subscription URL or share link, import and update it, then select a profile and configure the system proxy or connection mode.
What should you check if the installer reports an incompatibility or won’t open?
First check that your OS, CPU architecture and package format match, then review the full system or installer error. Extract Windows ZIP files completely, check Android installation permissions, and verify Linux dependencies and distro compatibility. Changing subscriptions won’t fix an installation issue.
What settings should you keep before updating the client?
Use the client’s backup or export feature to save subscription groups, routing, DNS and other settings, and note the package type you use. Quit the client and disable TUN before updating. Backups may contain subscription credentials; keep them somewhere secure and don’t share them publicly.
What should you do if a download doesn’t finish?
Check your browser’s download history to see whether the connection failed, the download was blocked or the file was saved. Check available storage and your network, then try again. If your organization’s network policy blocks the download, contact your administrator. Download failures and subscription update failures happen at different stages and need separate troubleshooting.