Client downloads / operating systems and architectures
Download V2Ray clients
v2rayN for desktop, v2rayNG for Android. Choose your system, then select the matching package.
All three clients are free and open source. After downloading, you’ll still need to import a valid subscription or server configuration. The package, subscription URL, and proxy mode are separate parts of the setup.
You don’t need both editions to get more protocol support. The interface and core configuration are separate; available features depend on the settings in your client version.
After downloading, follow these steps
First, check your system type under “Settings → System → About.” Both downloads are for x64 Windows; an x64 package is not a native ARM package. Once the download is complete, extract the entire ZIP to a folder you can read and write to, then run the installer inside. Don’t launch it from the archive preview.
After installation, open “Subscription Group Settings,” name the subscription source, and enter its URL. Save it, then update the subscription. Once servers appear in the list, select one and choose “Set system proxy automatically” from the system proxy menu at the bottom. If you only need proxy access in a browser, test this first; there’s no need to enable TUN right away.
Before updating or switching between WPF and the desktop edition, back up your subscriptions, routing rules, and custom settings, then fully quit the old process. Don’t let both instances manage the system proxy or listen on the same port. If startup reports a missing runtime, check the runtime name and architecture shown in the error; don’t guess which component to install based on the client name.
Choose based on the chip, not the computer’s appearance or purchase date. On Apple Silicon, use the native architecture package when available.
Install from a disk image
After downloading the DMG, double-click it to mount the image, then move the app to the Applications folder and launch it from there. Don’t keep running the app from the mounted image; you may lose access to it after ejecting the image or restarting. If macOS says the app can’t be opened, check the full warning, download source, and chip architecture, then review the security notice related to that launch in System Settings.
After the first launch, create a subscription group and update it. Check that the server list isn’t empty. The system proxy mainly affects apps that follow macOS proxy settings; apps with their own network settings may not use it. Check the app’s own proxy options first, then decide whether TUN is needed. Reinstalling repeatedly won’t help identify which traffic is affected.
TUN may require system approval or permission for a helper component; follow the prompts for your version. Quit the client before upgrading so an old process doesn’t keep a port in use. Replacing app files doesn’t clear user settings, but it’s still a good idea to export important settings first, especially custom routing rules and DNS settings.
The displayed version and package path are updated separately, so the number in the filename may temporarily differ. Don’t edit the download URL manually.
v2flyNG
Alternative · V2Fly core1.10.31
arm64
For users with an existing V2Fly configuration and a phone that supports 64-bit apps. Protocol settings must match the core’s capabilities.
When you open an APK from a browser or file manager, Android may ask you to allow app installs from that source. Grant permission only to the source you’re using; you can revoke it in System Settings after installation. If you see a parsing error, check that the download is complete and that the system version and architecture are compatible. Don’t keep retrying with the same incomplete file.
In v2rayNG, open “Subscription Group Settings,” enter a valid URL, and save it. Return to the main screen and update the subscription. Importing successfully doesn’t mean you’re connected: you still need to select a server and start the service. On first launch, Android will ask for VPN connection permission. Approve it so the client can create a local traffic routing interface. This permission doesn’t provide a server or subscription.
Before using per-app proxy, check whether the setting proxies selected apps or bypasses them; these options do opposite things. Other VPN apps may also occupy the same connection slot, so stop them while troubleshooting. If the connection drops in the background, check battery optimization, background restrictions, and power-saving mode before trying a different package.
v2rayNG and v2flyNG are different clients; don’t assume they support the same protocols or security settings. For VLESS or REALITY in particular, check that the core supports your configuration before migrating. Keep the original subscription and manual settings, and test each client separately to avoid confusion from running both at once.
amd64 and x86_64 are common labels for x64; arm64 and aarch64 refer to 64-bit ARM. Don’t judge compatibility by the file extension alone.
Use your distribution’s installer to handle dependencies
Check your distribution and processor information on the system’s About page. Choose deb for distributions that use deb packages, and rpm for those that use rpm. Matching the package format doesn’t guarantee compatibility with every release. The package still requires the right graphical components, system libraries, and desktop environment; check the installer’s details.
Open the downloaded file with your distribution’s software installer so the package manager can check dependencies. If it reports a missing library or version conflict, note the full message and check it against your distribution version. Don’t change the file extension or force installation while ignoring dependencies. This is a graphical client that requires a desktop session, not a server program for a command-line-only environment.
After the first launch, import a subscription and test the regular proxy. Linux desktop environments handle system proxies differently: some apps use their own settings, while others read environment variables. A connection in one app doesn’t mean all traffic is routed through the client. If you need TUN, configure permissions as prompted by the client. Don’t run the entire graphical interface as an administrator just for convenience.
When upgrading, stick with the same package manager if possible. Quit the old client before installing the new package. Removing an app isn’t the same as deleting its user settings, so check which data the package manager and client keep before proceeding. Export or back up custom subscriptions, routes, and DNS settings first.
Choose deb or rpm for your distribution; don’t convert by changing the file extension.
Processor architecture
x64 corresponds to amd64 and x86_64; arm64 corresponds to aarch64.
Desktop environment
Requires a graphical desktop session and the relevant system components.
Dependency compatibility
Use the package manager to check system libraries and version requirements.
Network permissions
Test the regular proxy first; configure TUN permissions separately as prompted.
After installation: subscriptions and proxy modes
Installing the app only prepares the graphical client. Next, import a subscription URL from a trusted source, save the group, and update it. If the list is still empty, check that the URL is complete and hasn’t expired, and that group filters aren’t hiding results. Don’t post subscription URLs in public forums; they may contain access credentials. When sharing screenshots for help, hide subscription URLs, server passwords, and personal identifiers.
Once the list is populated, select a configuration and start the connection. On desktop, try “Set system proxy automatically” first; on Android, approve the system VPN request. System proxy, TUN, and per-app settings control which traffic enters the client. Routing rules determine how that traffic is handled; these settings aren’t interchangeable. If you can’t connect, check in order: subscription updated → server selected → service started → app using the proxy. This is more useful than reinstalling repeatedly.
When entering VLESS, REALITY, or other settings manually, check each value against the server configuration, especially the address, port, transport, SNI, and key fields. For certificate errors, check the system clock and domain; don’t skip verification. Installation and connectivity are separate issues: if the client opens but won’t connect, see connection troubleshooting. For a first-time setup, follow the subscription import and first connection guide.
Download FAQs
Desktop or classic WPF for Windows: which should you choose?
For a first install, try the desktop edition with its newer cross-platform interface. Choose WPF if you prefer the classic Windows experience. Both downloads are x64. Back up your settings before switching, and don’t let both clients manage the system proxy at the same time.
Android: arm64 or universal?
Most mainstream phones released since 2015 are good candidates for arm64, but make sure your system supports 64-bit apps. If you’re unsure of the architecture or the arm64 APK won’t install because of an architecture mismatch, try the universal version. It includes multiple architectures, but doesn’t support every older system.
Does downloading the client give me a server automatically?
The client package doesn’t include a ready-to-use server configuration. After installing, import a valid subscription URL or individual configuration you’ve obtained, update the subscription, select a server, and enable the appropriate proxy mode. Treat subscription URLs as sensitive information.
Do I need to uninstall the old version before upgrading?
Don’t uninstall first. Back up your subscription groups, routing rules, and custom settings, then fully quit the old client and upgrade using the same client’s usual installation method. Don’t assume an upgrade will overwrite cleanly if you’re changing download source, signing identity, or client type. Make sure you can restore your settings before removing the old version.
What should I check if the installer won’t open or says it’s incompatible?
First, make sure the download is complete, then check your operating system, processor architecture, and package format. Extract Windows ZIP files first; on macOS, distinguish Apple Silicon from Intel; on Linux, choose deb or rpm. Note the full error message. Don’t disable system protections or run repair commands from untrusted sources.
Why don’t the version number and the number in the package filename match?
The displayed client version and package paths for each architecture are maintained separately, so they may temporarily differ after an update. Check the client name, operating system, and architecture before downloading. Don’t edit the download URL based on the displayed version number. If you’re unsure about upgrade compatibility, keep a backup of your current settings.