v2rayN, v2rayNG, and v2flyNG. Choose your operating system, then select a package for your CPU architecture. Setup instructions for desktop and mobile are below the download links.
Use v2rayN on desktop systems. On Android, v2rayNG with the Xray core is the recommended starting point; consider v2flyNG if you specifically need the V2Fly core. Your platform selection stays in the page URL, so you can pick up where you left off.
v2rayN
Recommended
Windows · x647.24.1
Desktop version
A newer cross-platform UI and a good starting point for a first install.
Both versions manage nodes, subscriptions, and proxy settings. Their main differences are the interface and supported platforms—not that one is inherently faster. The desktop version uses Avalonia, a cross-platform UI framework; the WPF version retains its Windows-only interface. If your current setup works well, there's no need to switch just for a different interface. If you do switch, back up your settings first, then check your groups and routing in the new interface.
System requirements and setup
Check
What to look for
Processor
This page provides x64 packages. Check your system type under Settings → System → About.
Windows compatibility
Use a supported version of Windows. Check the installer prompts for the exact minimum version and runtime requirements.
Files
Keep the entire extracted folder; don't move out just one executable.
After installation: checks in order
Open the archive from your browser's downloads, extract all its contents to a writable folder, then run the installer. If Windows reports a missing runtime, check the component name and architecture instead of repeatedly switching client packages to work around the same message. After launching the client, import a subscription or node, select a usable configuration, then choose “System proxy” → “Set system proxy” from the menu.
Before trying another version, exit the current process so the clients don't compete for the same listening port. Before closing a client, you can select “Clear system proxy” to prevent the system from pointing to a stopped local service. If the installation succeeds but you can't connect, check your configuration and logs before reinstalling.
For Macs with an Intel processor. Choose the x64 build.
Download for Intel
Don't identify the processor by appearance or purchase year alone.
Open the Apple menu and select “About This Mac.” If it lists an Apple chip, choose Apple silicon; if it lists an Intel processor, choose Intel. Prefer the native architecture that matches your hardware rather than relying on compatibility translation. Once the download finishes, open the DMG and follow its instructions to move the app into Applications. Launch it from there instead of running it from a temporarily mounted image.
System and permissions
Check
What to look for
Chip type
Apple silicon uses arm64; Intel uses x64.
Windows compatibility
Check the app's launch prompt and release notes for the minimum macOS version.
Installation and permissions
Move the app to Applications. On first launch, follow the system prompts to review any requested permissions.
First launch and proxy settings
If macOS blocks the app on first launch, check the download source and file type, then review the relevant message under System Settings → Privacy & Security. Use the system's allow option only if you've confirmed you want to run the app. You don't need to disable macOS security features entirely to install a client. If the warning indicates an architecture or OS version mismatch, check that you downloaded the right package instead of repeatedly granting permission.
Once the client is running, import a configuration and select a node before enabling the system proxy. Only apps that respect the system proxy setting will use it; it doesn't automatically route traffic for every process. Test with a known website in your browser and check the client logs. If macOS asks for local network access, decide based on how you plan to use the app.
v2rayNG is a graphical Android client that uses the Xray core to handle connections. It's a good first choice; check that it supports the protocols and transport settings required by your subscription. After installing, add your URL under Subscription Group Settings and update the subscription, or import a node configuration you're authorized to use. Once you have a node, tap Connect and review the system VPN connection request.
v2flyNG
Alternative
Android · V2Fly core1.10.31
arm64
Choose this if you specifically need the V2Fly core and your device supports arm64.
v2flyNG uses the V2Fly core and suits users with a compatible configuration or those comparing core behavior. Switching clients isn't a universal fix for connection problems: changing cores may not help if the server is unreachable, a subscription has expired, or a setting is incorrect. Before switching, save your current configuration and confirm the new client supports its protocols and transport settings. Then import and test them one at a time.
Device requirements and setup
Check
What to look for
App architecture
Most mainstream phones use arm64; if you're unsure, consider the universal build.
Windows compatibility
Check the APK installer for the minimum Android version and compatibility information.
Install permissions
Allow installation only for the browser or file manager you're using to open the APK.
Connection permissions
Approve the system VPN request when connecting, and avoid conflicts with other VPN connections.
Installation prompts and background activity
After downloading the APK, open it from Downloads or your file manager. If Android asks you to allow installs from this source, verify the source and grant permission only to the app you're using. You can revoke it after installation if you like. If Android says “App not installed,” check for a signature conflict, an incompatible OS version, or insufficient storage. Don't uninstall your current client without backing it up; that could delete its local configuration.
After your first successful connection, check whether it stays active after the screen has been locked for a while. Some systems restrict background activity; adjust the client's battery or background settings if needed. The names vary by device manufacturer. If another VPN app is running, stop its connection before starting this client. A speed test only reflects the response from the test target at that moment; it doesn't confirm that every app is routing correctly.
First check which package management system your distribution uses, then confirm your machine's architecture. DEB and RPM differ in how packages are installed and dependencies are managed, not in client features. amd64 and x86_64 generally refer to the same x64 architecture; arm64 and aarch64 refer to the other. Matching the package format is only the first step: check that your distribution can meet the package's dependencies. Not every RPM or DEB package works on every distribution that uses that format.
Desktop environment and dependencies
Check
What to look for
Runtime environment
A working graphical desktop session is required. This page provides graphical client packages.
Package format
Choose DEB or RPM to match your distribution's package management system.
Processor architecture
Use the main download for x64; arm64 packages are linked below in smaller text.
Dependency compatibility
Let your system's software installer check dependencies; resolve any reported conflicts before continuing.
Verify proxy settings after installation
Open the downloaded package with your system's software installer, then review the dependencies and installation result. If the installer reports unmet dependencies, check that your distribution version is supported before proceeding; don't force the installation by ignoring them. After installation, launch the app from the application menu and import your configuration in a regular user session. Don't run the entire client with elevated privileges long-term just to work around a permissions error.
Desktop environments don't all handle system proxy settings the same way. A listening port in the client doesn't mean browsers, terminal tools, or every desktop app will use it automatically. Test with an app that explicitly supports proxy settings, and check that its address and port match the client. Sharing a proxy over your local network is a separate use case; you don't need to broaden the listening address for a first install.
A client manages configurations and forwards traffic. If the app opens normally, installation is basically complete—but subscriptions, nodes, and proxy routing still need to be checked separately. Follow these steps in order to narrow down problems.
01 · Import configuration
Check your subscription first
Enter a URL you're authorized to use under Subscription Group Settings, save it, then update the subscription. If you're importing a share link, keep the full link intact; messaging apps can insert line breaks or drop characters. Subscription URLs may contain credentials, so don't share them in public screenshots or logs.
After updating, check that nodes appear, then review the group, protocol, and required settings. A successful subscription request doesn't mean a node connection has succeeded. If the list is empty, check the update log first instead of enabling more proxy modes.
02 · Choose how to route traffic
Then set up the proxy
On desktop, select a node and start by testing the system proxy. If an app has its own proxy settings, make sure its port matches the client. On Android, approve the system VPN request when starting a connection. Running another VPN app at the same time may replace the current connection.
Keep routing settings simple at first. Don't change DNS, listening addresses, and multiple routing rules all at once. Change one setting at a time so you can identify what caused the result.
03 · Test the connection
Finally, check access and logs
Test the connection with the website or app you actually need, and check the logs for errors. A node speed test can help narrow down your options, but one successful test doesn't prove that every protocol, destination, and app works. Browser cache and existing connections can also affect what you see.
If you can't connect, note what you were doing and the error message. Check the local listener, proxy settings, node configuration, and server reachability in that order. This is more targeted than repeatedly downloading a different package.
Should I choose the desktop or classic WPF version for Windows?
If you're new to v2rayN, start with the desktop version, which uses a newer cross-platform interface. If you prefer the familiar Windows layout, choose the classic, stable WPF version. Both downloads are x64 packages. Back up your subscriptions and routing settings before switching, and don't run both versions on the same local listening port.
Which Android build should I choose: arm64 or universal?
Most mainstream phones released after 2015 can use arm64, but check which app architectures your device supports. If Android says the package is incompatible, check your OS version and device architecture first, then try the universal build. It supports more architectures and is usually larger.
Can I connect as soon as the client is installed?
Installation alone doesn't mean you're ready to connect. The client reads your configuration and forwards traffic, but you'll also need a subscription URL or node configuration you're authorized to use. Import it, select a node, then configure the system proxy or start a VPN connection on Android. Verify the result by testing access and checking the logs.
What should I do if a download is interrupted or the package won't open?
Check your browser's downloads to make sure the transfer has finished. If it was interrupted, try the same download link again. On Windows, fully extract ZIP files before running the installer. On other systems, check that the package format and CPU architecture match. If the system blocks installation, read its message before deciding whether to allow it.
Will upgrading the client keep my existing subscriptions and rules?
Whether your settings carry over depends on how the client was installed, where its configuration is stored, and compatibility between versions, so it isn't guaranteed. Before upgrading, use the client's export or backup options to save your settings, then exit the old process. After installing, check your subscription groups, selected node, listening port, and routing mode before resuming normal use.