Choose your operating system, then check the processor architecture. Use v2rayN on desktop; for Android, v2rayNG is the recommended choice, with v2flyNG as an alternative.
All three clients are free and open source. The installer provides the interface and connection features; you’ll need to obtain your own subscription URL, server details and routing rules. Choose a download by platform below—importing configuration is a separate step.
WINDOWS / x64
Windows client
Desktop and WPF are different interface editions of the same client. Install one, and avoid running multiple instances that could both modify the system proxy.
v2rayN
7.24.1
Recommended
Desktop uses a newer cross-platform UI. The classic WPF edition offers a familiar Windows desktop interface and a stable option for those who prefer the traditional workflow.
Both downloads are ZIP archives. Extract the entire archive to a dedicated folder, then run the installer included in the package. Don’t launch it from the ZIP preview. After the first run, check the system tray to confirm the client is running before setting up a subscription and proxy mode.
Desktop and WPF may differ in their interface, menu names and configuration storage. If you need to migrate existing settings, use the client’s backup or export feature first; don’t overwrite another edition’s configuration folder. If the system reports a missing runtime component, follow the installer’s instructions instead of repeatedly switching nodes.
Windows pre-install checks
Check
Requirements and steps
Processor architecture
Both packages on this page are x64. Check Settings → System → About → System type to confirm your system’s architecture before downloading.
System and dependencies
Refer to the selected package’s notes and installer prompts for minimum Windows version, runtime components and driver requirements.
Install location
Choose a dedicated folder your account can write to. Before upgrading, quit the old instance and back up your existing configuration.
Connection mode
System proxy and TUN have different permission requirements. Start with the system proxy for a basic connection, then enable other modes if needed.
For the steps to import your configuration after downloading, see the v2rayN guide →
MACOS / arm64 · x64
macOS client
Open Apple menu → About This Mac to check your chip. Choose the matching DMG for Apple Silicon or Intel.
v2rayN
7.24.1
macOS / DMG
If About This Mac lists an Apple M-series chip, choose Apple Silicon. If it lists an Intel processor, choose Intel. Match the package to your chip rather than judging by the Mac’s appearance or purchase date.
Open the DMG and drag the app to Applications, then launch it from there. Don’t run the client from the mounted disk image long-term; ejecting it, upgrading and handling permissions can interfere with one another. Once the app has been moved and closed, you can eject the installer image.
If macOS shows a developer verification warning on first launch, confirm the package’s source and file type, then follow the steps under Privacy & Security. System proxy access and network extension access are separate permissions; grant only what your chosen mode requires. If the connection stops working after an upgrade, check whether the existing permissions are still active.
macOS pre-install checks
Check
Requirements and steps
Apple Silicon
If About This Mac shows an Apple M-series chip, choose the arm64 DMG.
Intel
If About This Mac shows an Intel processor, choose the x64 DMG.
System compatibility
Check the package notes for the minimum macOS version. If the app won’t launch, keep a record of the exact system error.
Permissions and location
Move the app to Applications. On first launch, grant system proxy and network permissions only as needed.
Choose a core ecosystem first, then select an architecture. Most mainstream phones released after 2015 use arm64, but confirm your system supports it before installing.
v2rayNG
2.2.6
Recommended · Xray core
Recommended for Android. Uses the Xray core; support for specific protocols, transports and security settings depends on the core version in the package and the client interface.
The arm64 package is for devices whose systems support that architecture. If you’re unsure which architecture your device supports, choose the universal build, which includes multiple architectures. Universal doesn’t mean compatible with every system version. If the installer reports a parsing error, first check that the download completed, then check system compatibility and architecture. Don’t rename the file extension to try to install it.
When you connect for the first time, Android will ask you to authorize a VPN connection. This permission creates a local network tunnel; it doesn’t mean your subscription is valid. Import a configuration, select a server and connect, then check the logs and test access. Other VPN apps on your device may conflict with the connection.
v2flyNG
1.10.31
Alternative · v2fly core
An alternative client built on the v2fly core. Choose it if your existing configuration relies on V2Fly behavior or you need to compare core differences.
v2rayNG and v2flyNG are separate packages with different cores, not the same app under different names. Check protocols, transports and security options in your configuration separately; a successful subscription import doesn’t guarantee that every setting is supported. For features such as REALITY, check support in the core you’re using.
Before switching clients, note your current routing mode, DNS settings and per-app proxy rules. Stop the current connection before testing another client to prevent both apps from competing for Android’s VPN tunnel. Each client stores configuration separately. After importing a subscription, check which configuration is selected.
Android pre-install checks
Check
Requirements and steps
Processor architecture
arm64 is usually the best choice. If you’re unsure whether your device supports it, consider the universal build and check the installer’s prompts.
System version
Check the APK notes for the minimum system requirements. The universal build does not bypass system version limits.
Install source
When installing an APK, follow the system prompt to allow app installs from your current browser or file manager. You can revoke this permission afterward.
Background operation
If the connection stops when you switch apps, check battery optimization and background restrictions before reinstalling the client.
Check your distribution’s package format first, then choose the system architecture. deb and rpm are package formats, not different feature editions, and aren’t interchangeable.
v2rayN
7.24.1
Linux desktop
For common x64 desktop systems, choose one of the packages below. Debian-based distributions typically use deb; RPM-based distributions use rpm. Confirm dependencies and compatibility with your package manager.
In package names, amd64 and x86_64 usually mean x64; arm64 and aarch64 mean 64-bit ARM. Don’t infer architecture from the device manufacturer, and don’t rename an installer to change its target. If the graphical installer reports dependency, architecture or package format issues, read its messages first.
Open the package with your distribution’s software installer and review dependency resolution before installing. A distribution label in the package name doesn’t guarantee it will run on every system using the same package format. If dependencies can’t be met, check compatibility between the package and your system. Don’t force installation or replace core system libraries.
After launch, check whether your desktop environment accepts system proxy settings. Some apps don’t use the desktop proxy and need the proxy address and port set in the app itself. TUN mode also requires permissions and route control. Establish a basic proxy connection first, then enable TUN if supported by your client.
Linux pre-install checks
Check
Requirements and steps
Package format
Choose deb or rpm for your distribution, then use the corresponding software installer to resolve dependencies.
System architecture
For x64, use an amd64 or x86_64 package. For 64-bit ARM, use an arm64 or aarch64 package.
Desktop and dependencies
This is a graphical client. Check the package notes for desktop environment, system library and minimum system requirements.
Permissions and network
Run as a standard user and test a basic proxy connection first. Grant permissions for TUN or system routing only if needed.
Installation success, readable configuration and a working connection are three separate checks. Work through them in order to avoid unnecessary downloads and reinstalls.
Start by checking the current state
On a first install, check whether the client opens and whether its logs show a core startup error. If the device already has a client, quit the old instance first to avoid a conflict on the local listening port. An installation failure points to the system or package; a startup failure points to the client, configuration or runtime environment; only an access failure calls for checking nodes, routing and DNS. Recording these separately makes the cause easier to find than changing everything at once.
Next, import a subscription or connection details
Enter a subscription URL you’re authorized to use in the client’s subscription manager or import menu. Save it, update the subscription, then select a configuration from the list. Subscription URLs may contain account identifiers—treat them as credentials and don’t include them in public screenshots or support requests. For a single connection, the protocol, address, port, transport and security settings must match the server; installation won’t fill these in automatically. If you use custom rules, save a copy of your current configuration before testing an import.
Finally, select a mode and test access
On desktop, start with system proxy mode. On Android, approve the VPN connection when prompted. After connecting, test with the apps you actually need and check the client logs. A working browser doesn’t mean every program is using the proxy, and a test utility can’t replace testing in your apps. For domain lookup failures, check DNS; for direct connections or blocked traffic, check routing order; for handshake errors, check connection settings and system time.
PACKAGE / UPDATE NOTES
Upgrades and installer records
Before upgrading, back up subscription groups, custom routing, DNS settings and local port details. Prefer the client’s export feature, and securely store any backup containing subscription information. Don’t delete the old configuration before confirming the new version works, and don’t assume that different interface editions can share a configuration folder. After upgrading, check that the existing configuration loads, then verify system proxy settings and network permissions before testing the connection.
The version shown on each card comes from the release field in the manifest; platform download links are resolved separately. During a release, the displayed version and filename may temporarily differ. Don’t edit URLs or filenames to look for another package. To confirm the installed version, check About or version information in the client. Keep the filename and error message in your download notes. Before sharing troubleshooting details, hide subscription URLs, server credentials and personal directory paths.
v2rayNG and v2flyNG use different core branches, and the core choice in desktop clients should also reflect the features you need. Switching cores won’t fix every connection problem. A shared protocol name doesn’t guarantee that security settings and transport fields are fully compatible. To compare support, read Xray and V2Fly core differences before changing the client or core.
PACKAGE / FAQ
Download and installation FAQs
These questions cover installers, architecture and upgrades. For connection issues, see FAQs.
Does downloading a client give me a working connection?
The client reads configuration and establishes a connection; the installer does not include a usable server configuration. After installation, you’ll need a subscription URL or connection details you’re authorized to use. Import them, select a configuration, and enable a proxy mode suited to your setup. Subscription URLs may contain access credentials—don’t share them publicly.
Which should I choose: arm64, x64 or universal?
Check the processor architecture reported by your system before choosing a package. Use macOS arm64 for Apple Silicon and x64 for Intel Macs. On Linux, choose x64 or arm64 to match your system. Most mainstream Android phones released after 2015 use arm64, but confirm that your system supports it. If you’re unsure, consider the universal build.
Do I need to install both the Desktop and WPF versions on Windows?
Usually, you only need one. Desktop uses a newer cross-platform interface, while WPF is the classic, stable edition. Back up your configuration before switching. Don’t run both instances at once with control of the system proxy or listening on the same local port. Interface details and configuration locations vary by version.
What should I check if a download is interrupted or the installer won’t open?
Check your browser’s download history to make sure the download finished, then confirm the file extension matches your platform. Extract Windows ZIP files first. On Android, allow installs from the current source. On macOS, mount the DMG and drag the app to Applications. If it still fails, note the exact system error and follow the installation guide to troubleshoot.
What should I keep before upgrading the client?
Use the client’s export or backup feature to save subscription groups, custom routing, DNS settings and local port details. Store the backup securely. Quit the old instance before upgrading. Afterward, check that the existing configuration loads, then verify system proxy settings, network permissions and subscription updates. Don’t delete the old configuration directory until you know how to restore it.
What if the version shown on the page doesn’t match the installer filename?
The displayed version comes from the manifest’s latest field, while the download link comes from the platform’s download field. They may temporarily differ during a release. Don’t alter filenames to guess at other installers. After installation, check the client’s About or version information to confirm what’s installed, then follow the package’s prompts to decide whether to update.