Choose your operating system, then your architecture. Use v2rayN on desktop; for Android, start with v2rayNG, or choose v2flyNG if you need the v2fly core.
The clients are free and open source. Import a valid configuration after installation; the installers do not include a subscription service.
Platforms and packages
Choose for your device
Use the system requirements table to narrow down your package choice. Check the selected release’s installation prompts for specific OS and runtime requirements.
The stable classic edition with a traditional Windows interface. Choose it if you’re used to its layout and want to stick with what you know.
The download is a ZIP archive. Extract all files to a writable folder before opening the installer or reading the included instructions. Don’t launch the app from the archive preview. Keep the full folder structure so the program can find its required components.
Subscription groupsSystem proxyRouting
Windows requirements and where to check
Check
Provided here
Before installing
Processor and OS
x64 Desktop and x64 WPF editions
Check your system type and Windows version in System Information.
Runtime components
Depends on the selected release
If prompted for a runtime, install the component specified in the package instructions.
Folder permissions
The fully extracted or installed folder
Make sure the app can write configuration, log, and update files.
Connection settings
System proxy or in-app proxy
Check the local listening port and close any other app using the same port.
For devices with an Intel processor. Don’t infer the chip type from the device’s appearance, screen size, or purchase year.
Open About This Mac from the Apple menu and check the Chip or Processor field. Open the DMG and follow its instructions to move the app into Applications, then launch it from there. This avoids updates pointing to a temporary mounted location.
This is usually the best choice for mainstream phones released after 2015. Make sure the OS supports 64-bit apps; the device’s release year is no substitute for checking its architecture.
Choose this for older devices, an unknown architecture, or when the arm64 package reports incompatibility. It includes components for multiple architectures and is usually larger.
v2rayNG uses the Xray core and is suited to Android users who need its supported protocols and transport options. After importing a share link, check that the address, port, protocol, and transport security settings are complete. A profile appearing in the list doesn’t guarantee its settings match the server.
Choose this when your device and OS support arm64 and your configuration is designed for the v2fly core. Make sure you have a specific reason to use this core before installing.
For devices with an unknown architecture or another supported architecture. The main difference from the arm64 package is the target architecture.
v2flyNG is an alternative client built on the v2fly core, not a drop-in replacement for v2rayNG. The two clients may differ in supported protocol fields and features. Before migrating, check your configuration dependencies; don’t assume Xray-specific settings will work unchanged.
These are graphical client packages for desktop environments. amd64 and x86_64 commonly refer to x64; arm64 and aarch64 refer to ARM64. Choose both the right package format and processor architecture.
Linux requirements and package formats
Check
Provided here
Before installing
Processor architecture
x64 / arm64
Check the system architecture. For a virtual machine, use the guest system’s environment.
Package management system
DEB / RPM
Check compatibility against your distribution, OS version, and software installer prompts.
Graphical environment
Desktop GUI client
Requires an active desktop session and the relevant graphical runtime dependencies.
Which apps use the proxy
Depends on the desktop environment and app
Check the client’s listener, desktop proxy settings, and each app’s own proxy options.
Install, upgrade, and migrate
Keep your configuration; then update your setup
When switching clients on the same device, distinguish the app files from the connection settings. Reinstalling isn’t the answer to every problem.
First install
Start with a setup you can verify
Note the client, system architecture, and install location. Fully extract desktop archives. On Android, confirm the APK has finished downloading in your file manager before installing. If the system reports incompatibility, check the package type and architecture; don’t keep trying same-named files from unknown sources.
On first launch, grant only the permissions you need, then review the client settings. Check the local listening port on desktop and the system VPN prompt on Android. Avoid adding complex rules at this stage; keeping the defaults makes it easier to identify which later change affects the connection.
Upgrade in place
Back up and quit the old process
Use the client’s backup or export feature to save subscription groups, custom configurations, routing rules, and essential settings. Subscription links may contain access credentials, so store them securely. Before sharing a screenshot for troubleshooting, hide the full link and any account details.
Disconnect and quit the old process before upgrading. Afterward, check that the existing configuration loads, then verify the system proxy, auto-start setting, and listening port. If the installer reports a signature mismatch or fails to overwrite the existing app, first check where the old package came from and how it was installed. Don’t uninstall immediately and risk losing your configuration.
Switch clients
Check settings and core compatibility
Desktop and Android clients don’t always share the same interface or backup format. You can migrate servers using a subscription URL or standard share link, then recreate client-specific settings one by one. Don’t assume another client can read the entire application folder as a configuration.
v2rayNG and v2flyNG use different cores. Importing a protocol with the same name doesn’t mean all transport and security settings are identical. If a setting has no equivalent in the new client, check the protocol reference to confirm support before migrating.
After installation
Import a subscription and connect for the first time
A successful installation only confirms that the app can run. Check the configuration, connection status, and app proxy settings separately.
Create a subscription group in the client, paste a valid subscription URL, and update it. To use a share link, choose the appropriate clipboard import option. After updating, check that servers appear in the group and that the protocol and transport settings look right. If the list is empty, first check whether the subscription is valid and returns a format the client supports—not by repeatedly reinstalling the app.
Select a profile and check which apps use the proxy
Select a valid profile and start the connection. On desktop, check that the system proxy or in-app proxy points to the client’s current local listening address. On Android, confirm that the system has authorized the VPN connection. Not every app uses the system proxy; check network settings in tools that configure their own proxy.
Test access before adding routing rules
First confirm that the intended app can reach the target site, then enable the routing rules you need one step at a time. Change one group of settings at a time and watch the logs and app behavior. If nothing connects after startup, check the server settings, subscription status, and local port. If only certain domains fail, check DNS and routing matches. Avoid changing multiple variables at once.
Download FAQs
Installer and upgrade questions
Which v2rayN edition should you choose: Desktop or classic WPF?
For a first install, start with the v2rayN Desktop edition, which uses a next-generation cross-platform interface. If you prefer the familiar Windows layout, choose the classic, stable WPF edition. Both downloads on this page are x64. Before switching, export your configuration and quit the old process. Don’t let both clients manage the system proxy at the same time.
Should you choose arm64 or universal for Android?
Most mainstream phones released after 2015 are best suited to the arm64 package, but make sure the OS supports 64-bit apps. Try the universal package if your device is older, its architecture is unclear, or the arm64 package reports incompatibility. Universal builds include components for multiple architectures and are usually larger; that doesn’t mean they connect better.
Why can’t I connect after installing the client?
The client reads your configuration and establishes a connection; the installer does not include a working server. Import a valid subscription or complete share link, select a configuration, check the routing mode, and start the connection. On Android, approve the system VPN prompt. On desktop, check the system proxy or the client’s in-app proxy settings.
What should you back up before upgrading?
Use the client’s backup or export feature to save subscription groups, custom servers, routing rules, and essential settings. Store subscription links somewhere secure. Quit the old client before upgrading. Afterward, check that your configuration is intact, whether local ports have changed, and the system proxy and auto-start settings.
What if the page version differs from the installer filename?
The version shown on the page and the download links are read from separate update manifests, so they may briefly differ. Don’t change a download URL based on the displayed version alone. Check the downloaded package name and the version in the installed client’s About page. If they don’t match your expectations, refresh the page and check again later. Back up existing settings before installing.