Choose your operating system first, then your CPU architecture.
Use v2rayN on desktop and v2rayNG on Android. Consider v2flyNG if you need the V2Fly configuration ecosystem. Import an existing subscription after installation; the client itself does not provide servers.
Windows: v2rayN downloads
Both downloads below are x64 packages. For a first install, start with Desktop; choose WPF if you prefer the classic workflow. After downloading the archive, extract it and run the installer inside.
Desktop is the newer cross-platform UI; WPF is the established classic version. Both manage subscriptions and proxy settings, but their layouts and settings menus differ.
For your first install, start with Desktop. Import a subscription, verify the connection, and then adjust routing. If you already use WPF, there’s no need to switch just for a different interface. If you do switch, export your configuration from the old client and import it into the new one. Don’t overwrite one program folder with another, and don’t assume the two interfaces share settings in real time.
A standard user account is sufficient for most everyday tasks. The system proxy usually doesn’t require elevated privileges; TUN may require administrator access and a virtual network component. Leave TUN off at first, verify that the system proxy works, then enable TUN if you need it. Running both versions at once can cause port conflicts, so quit the old instance first.
Windows system and installation requirements
Check
Requirement or option
How to check
CPU architecture
This page provides x64 installers
Settings → System → About; check System type
System compatibility
Follow the installer’s requirements; check runtime support carefully on older systems
Install system updates first, then address any dependencies listed by the installer
Permissions
Standard proxy and TUN have different permission requirements
Test the system proxy first; grant permissions if prompted when enabling TUN
Don’t launch the program from the archive preview. Extract it to a writable folder, install it, then launch it from the app menu. If the system reports a missing runtime component, note its name and architecture and install what’s required. Reinstalling the same package repeatedly usually won’t fix a missing dependency.
macOS: v2rayN for Apple Silicon and Intel
Check your chip in Apple menu → About This Mac. Choose Apple Silicon if it shows an Apple M-series chip; choose Intel if it shows an Intel processor. Don’t guess based on the macOS version or the computer’s appearance.
Use the native arm64 package on Apple M-series Macs and the x64 package on Intel Macs. The packages target different processors; neither is a higher-tier version.
After opening the DMG, drag the app into Applications and launch it from there. Don’t run it long-term from the mounted disk image, as this can cause inconsistencies with updates, permissions, and the app location. If macOS displays a security warning on first launch, confirm the app’s name and source, then check the specific reason under System Settings → Privacy & Security. Disabling system-wide security protections is not recommended.
You can follow the desktop guide for subscriptions and routing, though menu locations may differ between interface versions. After configuring the system proxy, test it in a browser, then check whether other apps follow the system proxy. Some command-line tools use their own proxy settings, so a working browser connection doesn’t necessarily mean the subscription is broken. If you need to route more apps, learn about TUN permissions and routing first.
macOS system and installation requirements
Check
Requirement or option
How to check
Chip
Choose arm64 for Apple Silicon and x64 for Intel
Apple menu → About This Mac
macOS version
Must meet the app’s stated minimum macOS version
Check About This Mac and review any launch warnings
App location
Copy the app to Applications before launching
Eject the DMG after installation, then launch the app
If the app is reported as incompatible, first check that you downloaded the right package for your chip, then check your macOS version. A compatible processor doesn’t mean the app will run on every older version of macOS. Check device support before upgrading macOS, and don’t modify app files to bypass stated compatibility requirements.
Android: start with v2rayNG
For most phones released after 2015, arm64 is usually the first choice. Try Universal if you can’t confirm your system architecture or the arm64 package reports incompatibility. The two clients store settings separately, so switching apps won’t automatically transfer your subscriptions.
A good fit for everyday subscription management and Xray configurations. The arm64 package targets that system architecture; Universal includes support for multiple architectures.
After downloading the APK, open it with your file manager. If Android asks you to allow installs from this source, grant permission only to the browser or file manager you’re using, then turn it off after installation. On first connection, Android asks for permission to set up a VPN connection so the app can route traffic. Confirm the app name before allowing it.
After importing a subscription, update the group, select a server, and start the connection. Seeing entries in the list doesn’t mean you’re connected. If background connections drop frequently, check battery optimization, background activity, and persistent notification settings. Also check whether another app is already using the system VPN connection. Verify the basic connection and DNS resolution before enabling additional features.
For configurations that need the V2Fly core ecosystem. Choose based on protocol and field compatibility, not on how similar the app names look.
If you already have a configuration adapted for V2Fly, consider v2flyNG as an alternative. Don’t assume it supports exactly the same protocols as v2rayNG, especially when a configuration relies on core-specific extensions. If an import fails, check the share link type, transport, and security options before deciding whether to try another client.
When migrating from another app, re-add the subscription URL first, then check routing and DNS settings one by one. Matching server names don’t guarantee that every setting transferred correctly. You can install both Android clients, but run only one at a time while testing to avoid mistaking system VPN switching for an unstable server.
Android system and installation requirements
Check
Requirement or option
What to do
System architecture
For 64-bit systems, arm64 is usually the right choice; use Universal if unsure
Check the system architecture, not just the processor’s advertised specs
System compatibility
Must meet the minimum system requirements for the APK
If parsing fails, check both the system version and download status
Installation and connection permissions
Allow installs from this source and approve the system VPN connection
Follow each system prompt; don’t grant unrelated permissions
If installation reports that the app conflicts with an existing one, don’t uninstall it right away. First check whether the existing app and the new package have the same source and signing, then export your configuration. If you need to reinstall, make sure your subscription URL and custom rules are backed up. A screenshot of the server list usually isn’t enough to restore the full configuration.
Linux: choose deb or rpm for your distribution
For a typical x64 desktop, choose the matching package format. Use the arm64 download below for ARM desktop devices. The distribution determines the package format; the device determines the CPU architecture. Both must match.
Debian and Ubuntu usually use deb; Fedora and RHEL usually use rpm. The right package format doesn’t guarantee that every distribution version meets the dependencies.
Open the downloaded package with your system’s software installer. Review its dependency and architecture checks before installing. The current rpm filename includes build-target details, so pay particular attention to whether your distribution’s runtime libraries meet its requirements. Don’t force an installation to bypass dependency errors or add repositories from another distribution to your system.
These downloads are for the graphical client and require a desktop environment. After installation, launch it from the app menu and configure your subscription and system proxy. System proxy support varies by desktop environment, and terminal apps may not use the desktop proxy settings. Configure TUN and its permissions and routing only if needed; don’t run all everyday tasks with elevated privileges just after installing.
Linux system and installation requirements
Check
Requirement or option
How to check
Package format
Choose deb or rpm based on your distribution
Find your distribution name in system information or the software manager
CPU architecture
x64 maps to amd64 / x86_64; arm64 maps to aarch64
Check hardware and operating system architecture in system information
Runtime environment
Desktop environment and package dependencies
Use the system software installer to check dependencies and compatibility
If the software manager refuses to install the package, check which dependency is missing rather than changing servers or subscriptions. Dependency issues happen before the app starts and are unrelated to server connections. System proxy and TUN settings come later; test each after the client opens successfully.
Setup steps after installation
Get one connection working before adding rules. The installer, subscription, and proxy mode are separate; check each one independently when troubleshooting.
Import a subscription or share link
Subscription URLs usually go in a subscription group; save the group and then update it. Single-server links beginning with vmess:// or vless:// are usually imported from the clipboard. Don’t send subscription URLs to unfamiliar conversion services; they may contain personal access credentials.
Select a working server before enabling the connection. On desktop, start with the system proxy; on Android, approve the VPN connection when prompted. Use the default routing to verify basic functionality first. Leave custom routing and TUN until the basic connection works so you can pinpoint where a problem starts.
Test access with the apps you actually need, then check the logs for specific errors. Latency tests are only a guide; they don’t replace a real request. Once the configuration works, export a backup before updating, changing devices, or switching clients to avoid losing subscriptions and custom rules.
Architecture mismatches, installation failures, and connection failures happen at different stages. Identify the stage first, then address the relevant issue.
Do I need a subscription after downloading a client?
You’ll need a working subscription URL, a link for a single server, or an existing configuration. The client manages configuration and connections; the installer does not include access to a server. Import subscription URLs through a subscription group, and single-server links through the clipboard import option. Don’t use these import options interchangeably.
Which should I choose for Windows: Desktop or WPF?
For a first install, try Desktop, which uses a newer cross-platform interface. If you prefer the classic interface or want to keep your existing workflow, choose the established WPF version. The difference is not in the server plan. Export your configuration before switching, and don’t run both clients on the same listening ports.
What’s the difference between Android arm64 and Universal?
For most phones released after 2015, arm64 is usually the first option, but check your device’s system architecture. Universal supports multiple architectures and is worth trying if you can’t confirm your architecture or the arm64 package reports incompatibility. Some devices have 64-bit processors but run a 32-bit operating system.
Will updating the client remove my subscriptions or routing settings?
A routine update to the same client usually preserves data, but the installation method, signing, and data directory can affect the outcome. Before updating, export your configuration from the client and note your subscription groups and routing settings. Don’t uninstall the old version first. If you encounter a signing conflict or can’t install over it, verify your backup before deciding what to do next.
The client installed, but it won’t connect. What should I check first?
First, check that your subscription updated and that you selected a working server. Then make sure the system proxy or connection switch is enabled. Check the client logs to distinguish port conflicts, authentication failures, DNS resolution failures, and timeouts. Start by testing with the system proxy; don’t change the protocol, routing, and TUN settings all at once.