Open-source clients · Setup guides

V2Ray Free Download Setup guides

Use v2rayN on desktop and v2rayNG on Android. Set up the free, open-source client, then follow the steps to import a subscription and configure routing.

Clientsv2rayN · v2rayNG · v2flyNG Core ecosystemXray · V2Fly · sing-box Setup orderSubscription → Proxy → Routing

Subscription, proxy, and routing settings

Get your configuration working first, then decide which traffic should use the proxy. These five settings handle different parts of the process; you don’t need to enable them all at once.

Subscription management · Settings preview

Save the source, then update the configuration

Add subscription group
Update subscription (without proxy)
Update subscription (through proxy)

Choose an update method based on whether the URL is reachable.

These five settings are not interchangeable connection methods; they handle different layers of the configuration. A subscription supplies node settings, the system proxy or TUN brings traffic into the client, routing determines where requests go, and the core handles the connection. Check them in this order when troubleshooting to distinguish a missing configuration from an app that isn’t sending traffic through the client, a misrouted request, or an incompatible protocol. See the v2rayN setup guide for the full process, or consult the glossary for terminology.

Choose a V2Ray client for your operating system

Check your operating system and processor architecture first. Start with v2rayN on desktop and v2rayNG on Android.

Windows

v2rayN · Recommended for desktop

The download page offers Desktop and classic WPF versions. Desktop uses a cross-platform interface, while WPF retains the classic desktop workflow. Choose one based on your system requirements and preferences; you don’t need to install both. After the first launch, make sure the data directory is writable before adding a subscription. A restricted install location can prevent the client from saving settings.

If you already have a configuration, back up your subscription groups and routing settings before updating. After switching interface versions, check that your data imported correctly, then test the system proxy. Don’t overwrite program files while the client is still running.

Go to downloads Windows client →

macOS

v2rayN · Choose by processor

Check your chip in About This Mac, then choose the Apple Silicon or Intel download. The client must match your processor architecture. Once you have the right package, follow the system prompts to install and open it for the first time. System proxy and TUN require different permissions, so make sure you understand what each one does.

A working browser connection doesn’t mean every app is using the proxy. For apps that ignore system proxy settings, check the app’s own network settings first. If you need to capture their traffic, see the advanced guide to evaluate TUN.

Go to downloads macOS client →

Android

v2rayNG recommended · v2flyNG alternative

v2rayNG uses the Xray ecosystem and suits most Android setups. Choose v2flyNG if you need the V2Fly route. Select an arm64 or universal package that matches your device. After installation, import a subscription and select a node, then approve the VPN connection prompt from Android. This permission lets the app create a local interface for capturing traffic.

If the connection drops when the screen locks, check background activity and battery optimization restrictions. Per-app proxy settings can limit which traffic is captured, but test the apps themselves after changing them. Don’t rely on the status bar icon alone to confirm the connection is working.

Go to downloads Android client →

Linux

v2rayN · deb / rpm

Choose deb or rpm to match your distribution’s package manager, then select x64 or arm64. You can install and configure the client through its graphical interface. Desktop environments handle system proxy settings differently, so if a browser works but other apps don’t, check where those apps get their proxy settings instead of reinstalling the client.

Before enabling TUN, check the required permissions and any network services already running on your system. Record your current network settings, then test domain resolution, local network access, and the target apps separately after making changes. That makes it easier to revert if something goes wrong.

Go to downloads Linux client →

Set up in three steps

Installing the client is only the starting point. Prepare a working configuration, route traffic through it, then verify that your apps can connect—in that order.

Step 1 · Prepare a configuration

Import a subscription or share link

Check whether you have a subscription URL or a single-node share link. Add subscription URLs to a subscription group and update it; import share links from the clipboard. Once imported, check that the expected nodes appear and select one to use.

The client doesn’t provide a remote service, and installing it doesn’t mean you’re ready to connect. If an update returns no results, check that the URL was copied in full, is valid, and is reachable. Don’t post subscription credentials in public forums or import configurations from untrusted sources just to test the client.

Step 2 · Route traffic

Choose proxy and routing modes

On desktop, start with automatic system proxy configuration, then choose a routing preset that fits your needs. On Android, start the connection and approve the VPN prompt. If you’ve configured per-app rules, check that the app you’re testing is included. Leave TUN at its default setting until a regular connection has been verified.

The system proxy controls whether apps send traffic through the client; routing controls where that traffic goes. Check each setting separately. If you temporarily switch to global routing to diagnose a problem, restore your usual preset afterward so you don’t mistake a diagnostic setting for a permanent setup.

Step 3 · Verify the connection

Test an app and check the logs

Test an app that actually follows the proxy settings, then check the runtime logs. Seeing a node in the list or getting a latency result doesn’t prove the full connection path works. If a connection fails, note which app you tested, which mode you used, and the type of error in the logs.

Change one setting at a time and repeat the same test. This helps identify whether the issue is with the configuration, network, routing, or app traffic capture. When you’re done, clear the system proxy on desktop or stop the connection on Android. If problems arise later, return to this minimal setup to compare results.

Project V and the open-source core ecosystem

Clients, cores, and protocols are different layers. Understanding what each one does helps explain how downloads, configuration, and updates fit together.

How Project V, V2Fly, and Xray are related

V2Ray is part of the Project V ecosystem of proxy tools, designed to combine protocols, transports, routing, and related capabilities. V2Fly continues community maintenance of V2Ray-related projects, while Xray has developed its own feature set from related code. They share technical roots, but they aren’t simply different names for the same product. When following a guide, check which core and protocol it covers, as well as which options the client provides.

Graphical clients sit above these core capabilities. They manage subscriptions and nodes, generate runtime configurations, and display logs. You usually don’t need to start by learning core configuration files: first use the graphical interface to get a working connection, then explore the underlying settings. Similar-looking buttons in different clients don’t guarantee identical configurations across cores, so test again after migrating or switching.

Open-source projects behind the three clients

v2rayN is an open-source graphical client for desktop systems, with tools for managing subscriptions, proxies, and routing. v2rayNG is for Android and uses the Xray ecosystem; v2flyNG is also for Android and provides the V2Fly option. Choose based on your platform and configuration compatibility first, then on interface preferences. Before switching clients to fix one particular issue, check whether the problem is actually caused by a difference in core capabilities.

Open source means the code is available for study under the applicable license. Use, modification, and distribution must follow each project’s license. It doesn’t mean subscription services are free or that every configuration you import is trustworthy. Clients, cores, and remote services have different roles; take care with sensitive information when saving configurations, granting network permissions, or sharing logs, and check what traffic is actually being captured.

Check three separate sources when updating

Client updates change the interface, configuration management, or platform support. Core updates affect protocol handling and network behavior. Subscription updates refresh node settings from the remote source. These are separate operations. If a connection still fails after a successful subscription update, check whether the node settings are compatible with the current core. A successful interface update won’t restore an expired subscription URL.

For routine maintenance, make sure you can restore your configuration. Back up important groups and custom rules before updating, read the relevant release notes, then retest with a familiar node and app. If something goes wrong, check the logs before changing several settings at once. Configuration parsing errors, DNS failures, and connection timeouts each point to different troubleshooting steps.

From terminology to advanced configuration

VMess and VLESS are protocol names, not clients. TLS, transport settings, and server parameters must also work together. Matching names alone doesn’t guarantee that a node will connect. When starting out, import an existing configuration and learn what each setting does before making manual changes. For a structured learning path, cover core concepts, client selection, installation, subscriptions, proxy modes, routing, TUN, and routine maintenance in order. Avoid combining disconnected snippets into a configuration.

Client setup and troubleshooting guides

More detail on installation, background operation, and connection testing. Start with the issue you’re facing; there’s no need to change every setting at once.

V2Ray Client Downloads