Choose v2rayN for desktop and v2rayNG for Android. Check your operating system and processor before selecting a package.
Free to useOpen sourceGraphical configuration
Choose by platform
Clients and downloads
Each download button links to a specific installer. Minimum system requirements may change between releases. Check the items below before choosing a package; don’t rely on a single OS version as a compatibility check.
Desktop is the newer cross-platform UI; WPF is the classic, stable version. If you’re new to v2rayN, start with Desktop. If you’re used to WPF, you can stick with the classic interface. The interface and proxy protocol are separate; the interface name doesn’t tell you whether a protocol is supported.
Both downloads here are x64 archives. After downloading, extract the entire archive to a local folder, then run the installer inside. Don’t launch it from the archive preview. If the installer reports a missing runtime, follow the instructions for that release; don’t download similarly named components from untrusted sources.
Export your configuration and close the old instance before switching interfaces. Running both versions on the same port can cause a conflict. If the old client’s tray icon is still visible, make sure it has fully exited.
Open About This Mac from the Apple menu and check the chip or processor listed. Choose Apple Silicon for an Apple chip or the Intel build for an Intel processor. Don’t choose based only on the computer’s age or appearance; models from different generations can use different architectures.
Open the downloaded DMG, then copy the app to Applications and launch it from there. If a security alert appears the first time you open it, make sure the download is complete and the architecture matches, then follow the app-specific instructions under Privacy & Security. You don’t need to disable system-wide security to open one app.
You’ll still need to import server configuration after launching the client. The system proxy only affects apps that use system proxy settings. If a browser works but another app connects directly, the package may not be the problem. Check that app’s proxy behavior and the client’s routing rules.
Most mainstream phones released after 2015 use arm64. Still, make sure the device’s operating system supports that architecture. Some devices have a mismatch between processor and OS architecture. If you’re unsure, choose the universal build. It includes components for multiple architectures and is usually larger.
v2rayNG uses the Xray core and supports configurations that require its protocols and transport features. The first time you connect, Android will ask you to approve VPN access. This permission creates a local traffic tunnel; it does not provide remote server configuration.
When installing an APK, allow installation from only the browser or file manager you’re actually using. You can revoke this permission in system settings afterward. If another VPN app is running, resolve the connection conflict before starting the client.
Choose this alternative client if you need compatibility with V2Fly configurations. v2flyNG and v2rayNG use different cores. Similar names don’t mean their configuration fields are fully interchangeable. Before importing, check the configuration’s protocol, transport layer, and security options.
Choose an architecture as above: use arm64 if your device supports it, or consider the universal build if you’re unsure. The universal package supports more processor architectures; it doesn’t add protocols the core lacks or bypass system requirements.
To move from another client, import a supported share link or subscription, then restore your routing and DNS settings one by one. An app’s internal data directory is not a suitable format for direct migration between different clients.
Android system requirements
Check
Package and runtime requirements
Processor and OS
The arm64 package requires an OS that supports the architecture. If you’re unsure which architecture your device uses, check system compatibility before choosing the universal package.
Operating system
Check the APK installer and current release requirements. Minimum requirements can differ between clients.
Installation permissions
Allow installs from the source you actually used to download the APK. Check for signature conflicts with existing apps and make sure you have enough storage.
Connection permissions
Approve the system VPN permission on startup. Don’t let multiple VPN apps handle the connection at the same time.
Background operation
If the connection drops when the screen locks, check battery optimization, background restrictions, and client logs rather than repeatedly downloading a different package.
The release label on a card and the installer filename may come from different manifest fields. Don’t use the filename alone to identify the installed version; check the app’s information screen after installation.
Choose the package format for your distribution, then select the processor architecture. Debian- and Ubuntu-based systems typically use deb; Fedora- and RHEL-based systems typically use rpm. x64 is commonly labeled amd64 or x86_64, while arm64 may be labeled aarch64. These architectures are not interchangeable.
Open the downloaded file with your distribution’s package installer and review its dependency prompts before continuing. The same package format does not guarantee compatibility with every release of a distribution; check system libraries and desktop runtime requirements. If dependencies are missing, don’t hide the problem by forcing installation.
v2rayN is a graphical client that requires a desktop session. After installation, launch it from the application menu and check that the configuration directory is writable and the logs look normal. Whether an app uses the system proxy depends on the desktop environment and the app itself. TUN also involves permissions and network routing.
Client package, server configuration, and connection mode
The client manages configuration and starts a local proxy service. Server configuration determines where to connect, which protocol to use, and how to authenticate. Installing the app only prepares the local software; it does not provide a subscription or server account. Use configuration you obtained and are authorized to use, and confirm that its protocol, transport, and security options are supported by the selected core.
Project V is the technical ecosystem behind related proxy tools. V2Fly and Xray are separate core implementations. v2rayN provides a graphical desktop interface, while Android clients v2rayNG and v2flyNG use their respective cores. The interface manages settings and provides controls; the core handles protocols and traffic. When switching clients or upgrading, consider configuration compatibility rather than comparing names alone.
First setup: import a configuration, then choose a proxy mode
Once you have a subscription link or a server share link, use the corresponding import option in the client. Subscriptions are useful for managing groups of configurations; a single link is suited to importing one specific server. After importing, check the server address, port, and protocol, then select the configuration you want to use. If nothing appears, check the link content and format before changing system network settings.
Desktop system proxy mode changes the system proxy settings, but only apps that honor those settings will use the proxy. TUN routes eligible traffic through a virtual network interface and depends on permissions, routing, and DNS settings. For your first setup, enable only one traffic-handling mode. Once it works, adjust other settings; changing several at once makes problems harder to diagnose.
The first time you connect on Android, the system will ask you to approve VPN access. After approving, check that the client started successfully, the selected server is correct, and the logs show no connection or DNS errors. A status icon only indicates a local service state; it doesn’t prove that every app can connect to a remote server.
Getting Started walks through importing a configuration, selecting it, choosing a proxy mode, and checking logs. For an explanation of individual fields, see the V2Ray JSON Configuration Manual. Start with a minimal working configuration, then add more complex routing rules so you can tell what each setting does.
For existing configurations: back up before updating
Before updating, export your server configurations and note subscription groups, local ports, routing rules, DNS settings, and custom parameters. Exported files and subscription links may contain credentials; store them somewhere you control and redact sensitive fields from screenshots when reporting an issue. Backups are for restoring your configuration, not for public issue attachments.
Quit the client before installing an update so background processes don’t keep using old files. After updating, check the server list and selected configuration before starting the local service and reviewing its logs. When switching clients, use a supported link or export format to import settings again instead of overwriting another app’s entire data directory.
If connections fail after an update, note where the failure occurs: the app won’t launch, the core fails to start, the subscription won’t download, DNS lookup fails, or the server can’t be reached. Each stage calls for different checks. Reinstalling repeatedly can erase useful diagnostic information and won’t fix an expired remote configuration or a local port conflict.
Download or installation failed? Troubleshoot by stage
If the browser hasn’t finished downloading, check the error in its download history and make sure you have enough free space. Opening an incomplete file can cause parsing or format errors. If the file downloaded but the installer won’t continue, check the processor architecture, OS version, installation permissions, and signatures of existing apps. Don’t assume every failure is a network issue.
If the app installs but won’t launch, check system messages and client logs, then verify the runtime environment, file permissions, and whether the configuration directory is writable. If it launches but won’t connect, check the server configuration, system clock, DNS resolution, and local listening port. Troubleshooting download, installation, launch, and connection issues separately helps avoid unnecessary changes.
Download troubleshooting
Package selection and updates FAQ
Check your operating system and architecture first, then review permissions, dependencies, and configuration migration.
Which should I choose for Windows: Desktop or WPF?
For a first install, start with Desktop, which uses the newer cross-platform interface. WPF is the classic, stable version for users who prefer the familiar Windows interface. Both are v2rayN; choosing an interface does not change the server protocol. Export your configuration before switching, and avoid running both versions on the same local port.
What’s the difference between Android arm64 and universal builds?
Most mainstream phones released after 2015 use arm64, but confirm that both the processor and operating system support it. If you’re unsure, choose the universal build. It includes components for multiple architectures and is usually larger. If parsing or installation fails, check the Android version, available storage, and whether an existing app has a conflicting signature.
Does downloading a client automatically provide server configuration?
The client installer does not include a usable server account or subscription. After installation, import a server configuration or subscription link that you obtained and are authorized to use. Then select a server, choose a proxy mode, and check the connection logs. Subscription links may contain credentials, so don’t share them publicly.
What should I do if macOS says the app can’t be opened?
Check your chip type in About This Mac and make sure the download has finished. Open the DMG, copy the app to Applications, then follow the app-specific instructions in Privacy & Security. Don’t disable system-wide security. If macOS says the app is damaged or incompatible with your architecture, check the package and system compatibility again.
Should I download the deb or rpm package for Linux?
Choose the package format used by your distribution: Debian- and Ubuntu-based systems typically use deb, while Fedora- and RHEL-based systems typically use rpm. Check the architecture too: x64 or arm64. A matching package format doesn’t guarantee that all system dependencies are met, so review the installer’s dependency and system library requirements.
What should I keep before updating the client?
Export your server configurations first, and note subscription groups, routing rules, local listening ports, and custom settings. Quit the client before installing the update. Don’t overwrite configuration directories when switching interfaces or clients. After updating, check the server list and logs before restoring the system proxy or TUN. Treat backups as sensitive data.