Android & Desktop Clients/Setup Guides

V2Ray Downloads Setup Guides

From downloading v2rayNG for Android to setting up v2rayN on desktop, choose the right package for your device, then import subscriptions and configure routing.

Import subscription URLs and node links separately

A subscription URL provides updates for a group of nodes, while an individual node link describes a single connection. In v2rayN, open “Subscription Group Settings,” add the URL, save, and then update the subscription. In v2rayNG, open Subscription Group Settings from the side menu. Give each group a clear source name so you can update only the one you need. After importing, confirm that nodes appear in the list, then select one and test the connection. Subscriptions are easier to manage in bulk than entering nodes one at a time, but check the logs to confirm an update succeeded—a list that still shows old nodes is not proof of a successful update.

Read the subscription import steps →

Steps

  1. Subscription Group Settings → Add Group
  2. Enter a name and subscription URL → Save
  3. Update subscription → Check the result
  4. Select a node → Connect

Subscription URLs often contain access credentials. Hide the full URL before sharing screenshots.

Setting names can change between client versions. If you can’t find an option with the same name, first check whether you’re using desktop v2rayN or Android v2rayNG. They can use similar node details, but their menus, permissions, and traffic-capture methods differ. For server-side transport settings, follow the instructions from your service provider.

Choose by device

V2Ray client downloads

For desktop, start with v2rayN; for Android, start with v2rayNG. Even within the same platform, check the processor architecture. The file format determines how to install a package, while protocol support depends on the core and configuration—not just the package name.

Windows

v2rayN desktop and classic WPF editions

The desktop edition has a newer cross-platform interface, while the classic WPF edition retains its familiar layout. If you’re new to v2rayN, start with the desktop edition guide. If you already have a reliable workflow, choose whether to switch based on your needs. Both editions require valid node details; installing the client does not provide connection access by itself.

Before installing, open “Settings → System → About” and check the system type and device architecture. Before migrating, keep your subscription URLs, routing settings, and any essential custom configuration. Don’t overwrite the new install directory with the old one. On first launch, test a node before setting up the system proxy. Once your browser works, consider TUN mode if you need to capture traffic from other apps.

macOS

Choose a v2rayN package for your processor

Open “About This Mac” from the system menu. If it shows an Apple chip, choose the arm64 package for Apple Silicon; if it shows an Intel processor, choose the x64 package. Check the chip first, then the system requirements, to avoid downloading a package for the wrong architecture.

After installation, follow the system prompts to allow the app to launch, then import a subscription. System proxy settings, browser extension proxies, and terminal proxies are separate layers: access in a browser does not mean terminal programs use the same outbound. If apps behave differently, check where each one gets its proxy settings instead of reinstalling the client. If you already use other network tools, avoid letting them change the system proxy at the same time.

Android

Use v2rayNG first; consider v2flyNG as an alternative

For most recent Android phones, start by checking the arm64 package. If you’re unsure of your device’s architecture, see the universal build notes. v2rayNG uses the Xray core; v2flyNG uses the V2Fly core. Choose the alternative client to meet a configuration compatibility need—not to run both clients at once.

On the first connection, approve the system VPN request. Then check whether per-app proxy settings exclude the app you want to use. If the connection drops after the screen has been locked for a while, check battery optimization and background activity limits. Test with the default traffic-capture scope first, then narrow it to specific apps if needed. This makes it easier to tell a node issue from an app setting. Before updating, keep your subscription and custom rules; reinstalling should not be a routine troubleshooting step.

Linux

Install v2rayN on Linux with deb or rpm packages

Check your distribution’s package format first, then your processor architecture. Debian- and Ubuntu-based systems generally use deb; Fedora and some other distributions use rpm. Most desktop computers use x64. For an ARM device, choose the matching arm64 file—don’t rely on the distribution name alone.

After installation, import a subscription in the GUI and confirm that the core starts. Desktop proxy settings and terminal environment variables may not be in sync, so check the settings a program reads if it isn’t using the proxy. If TUN affects local network or container connectivity, turn it off to restore the original network, then check routing and permissions. The download page lists package formats and architectures separately so you can choose the right file for your system.

Browse all client downloads →

Quick-start preview

Import a subscription, connect, and test

Start with the shortest path to a working connection, then adjust advanced settings. These three steps give you a baseline for troubleshooting: change one thing at a time and note the result. This is usually more effective than switching cores, DNS, and routing all at once.

  1. Import node details and check their source and type

    Get a working subscription URL or individual node link. Add a subscription URL under Subscription Group Settings; for an individual link, use an import option such as Import from Clipboard. Don’t paste a webpage URL, subscription URL, and node link into the same kind of field. After importing, check that the node appears and has a sensible name, then look for errors in the update log.

    v2rayN and v2rayNG are client tools; installing them does not provide a server. If a subscription update fails, check that the URL is complete and hasn’t expired, and that your current network can reach the update endpoint. Seeing old nodes in the list only means the local data remains—it doesn’t prove the latest update succeeded. When sharing a screenshot, hide credentials in the URL and node authentication details.

  2. Select a node, then check how traffic is captured

    Select one node for the current connection; don’t change several groups of settings at once. On desktop, start with the v2rayN system proxy and a suitable routing mode. On Android, v2rayNG will ask you to approve a system VPN connection when it starts. After approving the system prompt, check that the client has started and that the target app is within the traffic-capture scope.

    Routing determines how traffic that reaches the core is handled; the system proxy or VPN service determines whether traffic reaches the client. These solve different problems. A browser extension with its own proxy, or an Android per-app exclusion, can bypass the current connection. Start with simple, easy-to-understand settings, confirm they work, then add specific rules one at a time.

  3. Test the target app and keep working settings

    Open the website or app you actually need and check that it loads, then review the client logs. An enabled connection toggle or a successful node test does not replace testing real traffic. If a page won’t load, check the system clock first, then DNS, node settings, and routing. If only one app has a problem, check whether it uses its own proxy or is excluded by per-app rules.

    Once the test passes, note the current node, routing mode, and DNS settings as a baseline for future changes. When enabling TUN or adding custom rules, test again after each change. If something breaks, return to the last working state instead of resetting everything. For step-by-step instructions, continue to the setup guides; for how configuration fields relate, see the JSON guide.

Read the full setup guide →

How clients and cores fit together

Project V, V2Fly, and Xray

Understanding how the ecosystem fits together helps you know which configurations apply where. Similar product names don’t mean every option is interchangeable. Distinguish the GUI client, the core, and the protocol to keep the steps in different guides straight.

Ecosystem history: similar names, different roles

Project V is a good starting point for understanding the V2Ray ecosystem. V2Ray organizes features such as inbounds, outbounds, and routing into a configurable networking tool. V2Fly continues the community development of V2Ray, while Xray grew out of V2Ray-related code and has developed its own features and configuration direction. These are not different skins of the same product, and a project’s name alone does not tell you whether it supports a particular protocol or field.

Most users interact with a GUI client. It provides controls for subscriptions, node lists, system proxy settings, and logs, while the core handles the actual data processing. An option shown in the interface does not mean every core accepts the same parameters. Before following a guide, check which client-and-core combination it covers.

Core projects: choose based on configuration needs

v2rayNG is an open-source Android client that uses the Xray core; v2flyNG is an Android alternative built on the V2Fly core. v2rayN is for desktop systems, and its protocol support depends on the core in use. A protocol name in a node link is only part of the configuration: the transport, TLS, server name, and other parameters also affect whether a connection works.

VMess, VLESS, and Trojan are not GUI styles, nor can they be ranked simply by speed. Real-world performance depends on the server implementation, network path, transport settings, and local environment. If your current configuration works, there’s no need to switch just because another protocol has a newer name. If you need a specific feature, check that the client, core, and server all support it.

Open-source licensing: understand each project separately

v2rayN, v2rayNG, and v2flyNG have public source code and are supported by their communities; the clients are free to use. At the core level, V2Fly’s V2Ray core and Xray core use the MPL 2.0 license. Each GUI client has its own license terms. A client and the core it calls are separate projects, so one project’s license does not cover every term for the entire software stack.

Using software normally and redistributing it after modifying the code are different scenarios. For derivative development or repackaging, read each relevant project’s license files and check your obligations for source code, notices, and distribution. This site focuses on setup and configuration. Open-source context is provided to explain how projects relate; it does not replace the actual license terms or mean this site participates in their development.

Updates: check the interface, core, and rules separately

A client update may affect the interface and dependencies; a core update may change protocol behavior or field support; GeoIP and GeoSite data updates may change which entries match in some routing sets. Treat these as separate kinds of changes. If something behaves differently after an update, check the release notes and logs, then confirm whether your routing and DNS settings are unchanged. Don’t assume the node is the cause of every change.

Keep a recoverable copy of your configuration before updating. Afterward, test a basic connection before checking custom rules. Menu names in older guides may have changed, and a configuration snippet may only work with a particular core. This site covers common operations in the setup guides, configuration structure and fields in the JSON guide, and specific troubleshooting cases in the practical tips section.

Practical guides

Troubleshooting connection and speed issues

“It doesn’t work” can point to the app, system proxy, DNS, routing, or server. These articles break down troubleshooting by symptom: identify what is affected first, then decide what to change. Avoid masking the real issue with repeated reinstalls.

Slow V2Ray speeds: diagnose nodes, network paths, and local settings

Break slow speeds into four areas—node load, network quality, transport protocol, and local settings. Test each layer to find the bottleneck and decide what to adjust.

Slow page loads and slow large-file downloads may have different causes. Keep the app and test conditions consistent, then compare nodes and network environments to reduce misleading results from random fluctuations. Don’t judge network quality from a single connection test.

Read the layered troubleshooting guide →

Connected to a node but can’t browse? A step-by-step checklist

Check system time, DNS, routing rules, per-app proxy settings, and the node itself in order to find why the client shows connected but you can’t get online.

First check whether all apps are affected or just one. Then use the logs to see whether requests are reaching the core. Don’t keep switching nodes if traffic isn’t being captured; if traffic is captured but DNS resolution fails, follow the DNS path next.

Read the connection troubleshooting checklist →

v2rayN system proxy not working? Troubleshoot browsers and terminals separately

If a browser isn’t using the proxy, check extensions and PAC settings. If a terminal isn’t using it, check environment variables. This guide covers both paths and includes commands to verify the settings.

The system proxy is not a switch that every program follows. First check which layer of settings the app reads, then verify the local listening address and port. Test browser extensions, terminal environments, and routing rules in the client separately.

Read the system proxy troubleshooting guide →

Browse all articles →