Choose an open-source client for your platform and follow the setup guides to import subscriptions and configure routing. Start with v2rayN on desktop or v2rayNG on Android.
Choose your operating system first, then check your processor architecture. v2rayN is the main desktop option; on Android, start with v2rayNG, which uses the Xray core. Choose v2flyNG if you need a V2Fly-based setup. An installer provides the app, but connecting also requires a working service configuration. Downloading a client does not create a subscription URL.
You don't need to install several clients at once. Start by importing a configuration, launching the client and verifying access with one app, then consider moving existing settings. Changing installer formats does not change the server's protocol requirements. Handle architecture mismatches, incomplete protocol fields and expired addresses as separate issues.
v2rayN offers a desktop version and a classic WPF version. The desktop version uses a cross-platform interface, while WPF retains the classic layout. Choose based on your system requirements, then compare the interfaces if you already have established preferences.
The download page lists the available installation methods. After the first launch, check that the core starts before importing a subscription. If your system says the app can't run, check the processor architecture and runtime requirements first; repeatedly switching nodes won't fix an installation issue.
v2rayN has separate installers for Apple Silicon and Intel. Check the chip or processor in About This Mac: Apple Silicon corresponds to arm64, while Intel corresponds to x64. Don't rely on the computer's appearance to identify its architecture.
After installation, configure your subscription and system proxy. If macOS displays a security warning, check the download source and the warning details before following the system's instructions. Moving the app to a permanent location also makes configuration and updates easier to manage.
Start with v2rayNG; v2flyNG is an alternative that uses the V2Fly core. Most recent phones use arm64. If you're unsure of your device's architecture, check the system information before considering a universal package.
Your first connection requires you to approve the system VPN request. Background activity, battery optimization and per-app proxy settings can also affect performance. If the connection drops when the screen locks, check battery management first rather than assuming the subscription or protocol is at fault.
v2rayN provides deb and rpm packages for x64 and arm64. Check which package format your distribution uses, then confirm your processor architecture. Package format and desktop environment are separate considerations.
After installing the GUI client, whether apps use the system proxy depends on the desktop environment and each app's settings. If your browser works but other programs don't, check those programs for their own proxy settings. Command-line tools may also require proxy options to be set separately.
Subscription groups keep configurations from different sources separate. In the group settings, enter a label and the full URL, enable updates, run a manual update, then check that configuration entries appear. A subscription URL provides a set of configurations; it is not the same as a single-node share link. Group updates make it easier to sync server-side changes than adding each entry manually, but a failed automatic update doesn't necessarily mean an existing connection is broken. Check the logs for request errors or format warnings, verify that the link hasn't expired, then decide whether to change the update method. Menu labels may vary slightly between client versions.
Subscription Groups → Address (URL)Updates enabled: OnAuto-update interval (minutes)
Once the core is running, desktop apps still need to send requests through the local proxy. Choose “Set system proxy automatically” to let apps that respect system settings use the proxy provided by the client. The system proxy does not route traffic from every app. Compared with merely starting the core, this step determines how apps reach the proxy. If a program still connects directly, check whether it has its own proxy settings. Before exiting, clear the system proxy so it doesn't point to a listener that has been shut down. “Leave system proxy unchanged” preserves the existing system configuration.
System proxySet system proxy automaticallyBefore exiting: clear system proxy
Routing determines whether connections entering the core go direct, through a proxy or to another outbound. Start with a preset suited to where you need access, then add rules for specific domains. The system proxy handles the entry point; routing rules determine where traffic goes next. Unlike using a single outbound for everything, routing can handle local services and remote sites separately. When editing rules, check their order, domain matching and DNS results. Avoid replacing multiple rule sets at once. Global mode can help with temporary comparisons, but it does not automatically cover apps that bypass the system proxy.
RoutingBypass mainland China (Whitelist)Global (Global): use for comparison when needed
The client organizes settings and provides the interface; the core handles the actual connection. When choosing a core type, check the protocol, transport and security-layer fields such as TLS or REALITY. Being able to import a configuration does not mean the current core supports every parameter. A multi-core interface can accommodate a wider range of configurations, but switching cores may change which fields are supported. If your current setup works, there's no need to switch just to use a newer name. If startup fails, read the configuration error and compare it with the core's capabilities rather than assuming it's a network problem.
Core typeXray / v2fly / sing-boxChoose based on the configuration's requirements
The local SOCKS and HTTP ports are how apps connect to the client, so their values must match the proxy settings in those apps. If another program is using a port, the core may fail to listen; the logs often provide a clue. Confirm that the listener is running before troubleshooting the remote connection. Logs can help distinguish configuration errors, port conflicts and handshake failures better than the connection button alone. Keep access local if the client is only for this device. “Allow connections from the local network” expands access; before enabling it, consider your firewall, listen address and how much you trust the network.
Local SOCKS portLocal HTTP portAllow connections from the local network: enable only if needed
Once installation is complete, work through the steps in order: load a configuration into the client, route apps through the proxy, then let routing rules direct requests. A problem at any of these stages can look like a connection failure. Checking each step separately is more effective than changing the protocol, DNS and ports all at once. Use the quick overview below, then follow the full guide for exact menus and steps.
Import a subscription and check its entries
Add a URL and update a subscription group in v2rayN, or use the corresponding import option in v2rayNG. When copying a link, check its beginning and end and watch for line breaks so you don't include surrounding text. After updating, check the group, protocol type and remarks for each entry, then select one as the active configuration.
An empty subscription response and a failed request are different problems. The first may point to a service issue or an unexpected response format; the second calls for checking the URL and request error. Don't post your subscription URL publicly or assume from its appearance whether it contains access credentials. If you need help, share an error description with sensitive details removed.
Choose a mode and start the local proxy
On desktop, confirm the core is running, then choose a system proxy mode and routing preset. On Android, check the connection configuration and approve the system VPN request. Keep custom settings to a minimum during the first test so you can verify that the configuration itself works. If another proxy tool is running, check for conflicts involving local ports or system proxy settings.
If an app has its own proxy settings, point them to the address and port the current client is listening on. Don't enter a SOCKS port as an HTTP port. Only adjust LAN access, extra inbound connections or complex routing if you need them; first establish a basic configuration you can test repeatedly.
Test access, then check the error logs
Open the target site in your usual browser and confirm that local services are still accessible. A single failed attempt doesn't prove the protocol is unusable: DNS resolution, system time, app proxy settings and server status can all play a part. First check whether the core started, then see whether the request reached the proxy.
V2Ray latency tests and V2Ray node speed tests serve different purposes. A connection test reflects only a particular target at a particular time; it can't replace testing the sites you actually use. If you see a timeout or handshake failure, note the error type, change one setting at a time and retest against the same target to see whether the change helped.
“V2Ray” is often used as an umbrella term for a family of configurations and clients, but downloads involve several distinct layers. Project V is an important starting point in this ecosystem, and V2Ray provides composable network proxy capabilities. The V2Fly community continues V2Ray development and maintenance, while Xray is a separate core line developed from related code. They share some concepts and configuration conventions, but their capabilities do not evolve in exactly the same way.
What clients and cores do
GUI clients provide groups, menus, subscription updates and connection controls. Cores parse configurations, establish connections, match routes and handle traffic. So a similar-looking client interface doesn't guarantee identical underlying capabilities. A client may also gain support for new configuration options as its core is updated. To assess compatibility, consider both the client and the core it uses, not just the app's name.
v2rayN is designed for desktop environments and supports multiple core configurations. v2rayNG is an Android client that uses the Xray core, while v2flyNG is an Android alternative based on the V2Fly core. All three are open-source software, with different features and use cases. Choose based on your device and existing configuration. Desktop and Android menus don't need to match; just check that the key fields express the same connection requirements.
A protocol name alone doesn't determine performance
VMess, VLESS, Trojan and Shadowsocks are common protocol types. REALITY is related to the security layer, so these are not all mutually exclusive options at the same layer. A working configuration may also require transport settings, a server name, certificate verification and flow control. Configure the client to match the combination provided by the server; changing only the protocol dropdown won't make a connection work.
You can't rank connection speed, resource use or mobile battery life by protocol name alone. Server distance, link quality, the handshake, transport encapsulation and device performance all affect results. If your current configuration is stable, keep using a solution that meets your needs. For comparisons, test on the same network against the same target at around the same time. For most users, complete fields, core support and maintainable settings matter more than chasing a particular protocol name.
Open-source licenses and usage
Open source means the code is available under the license adopted by each project; it doesn't mean every component uses the same license. Clients, cores and their dependencies may be subject to different terms. Read the license accompanying each project before using, modifying or redistributing it. Open source makes implementation and maintenance easier to review, but it doesn't replace checks on the runtime environment, service source or configuration.
The client itself does not provide a remote server or generate a working account for you. Subscription URLs, credentials and expiration dates depend on the configuration provider and are separate from whether the local app installed successfully. This site organizes downloads and setup guides to help clarify these distinctions. For service-specific issues, check the provider's guidance alongside the client logs.
Client updates and subscription updates are different
A subscription update fetches configuration data; a client update replaces the app, while a core update may affect protocol support and configuration parsing. These are not interchangeable. A successful subscription update doesn't mean the app is up to date, and installing a new client won't automatically fix an expired service address. Identify which layer is causing the issue before choosing an action to avoid unnecessary reinstalls.
Before updating, note your routing mode, custom rules and local listener settings, and use the client’s built-in method to save any configuration you need. After updating, test your usual setup before enabling new features one at a time. When switching cores, pay particular attention to protocol fields and DNS behavior. Configurations that worked in one environment still need to be tested with another core; don't assume compatibility.
Where to start troubleshooting
v2rayN subscription update failed: Check that the URL is complete and hasn't expired, then review the request result in the logs. If nodes still work, troubleshoot subscription retrieval first rather than deleting all your configurations. See the terminology guide for the difference between a subscription and a node.
V2Ray won't connect: Check core startup, local listening, app proxy settings, routing and the remote handshake—in that order. A failure in one browser calls for a different approach than a failure in every app. Handle configuration errors separately from connection timeouts. Review the core, listening and routing terminology, then follow the guide.
V2Ray node speed test results differ: Test methods may use different targets and connection steps. A result showing that a node connects doesn't mean every site will be accessible, and one test can't predict long-term performance. Check what the test measures, then compare it with your actual use case. See the terminology guide for related concepts.
Once you have a basic connection working, explore the guides that address your specific questions. Protocol introductions help identify the types used in subscriptions; custom routing articles explain rule order; and the router deployment overview covers running a core outside a GUI client. Check which layer an article covers before applying its advice to your device, and keep server-side settings, desktop options and gateway configuration separate.
An overview of ways to run the Xray core directly on a router or secondary gateway, comparing network topologies and outlining basic hardware, memory and storage requirements.
A practical breakdown of domain, full, regexp, ip, geosite and geoip syntax, how rules are matched from top to bottom, and ways to troubleshoot common misconfigurations.
A concise comparison of encryption, configuration fields and client compatibility to help you identify subscription protocols and check required parameters before importing.