Project V Ecosystem Clients and Documentation

V2Ray Downloads Clients & Setup Guides

Start with an open-source GUI client, download it for your platform, import a subscription, then configure routing.

Xray · V2Fly Subscription Management Setup Guides

V2Ray Subscription and Proxy Setup

Import your connection profiles first, then choose which traffic to route through the client. These five common settings follow the usual setup sequence.

Import subscription URLs and single-server links separately

Subscriptions are useful for maintaining a set of connections over time. Add the URL under Subscription Groups, save it, and update the group. Then check that server entries appear. Import a single-server share link from the clipboard instead; don't paste it into the subscription URL field. Subscriptions reduce the need to edit entries one by one, but an update may replace existing entries. Name groups by source, keep manually configured profiles in a separate group, and check the error message if an update fails. Subscription URLs may contain access credentials, so hide the full URL before sharing a screenshot.

Subscription Groups → Subscription Group Settings
Add → Remarks / URL → OK
Subscription Groups → Update Subscriptions
Read the subscription import guide →

Connection profiles, traffic entry, and routing rules

These three layers answer different questions: the server configuration determines where to connect and which protocol to use; the system proxy or TUN determines how app traffic reaches the client; routing rules determine which outbound route it takes. A successful import only means the client read the configuration—it doesn't mean apps are using the proxy. Browser access also doesn't guarantee that every desktop app uses the same system settings. Understanding the layers helps avoid changing unrelated options when troubleshooting.

For your first test, keep the default listening address, leave LAN sharing off, and hold off on complex rules. Confirm that one connection can complete a real request before making changes. Record the original value each time you adjust a setting. If something breaks, reverting the last change makes the cause easier to find than changing the protocol, core, and routing all at once. The settings window shown here illustrates how the options relate; menu names may differ in your installed client.

Choose a V2Ray client for your platform

Start with v2rayN on desktop or v2rayNG on Android. Check CPU architecture, package format, and system requirements on the client download page.

Windows

Top pick: v2rayNDesktop / WPF

A good fit for desktop users who need subscription groups, routing management, and a graphical settings interface. The download page offers both Desktop and classic WPF versions: Desktop uses a cross-platform interface, while WPF retains a familiar desktop workflow. These are two interfaces, not two proxy protocols; connection support depends on the core and configuration.

Check your operating system and processor before choosing an installer. Back up any existing settings, and avoid running two instances that use the same listening port. After launching the client, import a subscription and select a server before enabling the system proxy. Simply opening the window doesn't route traffic from every app.

Go to downloads →

macOS

v2rayNApple Silicon / Intel

Before downloading v2rayN for macOS, check which chip your Mac uses. Find the chip or processor information under About This Mac, then choose the Apple Silicon or Intel installer. Matching file extensions don't mean the architectures are the same; the wrong build may fail to launch or require extra compatibility steps.

If a system security alert appears on first launch, verify the download source and read the alert before following the relevant system settings. Don't disable security features across the board. You can reuse an existing subscription, but check system proxy permissions, TUN permissions, and file paths on this Mac rather than copying settings from another desktop platform.

Go to downloads →

Android

Top pick: v2rayNGAlternative: v2flyNG

Start with v2rayNG, which uses the Xray core. If you need compatibility with a V2Fly configuration, consider v2flyNG. arm64 is the usual choice for modern devices; check the universal package notes if you aren't sure about the architecture. The device's supported instruction set is the best guide, not just the year it was released.

When you start a connection on Android, the system asks for VPN permission so the client can route traffic. This does not mean the app includes a remote server. If the connection stops in the background, check battery optimization and background activity permissions. After importing a subscription in v2rayNG, update the group, select an entry, and start the connection.

Go to downloads →

Linux

v2rayNdeb / rpm

Choose deb or rpm for your distribution, then check whether your device uses x64 or arm64. The download page features x64, with arm64 options listed as well. Your desktop environment, system components, and permission policies can affect how the client runs. Check the platform requirements before installing rather than choosing a package based only on whether it downloads.

System proxy behavior varies across desktop environments, and some apps may need a proxy address configured manually. Test the connection in a browser first, then configure other apps. If you plan to use TUN, check its permission and routing requirements too. Avoid running the entire program with elevated privileges just to get the interface to launch.

Go to downloads →

Get started with V2Ray: import, connect, test

Get a subscription URL or share link from a trusted source and make sure it's still valid. The client reads the configuration and makes the connection; installing it doesn't provide a server.

  1. Install a client and import your configuration

    Choose an installer for your device platform and processor. Enter subscription URLs under Subscription Groups; import single-server links using the clipboard option. Save the subscription and update it, then check for server entries. If the list is empty, check the update message, make sure the URL is complete, and confirm that its format is supported. Don't keep clicking Start.

  2. Select a server and configure traffic routing

    Select the entry you want to use. On desktop, start with the system proxy; on Android, grant the requested connection permission. Keep the default routing preset and avoid changing DNS, TUN, and custom rules at the same time. If another proxy tool is running on the device, exit it first to prevent port conflicts or overlapping system settings.

  3. Make a real request and check the logs

    Open a site you use or a target app and confirm that a request completes. Latency tests are only a guide, not a substitute for actual access; a probe can fail even when the connection works. If access fails, check subscription validity, core status, app routing, and rule order one layer at a time. Change only one setting per test.

Turn off the system proxy before exiting. Save working settings before changing configurations or upgrading the client. If you need to share troubleshooting details, include only the relevant error and hide subscription URLs, identifiers, and server credentials.

Read the full guide →

How Project V, V2Fly, and Xray fit together

Clients, cores, and protocols operate at different layers. Understanding the distinction is more useful than guessing compatibility from a software name.

GUI client

v2rayN · v2rayNG · v2flyNG

Connection core

Xray · V2Fly

Protocols and transports

VMess · VLESS · Trojan · Shadowsocks

Project V is the ecosystem behind the tools, not a download button

V2Ray originated in Project V, which provides modular capabilities for handling network connections. The windows, subscription lists, and toggles users see day to day usually come from separately developed GUI clients. A client translates interface options into core configuration, which the core then executes. In practice, “V2Ray download” usually means downloading a client for your device—not editing every low-level setting directly. This site puts platform selection and getting-started steps first, with protocol and configuration references for readers who want to go deeper.

This also explains why two clients can import the same link but show different menus. The client controls how its interface is organized; whether link fields actually work depends on both core capabilities and the client's parser. If a feature is missing, first determine whether the issue is a missing interface option, unsupported import format, or unavailable core feature. That makes it easier to choose the right fix.

V2Fly and Xray share roots, but their features aren't interchangeable

V2Fly continues the V2Ray community's development path, while Xray has developed its own features from related code. They share concepts around common protocols and configurations, but transports, flow-control fields, and implementations continue to evolve. REALITY is a transport security mechanism, not a standalone proxy protocol on the same level as VMess or VLESS. A common setup combines VLESS, REALITY, and a specific flow-control mode; check that both ends support the combination before using it.

Choose a core to match the server configuration, not to rank performance by name. Connection time and resource use also depend on the device, network path, server load, and transport settings. On mobile, battery use is affected by background activity, network changes, and request frequency—not just the protocol name. For a closer look at design trade-offs, read the protocol and core reference.

Three open-source clients, each with a different focus

v2rayN focuses on desktop server management, subscription groups, and routing, making it a good fit for users managing multiple connection profiles. v2rayNG provides a GUI for Android and follows the Xray core; v2flyNG is an Android alternative in the V2Fly ecosystem. All three publish their source code. Check each project's license for its specific terms. A client and its bundled core may use different licenses, so the whole ecosystem shouldn't be described as having a single license.

Open source makes it easier to inspect implementations and track changes, but it doesn't guarantee that every configuration is reliable. Subscription sources, server management, and device permissions still need to be assessed independently. This site provides client download links and usage guides; it is not the development team behind these projects. The site name does not imply official affiliation with them. Before using a connection service, make sure you have the required authorization and follow applicable rules.

Treat client, core, and subscription updates separately

Client updates mainly affect the interface, import logic, and management features; core updates affect protocol implementation; subscription updates fetch server entries again. Updating one doesn't mean the other two have been updated. If a new link format isn't recognized, the client may need an update. If the link is recognized but the connection fails, check core logs and parameters instead of repeatedly updating the subscription. Back up a working configuration before making changes, then update one component at a time to keep troubleshooting clear.

Connection timeouts, DNS failures, and handshake errors in the logs point to different layers. For a timeout, check server reachability and the network path. For a DNS failure, check DNS and the domain. For a handshake failure, verify the system time, transport security, and identity parameters. Don't assume every error means the server is down. See the guides to V2Ray connection problems, latency test issues, and speed test results for help with each case.

Configuration Guides and Tips

Sorted by publication date, newest first. Start with links and configuration structure, then explore protocol internals. You don't have to read in publication order.

Configuration

V2Ray Config JSON Explained: Understanding inbounds, outbounds, and routing

Breaks configuration into four parts—inbounds, outbounds, routing, and logs—and shows where each field appears in the client interface. For users who can already import a connection and want to understand the configuration behind it. Follow a request from the local listener through rule matching to its outbound route; there's no need to memorize every parameter at once.

Read article →
Getting Started

What Are vmess:// and vless:// Share Links? Single-server Links vs. Subscription URLs and How to Import Them

A share link describes one connection, while a subscription URL provides an updateable source; use a different import option for each. This article explains their encoded structure and update behavior, then walks through importing from the clipboard or Subscription Groups in v2rayN and v2rayNG. If nothing appears after pasting, first check which type of link you have.

Read article →
Deep Dive

REALITY and XTLS Vision Flow Control Explained: How Avoiding Redundant Encryption Can Improve Speed

Explains how Vision flow control and the REALITY handshake address different overheads related to nested TLS, and which fields to check when combining them. The focus is on design trade-offs and configuration—not treating any single mechanism as a speed guarantee. Best read after you've set up a basic connection; that experience makes it easier to distinguish protocols, transport security, and flow control.

Read article →