Client downloads · First-time setup checklist

V2Ray Clients Download v2rayN

Choose an open-source client, import a subscription, then configure routing and proxy mode.

  • VMess
  • VLESS
  • Trojan
  • REALITY
Graphical clients v2rayN · v2rayNG · v2flyNG Core families Xray · V2Fly Setup flow Subscription → Routing → Connect

Choose your package first

Choose a client for your operating system

Check your operating system and processor architecture, then open the matching download section. Choose v2rayN for desktop; on Android, start with v2rayNG, or consider v2flyNG if you need the V2Fly core. Subscription URLs are not included with the installer, so you’ll still need to import a working configuration after installation.

Windows

v2rayN

Choose the v2rayN desktop edition or the classic WPF edition. The desktop edition uses a cross-platform UI framework, while WPF is designed for Windows. Menus may differ, but the basic steps for managing subscriptions and configuring the proxy are similar.

First, check whether your system is x64, then review the runtime requirements on the download page. After installing, update a subscription and test a connection before changing DNS, routing, or TUN settings. This keeps installation issues separate from configuration problems.

Go to downloads

macOS

v2rayN

Choose the Apple Silicon or Intel package for v2rayN. Open About This Mac and check whether it lists a chip name or an Intel processor, then select the matching architecture rather than guessing from the computer’s appearance.

Follow the system prompts to install and open the app for the first time. Whether the system proxy works also depends on whether an app uses those settings. If your browser connects but another app doesn’t, check that app’s network options first, then consider whether TUN is needed to capture its traffic.

Go to downloads

Android

v2rayNG

Start with v2rayNG, which uses the Xray core. Most recent phones use the arm64 package; if you’re unsure of your device’s architecture, check the system information or choose the universal build. The download page also lists v2flyNG as an option if you need the V2Fly core.

After importing a subscription, select a configuration, tap Connect, and approve the system VPN prompt. This permission lets the client create a local traffic-capture tunnel; it doesn’t guarantee that the remote configuration works. If the connection drops in the background, check battery restrictions and background activity permissions.

Go to downloads

Linux

v2rayN

Choose the deb or rpm package for v2rayN and match it to your x64 or arm64 architecture. Debian- and Ubuntu-based distributions generally use deb packages; Fedora and similar distributions typically use rpm. Check your system’s package manager if you’re unsure.

After installation, launch the graphical app from your desktop environment and confirm that it loads the configuration. Desktop environments may handle system proxy settings differently, and terminal apps may need a proxy configured separately. Before enabling TUN, check permissions and look for conflicts with existing network services.

Go to downloads

Configure each setting

Subscriptions, routing, and proxy modes

Work through the connection source, rules, and traffic capture scope in order. The examples below show common setting names; they’re static illustrations, not a live configuration. Menus may vary by client and version.

Open Subscription Group Settings, add the subscription URL and a label you’ll recognize, then save and update. If you don’t have a working connection yet, try the update option that bypasses the proxy. If the URL requires a proxy, update it through an existing working connection instead. In v2rayNG, add a subscription group before updating; pasting a URL alone won’t create configurations. After updating, check that entries appear in the group. If it fails, verify the URL’s validity and response instead of adding the same URL repeatedly.

Separate the client from the core

The Project V, V2Fly, and Xray ecosystem

Understand what each layer does before choosing how to configure it. The interface, core capabilities, and subscription format are separate concerns. A client’s name alone doesn’t tell you whether it supports a particular protocol and transport combination.

Understanding Project V

Think of Project V as an open-source ecosystem of proxy tools and related technologies, not a single graphical app. V2Ray is a major project in that ecosystem, with a configuration system covering areas such as inbound connections, outbound routes, and routing. Apps such as v2rayN, v2rayNG, and v2flyNG provide graphical interfaces for managing configurations and connections. You usually don’t need to write a complete configuration by hand, but installing a client is not the same as having working connection details.

As the community evolved, V2Fly continued community maintenance of V2Ray, while Xray developed as a related core with its own features and direction. The two share technical roots, but their features and configuration options don’t always match. Interpret fields in a guide based on the core you’re actually running; don’t assume a setting applies just because it mentions V2Ray.

Choose a core that matches your configuration

The core handles protocols and establishes connections. v2rayNG uses the Xray core, while v2flyNG uses the V2Fly core. v2rayN supports cores based on its release package and settings. To verify a specific feature, check the client’s core settings and logs, then compare them with the connection requirements. Being able to import a share link doesn’t mean all its transport settings are supported or ready to use.

VMess, VLESS, and Trojan are common protocol names; REALITY refers to a secure handshake mechanism, so they aren’t interchangeable options. A working configuration may also require a transport, server name, and authentication details. Keep the parameters supplied by the service when importing. Change an option only after confirming the server requires it; recognizing the protocol alone doesn’t guarantee compatibility.

Open-source licensing across three clients

v2rayN, v2rayNG, and v2flyNG are open-source graphical clients, with source code available under each project’s license. The interface, connection core, and bundled components may use different licenses, so review each license separately before distributing or modifying them. Open source describes how code can be used and developed; it doesn’t mean the client projects provide subscription services, remote servers, or network access.

Choose based on what you need: for desktop subscription management and system proxy settings, start with v2rayN; for Android configurations using Xray, look at v2rayNG; for the V2Fly core, consider v2flyNG. They share some concepts, but menus and backup formats differ. When moving between devices, reuse the subscription URL where possible and check interface preferences and routing rules separately. Don’t overwrite one app’s entire setup with another’s.

Client updates vs. subscription updates

Updating a client replaces the app; updating a subscription fetches connection configurations. They solve different problems. If subscription details change, reinstalling the app usually won’t refresh the list. If the app’s features or compatibility change, updating the subscription won’t upgrade the core. Identify what needs updating, then use the corresponding option to avoid deleting existing configurations by mistake.

Before upgrading, back up subscription groups, custom routing rules, and any settings you need. Note the core and traffic capture mode you’re using. After the upgrade, retest with an existing configuration, then check custom rules, background activity, and system proxy status. If the interface has changed, look for settings by their purpose rather than relying on old screenshots. The download page brings package choices together; the home page doesn’t pin a specific version, so you can review package selection separately from version details.

Use logs to identify the failing layer

A running connection indicator only means the client has started its connection workflow; it doesn’t confirm that a site is reachable. First check whether the subscription updated and a configuration is selected, then look for core startup errors, and finally check DNS resolution and the remote connection. Timeouts, authentication failures, port conflicts, and DNS errors call for different fixes. Keep the relevant error message and avoid changing several settings at once.

Latency tests vary, too. A connection test mainly measures the endpoint’s response, while a real visit also depends on the destination, DNS, and routing. One result can’t represent how every app will perform. Retesting against the same target gives you more useful comparisons than relying on a single result in the list. For a full diagnosis, follow the sections in the system setup guide. Before sharing logs, remove subscription URLs, authentication details, and personal network information.

Checks before and after connecting

Frequently asked questions

Identify the specific symptom, then read the relevant guide. Keep track of the steps that reproduce the issue, and change one variable at a time while troubleshooting.

Why is the list still empty after I save a subscription?

Saving the URL creates a subscription group, but you still need to update it. First make sure you’re viewing the right group, then check the update result. If the response is a web page rather than recognizable subscription data, ask the configuration provider what the URL is for. Don’t import a service management page as a subscription link.

Troubleshoot subscription imports →

How do the system proxy and global routing differ?

The system proxy determines which apps use the local proxy based on system settings. Global routing generally means that traffic reaching the core uses a proxy outbound route. One controls whether traffic gets in; the other determines where it goes afterward. Changing to global routing may not help an app that doesn’t use the system proxy.

Understand proxy modes and routing terms →

Why can’t I access anything even though it says connected?

Choose one test destination and confirm that the configuration works, then check whether the target app uses the proxy. If your browser works but another app doesn’t, focus on the traffic capture method. If every destination fails, check the logs for DNS, authentication, and timeout errors. Keep the original configuration and avoid changing several settings at once.

Troubleshoot connection problems →

Can I use the same subscription on a computer and phone?

If your service allows multiple devices and each client supports the subscription’s configurations, you can add the same URL on each device. A subscription syncs connection entries, but may not include custom DNS, routing, or interface preferences. Check the service’s device and concurrent connection limits. Before sharing a QR code or backup, make sure it doesn’t expose authentication details.

Set up multiple devices →

Keep reading

Setup guides and device support

Get a basic connection working first, then expand the setup for your needs. These guides cover TUN traffic capture, subscription formats, and syncing across devices. Read them one at a time after verifying the basic settings.