For desktop, choose v2rayN; for Android, start with v2rayNG. Check your operating system and processor before downloading the matching package.
VMessVLESSTrojanShadowsocks
The clients are free and open source. You'll need to provide your own subscription or node configuration for connections. Protocol support depends on the selected core and configuration.
Choose an operating system
Select a platform to see the matching client. Installation instructions and system requirements update with your selection. You can bookmark this page for later.
v2rayN
RecommendedWindows · x64
Desktop is the newer cross-platform UI; WPF is the classic, stable edition. For a fresh install, start with Desktop. Choose WPF if you prefer the classic interface and workflow.
Check your system type on the About page in Settings. Don't use this package for another architecture.
Runtime
Install dependencies such as .NET as required by the selected release
A missing runtime can prevent the interface from starting; this is separate from whether your subscription is valid.
Permissions and network
Standard proxy mode and TUN have different permission requirements
Set up a basic connection first. Grant the requested permissions only if you later need TUN.
Save the package locally, then extract it to a directory with normal read and write access. Don't run the program from your archive utility's preview window; nearby dependency files may not be extracted with it. Start the client normally after installation. If it reports a missing runtime, install the specified dependency rather than repeatedly importing your subscription.
For your first connection, enable only one way of routing traffic. Import your configuration, select a node, then use automatic system proxy settings and check whether your browser follows them. You don't need to enable TUN at the same time. Some apps manage their own proxy settings and won't follow system proxy changes; configure those separately after confirming the basic connection works.
Desktop and WPF may arrange menus differently, so don't rely on an old screenshot to find a setting. Before switching, export the settings you want to keep, then check your subscription groups, routing, and local listening port in the new edition. If you keep both installations, run only one at a time to avoid conflicts over ports and system proxy settings.
v2rayN
macOS · Desktop
Manage subscriptions, nodes, and routing in a desktop GUI. Check your chip in About This Mac: choose arm64 for Apple Silicon or x64 for Intel.
For Intel-based devices. This is also a DMG package, but it targets a different processor architecture than the arm64 version.
Release 7.24.1DMG installer · two architecture options
macOS system and installation requirements
Check
What to choose
Before installing
Processor
Apple Silicon uses arm64; Intel uses x64
Open About This Mac from the Apple menu to check your chip or processor.
Operating system
Must meet the current Desktop release requirements
On older systems, check the app's compatibility notice. Don't assume every macOS version is supported.
App and permissions
Launch from your local Applications folder and grant permissions as needed
If macOS blocks the app on first launch, verify its source and review the system warning before deciding whether to allow it.
Open the DMG and follow the installer to move the app into your Applications folder, then launch it from there. The disk image is an installation medium; don't use it to run the app long-term. After launch, import your subscription and confirm that a valid configuration appears in the list. Then set up the system proxy and routing presets, testing the connection step by step.
Handle macOS security warnings separately from connection failures. A security warning appears when launching the app; review the related notice in System Settings. A connection failure occurs after the client is running; check the core logs and configuration. Don't disable system security globally just to skip a confirmation, and don't assume a permissions issue means your subscription is invalid.
If you've used another proxy tool, quit it before switching and check for leftover system proxy settings. If you still can't access the internet after closing the client, check the proxy settings in your system network settings first. Once basic connectivity is restored, enable the new client's features one at a time to prevent multiple background processes from changing the same settings.
v2rayNG
RecommendedXray core
Recommended for Android. Routes traffic through Android's VPN interface and supports subscription import and per-app settings. Most phones released since 2015 should use arm64, but confirm that the system supports 64-bit apps.
A good fallback if you're unsure of your device's architecture. The package is usually larger, but uses the components that match your device after installation.
Release 2.2.6Android · APK
v2flyNG
Alternativev2fly core
An alternative Android client for users who need the v2fly core ecosystem. Before choosing it, confirm that its core supports the protocols and transport settings in your subscription. Core feature sets aren't necessarily identical.
An alternative if you're unsure of your device's architecture. Check installation compatibility separately from protocol compatibility.
Release 1.10.31Android · APK
Android system and permission requirements
Check
What to choose
Before installing
Architecture and system
The arm64 package requires system support for 64-bit apps
Hardware support doesn't guarantee that the operating system supports 64-bit apps. Check your device information or choose the universal version if unsure.
Install permission
Allow installs from the current source to install the APK
Grant permission only to the browser or file manager you're using, as needed.
VPN interface
Approve the system VPN request when starting the proxy
Don't run another app that uses the VPN interface at the same time.
Background activity
Battery-saving settings can interrupt persistent connections
Adjust background activity and battery optimization as needed, then check the connection again after restarting.
When the download finishes, open the APK from your notifications or file manager. If Android says the app isn't installed, check for an architecture mismatch, an unsupported system version, or a signature conflict with an existing app. Don't uninstall the only app that contains your saved configuration. Export your subscriptions and custom nodes first, then decide whether to reinstall.
The first time you start the proxy, Android will show a VPN connection request. This authorizes the client to route traffic from selected apps through its local proxy; it doesn't provide a remote service. Import your configuration and select a node before allowing the connection. If another VPN app is active, stop one of the two first.
If the connection drops in the background, check whether the system restricts background activity or pauses network access when the screen is off. Also check the meaning of included and excluded apps in per-app proxy settings; changing the app list usually requires reconnecting. Test with the default app scope first, then add custom exclusions one at a time to make problems easier to trace.
v2rayN
Linux · Desktop
Choose deb or rpm based on your distribution, then check your processor architecture. The main downloads below are x64; for an ARM desktop, choose the matching arm64 package.
Typically used by Debian, Ubuntu, and similar distributions. Open it with your system's software installer, review any dependency warnings, then confirm the installation.
For RPM-based systems that meet the package's build requirements. Even when the format matches, check compatibility with your distribution and system libraries.
Release 7.24.1Desktop GUI · x64 / arm64
Linux system and dependency requirements
Check
What to choose
Before installing
Package management
Debian-based systems typically use deb; RPM-based systems typically use rpm
Check your distribution name and software installer prompts. Don't mix package formats.
Processor architecture
x64 corresponds to amd64 or x86_64; arm64 corresponds to aarch64
Check the architecture in your system details; don't infer it from the distribution name.
Desktop and system libraries
Requires a desktop environment and the libraries specified by the current package
Let your package manager check dependencies. Don't force installation by ignoring requirements if system libraries are too old.
Proxy and permissions
Whether apps follow the system proxy depends on the desktop environment and the app
Test the basic proxy first. Configure TUN permissions and routing separately.
Open the package with your desktop environment's software installer and review the dependencies listed by the package manager. If a system library requirement isn't met, first check whether the release is suitable for your system. Using the same package format only means the package managers are similar; it doesn't guarantee compatibility across distributions.
Launch v2rayN from the application menu after installation, import your configuration, and check the startup log. Browsers, desktop apps, and terminal programs may handle proxy settings differently. A working system proxy doesn't mean every program will use it automatically. First test with an app known to follow the system proxy, then configure access for other apps.
If you need TUN, check your user permissions, virtual network interface, and existing routes. Don't run every desktop app with elevated privileges just to test one feature. If local network access fails after connecting, remove the routes you just added and confirm that the default network works again before refining bypass rules.
What to do after downloading
Installation is only the first step. Import your configuration, enable the proxy, then test the connection—in that order, it's easier to find problems.
Prepare your configuration before enabling the proxy
The client manages settings locally; a subscription URL is how you get a set of connection configurations. Copy the full URL, add it as a source in a subscription group, and update it. For a single-node share link, use the appropriate option, such as importing from the clipboard. Both may look like links, but they use different import options—length alone won't tell you which one to use.
After updating the subscription, check that the expected configurations appear, then select a node to connect. Don't change protocols, transport methods, or security settings in bulk; they must match the server. If the update returns no results, check the URL, network access, and subscription format before changing proxy modes at random.
System proxy, routing, and TUN: what's the difference?
The system proxy determines how apps that follow system settings pass traffic to the client. Routing determines how the client handles that traffic. TUN provides a different way to route traffic into the client. Each works at a different stage. For your first desktop setup, start with the system proxy and test the basic connection before routing more traffic.
Android clients route selected traffic through the system VPN interface, so check the permission and connection status. Desktop and Android menus may use different names, but the checks are the same: the configuration is valid, the core is running, app traffic reaches the client, and routing behaves as expected. Change one part at a time to avoid compounding problems.
For step-by-step menu instructions, see the v2rayN setup guide. To learn about core selection, TUN, and routine maintenance, read the beginner-to-advanced guide. If something goes wrong, keep the relevant error details, but redact subscription URLs, node credentials, and personal network information before sharing screenshots.
Upgrades and configuration migration
Before upgrading, export your subscription groups, custom nodes, routing rules, and any settings you want to keep. A subscription can fetch server-side configuration again, but it won't restore all your local preferences. Save anything you added manually on your device separately.
Stop the proxy and quit the client before replacing the program. When migrating between interfaces or cores, use the app's import and export features where available. Don't overwrite configuration files unless you're sure what they're for. After launching the new version, test a connection before restoring custom routing and other advanced settings.
Keep a backup of your old configuration until the new setup works reliably. If you run into problems, note the error and recent changes. Restore a known working state, then try changes one at a time. Backups containing subscriptions or connection credentials should be stored securely, not in a public shared folder.
Download and installation FAQ
Check the package type and runtime first, then troubleshoot your connection configuration.
Does the client include a working connection configuration?
The client reads configuration, starts the core, and manages proxy settings; the installation package does not include a connection service. Before your first use, get a subscription URL or node share link from a trusted source, then import it into the client. Subscription URLs may contain access credentials, so don't share screenshots or forward them.
Which Windows version should I choose: Desktop or WPF?
Desktop uses a newer cross-platform interface, making it a good fit for fresh installs and users who want a consistent workflow across desktop systems. WPF is the classic, stable edition for users familiar with the traditional Windows interface. Both require the runtime specified for the release. Back up your configuration before switching.
Should I download the Android arm64 or universal version?
Most phones released since 2015 should use arm64, but confirm that the system supports 64-bit apps. If you can't confirm the architecture or the arm64 package is incompatible, try the universal version. It supports more architectures and is usually larger; a larger package won't improve connection quality.
What should I back up before upgrading?
Save subscription groups, custom nodes, routing rules, and important settings first. Then stop the proxy and exit the old client. Use the client's export feature where available, and store the backup securely. Once the new version imports your configuration and connects successfully, you can remove the old directory. Don't delete your only local copy of the configuration.
What should I check first if websites still won't load after installation?
First confirm that your configuration imported successfully and a node is selected. Then check that the core is running, the system proxy or VPN is enabled, and the local port isn't in use. Check the system clock, server settings, and routing rules next. Change one setting at a time and use the logs to find errors. Don't run multiple proxy clients at once.
Should I choose a deb or rpm package for Linux?
Choose the format used by your distribution's package manager: Debian and Ubuntu typically use deb; Fedora and RHEL-based distributions typically use rpm. Also check the x64 or arm64 architecture and required system library versions. A matching rpm or deb format doesn't guarantee compatibility with every distribution release.