CLIENT / CONFIG / ROUTING

V2Ray Proxy Client v2rayN Setup

Download and set up open-source clients for four platforms. Explore subscription imports, traffic routing, core selection, and configuration references.

NET
{VMess} {VLESS} {Trojan} {Shadowsocks}

01 / CLIENT SHELF

V2Ray client downloads by platform

Check your operating system and processor architecture before choosing a package. Use v2rayN on desktop; on Android, start with v2rayNG and compare v2flyNG if you need a V2Fly core. Package selection and connection settings are separate checks: after installing the client, you still need to import a working configuration.

Windows

v2rayN / Desktop · WPF

The desktop edition has a cross-platform interface, while the WPF edition retains the classic desktop workflow. Check the package type before downloading; these are two ways to use the client, not separate protocols. If you already have a configuration, save your subscription groups, routing settings, and local listening port details before migrating.

For your first connection, import one profile, select an active server, and then set the system proxy. If a browser connects but other apps do not, first check whether those apps use the system proxy instead of repeatedly switching servers. The two editions may have different interfaces, so follow the menu labels in your current version.

Download Windows client

macOS

v2rayN / Apple Silicon · Intel

Check your chip under “About This Mac.” Apple Silicon and Intel require different packages, so don’t rely on the file extension alone. Move the app to Applications, then follow any system prompts to confirm opening it and grant network access. Avoid repeatedly launching it from a temporary location.

Check system proxy settings and traffic-capture permissions separately. If connections behave differently after an upgrade, first confirm that the client has started its core, then check that the system proxy points to the current listening port. Follow the security prompts in System Settings if you need to address a developer warning; don’t disable system security altogether just to launch the app.

Download macOS client

Android

v2rayNG / v2flyNG

v2rayNG primarily uses the Xray core, while v2flyNG offers the V2Fly core. The apps have similar names, but that doesn’t mean they support the same protocol fields. Before choosing, check whether your configuration uses REALITY, a specific transport, or other core-specific parameters.

Choose an arm64 or universal package for your device, then import a subscription and approve the system VPN permission. This permission lets the app handle device traffic; it does not include a remote service. If the connection drops when the app moves to the background, check battery optimization, background activity limits, and conflicts with other VPN apps.

Download Android client

Linux

v2rayN / deb · rpm

Check your distribution’s package format, then choose between x64 and arm64. deb and rpm are package formats, not connection protocols; choosing the wrong one causes an installation issue, not a routing issue. Proxy settings in a graphical session may also depend on the desktop environment, so don’t assume every app will inherit them automatically.

After installation, check the local listening port and core status, then configure your browser or desktop system proxy. Terminal apps may need proxy parameters set separately. If only one app fails, first check its proxy settings. If you need to route more traffic, assess the client’s TUN support and permission requirements.

Download Linux client

02 / CONFIG INSPECTOR

Subscriptions, Routing, and Core Settings

The client manages settings through its interface; the core handles connections and traffic routing. The sections below cover these separately: subscription groups are client-managed data, while inbounds, outbounds, routing, and DNS are common core settings. Code snippets show specific sections only; don’t use them to replace an entire runtime configuration.

config.json / outbounds excerpt

Subscriptions let you fetch connection profiles in bulk; groups help organize them by source in the client. Create a group, add the subscription URL, and update it. Then confirm the returned profiles can be parsed by your client. Check the node names, protocols, and transport fields—not just whether entries appear in the list. Group names and automatic update intervals are client settings, not universal core fields. The example below shows an outbound structure that might be generated after import. It contains no remote credentials and cannot establish a proxy connection on its own. To manage multiple sources, add filters while keeping the original groups.

{
  "outbounds": [
    { "tag": "direct", "protocol": "freedom" },
    { "tag": "block", "protocol": "blackhole" }
  ]
}

03 / OPEN-SOURCE ECOSYSTEM

Project V, V2Fly, and Xray

Clients, cores, protocols, and remote services operate at different layers. Understanding these distinctions helps explain why the same subscription can behave differently across apps, and keeps troubleshooting focused on the right issue—permissions, DNS, or server parameters.

ORIGIN / PROJECT V

Ecosystem Projects and Runtime Cores

Project V is a useful starting point for understanding the V2Ray ecosystem. V2Ray organizes proxy capabilities around inbounds, outbounds, transport, routing, and DNS resolution; configuration files connect these components. In everyday searches, “V2Ray client” usually means a graphical app for managing these features, not necessarily a specific core. Before downloading a client, check whether you’re choosing a management interface or the program that handles connections.

V2Fly continues V2Ray’s community development, while Xray is a separate core branch with its own protocol and transport extensions. The two share a background and some basic configuration concepts, but that doesn’t mean every field is compatible. When comparing guides, check which core each example targets and whether it matches the core your client actually runs—not just the field names.

CLIENT / THREE APPLICATIONS

What the Three Open-Source Clients Do

v2rayN is designed for desktop systems and handles subscription management, server selection, route editing, and local proxy settings. Its cross-platform interface offers a similar workflow across desktop systems, but permissions, installation, and system proxy behavior still vary by operating system. When moving to another device, transfer only the configuration you need, then check listening ports and traffic-capture mode. Don’t copy all the environment settings from another machine without checking them.

v2rayNG and v2flyNG are Android clients, commonly used with the Xray and V2Fly cores, respectively. Both are open source; compare their core capabilities, supported fields, and app settings to choose between them. A subscription importing successfully doesn’t guarantee every profile will work. After parsing, check the protocol, security layer, transport parameters, and system permissions. If you use the same source on desktop and mobile, test it on each device separately.

LICENSE / SOURCE CODE

Open-Source Licenses and Usage

The V2Fly core is licensed under MIT, while Xray-core uses MPL-2.0. Check the licenses for the client, core, and bundled components separately. Open-source licenses define conditions for using and distributing code; they don’t describe remote service pricing or guarantee the same behavior across network environments. The client is free to use, but users must arrange their own server and subscription for connections.

An open-source ecosystem makes implementations available for discussion, review, and improvement, and helps pinpoint issues in specific components. But public code doesn’t remove the need to assess where configurations come from, what network permissions they require, and how data is handled. Before importing a configuration, find out who provides the server. Before sharing troubleshooting details, remove subscription URLs, identifiers, and authentication parameters; include only the fields needed to reproduce the issue.

UPDATE / COMPATIBILITY

Client Updates and Configuration Migration

Client, core, and subscription updates change different things. A client update may change the interface, how configurations are generated, or system integration. A core update may change protocol support or how fields are handled. A subscription update mainly replaces remote connection details. When behavior changes, first identify which layer was updated, then decide whether to review logs, restore settings, or import the subscription again. Avoid making several changes at once, so you can tell what fixed the issue.

Before upgrading, save a restorable copy of your client settings and custom rules. After upgrading, test a connection that worked before. Once basic access works, check routing, DNS resolution, and local network sharing. Don’t treat a “running” status in the interface as proof that everything works: a successfully started core only confirms that the process is running. Check the app’s proxy settings and routing results in the logs to verify that requests use the intended outbound.

READING / CONFIGURATION PATH

From Connection Parameters to Routing Rules

For your first setup, follow a consistent order: verify the remote address, port, and authentication details; then check the protocol, transport, and security layer. Start a local inbound and test one connection. Add complex routing only after the basic path works. This makes it easier to distinguish a failed connection from a rule sending requests to the wrong outbound, and prevents incorrect DNS results from being mistaken for protocol incompatibility.

When reading JSON, find the inbound and outbound tags first, then follow the routing rules to see how they connect. Domain and IP lists in rules may depend on external data files; a missing file and a malformed rule are different problems. For a field-by-field reference, see the full configuration guide. If you just need to import a profile and connect for the first time, follow the quick start guide; you don’t need to enable every advanced feature at once.

Four Common Questions Before You Configure

What’s the difference between a subscription URL and a single connection?
A subscription fetches a set of connections that can be updated; a single share link contains the details for one connection. After importing, check the source group and select an active profile so updates don’t get mixed up with manually added entries. Browse FAQs →
Are VMess, VLESS, and REALITY settings at the same level?
VMess and VLESS are proxy protocols; REALITY is a security-related transport technology. Don’t choose a client based on one name alone. Check the combination of protocol, transport, and security parameters. Browse the glossary →
Why do some apps connect directly even when the system proxy is on?
Some apps don’t use the system proxy and need proxy settings entered directly or another traffic-capture method. First verify that the app’s requests reach the local listening port, then check the outbound and routing rules. A proxy toggle alone doesn’t show where all traffic goes. See connection checks →
The core failed to start. What should I check first?
Start with the first clear error. Check for JSON syntax issues, a port conflict, an unknown field, or a missing data file. Later connection errors in the log may simply result from the startup failure, so begin with the earliest cause. Read troubleshooting steps →

04 / FIELD NOTES

Client Configuration Guides

Find guidance for specific tasks. Before making changes, identify whether the issue involves listening, permissions, generated configuration, or the remote connection, then open the relevant guide. Snippets explain how settings relate; use parameters that match your environment.