VLESS handles the proxy protocol and user identity, REALITY handles the connection handshake and authentication, and XTLS Vision changes how traffic is encapsulated. For users importing or manually configuring a REALITY node, this guide explains how the three fit together, when they can improve performance, and how v2rayN fields map to the address, SNI, public key, Short ID, and Flow.
What VLESS, REALITY, and Vision Each Do
“VLESS + TCP + REALITY + Vision” in a node name does not mean four interchangeable terms or four layers of encryption. Understanding their roles at different layers explains why two nodes both labeled VLESS can have very different settings and connection behavior.
- VLESS: A proxy protocol that carries information such as the user ID and destination address. Users are commonly identified by a UUID; the protocol itself does not encrypt content like TLS does.
- TCP: The transport used here. Newer Xray configurations and some interfaces may call it RAW; check the field descriptions for your client and core.
- REALITY: A transport security mechanism in the Xray ecosystem. It handles the handshake and server authentication, as well as what happens to unauthenticated connections.
- XTLS Vision: A VLESS flow-control mode, commonly set to
xtls-rprx-vision. It adjusts the shape of early traffic and, when conditions allow, reduces redundant encapsulation and encryption.
v2rayN is the management interface; the core it launches actually establishes the connection. When reviewing these settings, make sure the node is handled by an Xray core that supports the features in question—not merely that the client window opens. V2Fly and Xray have not evolved in lockstep, so a REALITY configuration cannot be assumed to work interchangeably just because both projects originated in the V2Ray ecosystem.
The REALITY Handshake: Address, SNI, and Authentication
When a browser visits an HTTPS site, it first negotiates TLS parameters and verifies the other party's identity. A proxy connection adds another link, from the client to the proxy server, between the browser and the website. REALITY primarily handles this link; it does not issue certificates for the destination website on the browser's behalf.
A REALITY client uses parameters such as the server's public key to authenticate the connection, including the corresponding authentication data in the handshake. The server also checks conditions such as the permitted server names and Short ID. Connections that fail authentication can be redirected to a destination configured on the server, as allowed by REALITY. The exact behavior depends on the configuration and when the failure occurs; not every error results in a webpage opening.
Two addresses are easy to confuse: the node address tells the client which proxy server to connect to; SNI, or server name, is a name sent in the handshake and usually must be in the set allowed by the server. Setting SNI to the node's IP or replacing the node address with the website used for SNI can both break the configuration.
- Node address and port: Provided by the node operator. Port
443is common, but it is a convention, not a requirement. - Server name: Maps to
serverName; sharing links commonly use the parametersni, which should be preserved as-is. - Public key: Must correspond to the server's private key. The client only needs the public key required to connect; never request or enter the server's private key.
- Short ID: A short identifier permitted by the server. It is not a truncated UUID or an arbitrary label.
- Fingerprint: A common value is
chrome. It selects the client's handshake fingerprint; it does not change the browser used by your applications to Chrome.
REALITY does not require the site administrator to configure a domain certificate for this proxy link in the traditional way, but the choice and reachability of the server's destination site still matter. It also cannot guarantee that traffic will be unidentifiable on every network. Beyond the handshake, connection duration, packet sizes, and browsing behavior remain observable on the network.
Why XTLS Vision Can Reduce Overhead
When a conventional TLS proxy carries HTTPS traffic, two layers of protection are involved: one TLS layer between the browser and destination website, and another between the client and proxy server. This does not mean anything is wrong with the content, but redundant outer processing consumes CPU and adds overhead from record encapsulation and data copying.
Vision recognizes early data in proxied connections and adjusts its shape, using techniques such as padding during the initial phase. For eligible TLS traffic—especially recognizable TLS 1.3 connections—it can switch how data is processed at the appropriate point, avoiding the same outer encryption being applied throughout to already-encrypted application data. TLS between the browser and destination website remains in place.
“Faster” has limits here. If server-side encryption or forwarding is close to the CPU limit, reducing redundant processing is more likely to help. If the bottleneck is congestion on an international route, server throttling, or packet loss, switching to Vision will not create extra bandwidth. Do not expect the same gains for non-TLS traffic or connections that do not meet the optimization criteria.
How to Measure: Track Throughput and CPU Together
Compare download performance using the same server and file at similar times, while recording CPU usage. Improved throughput or lower CPU usage at the same throughput can support a claim of reduced overhead; a single latency test cannot show that Vision is faster.
v2rayN Settings: Match Each Field to the Server Parameters
Import the complete subscription or share link first, then check the key fields. Menu labels vary slightly between desktop versions of v2rayN. A common workflow is to copy the share link, then select “Servers” → “Import bulk URLs from clipboard” and open the imported entry for editing. Do not assume all fields are present just because the node name includes REALITY.
VLESS and Transport Fields
- Protocol
- VLESS
- User ID
- UUID assigned by the server
- Encryption
- Often set to none
- Transport
- TCP / RAW, depending on the version's interface
- Flow
xtls-rprx-vision
This card describes a common REALITY + Vision setup; follow any different configuration provided by your service provider.
REALITY Handshake Fields
- Transport security
- reality
- SNI
- Server name permitted by the server
- Public key
- REALITY public key provided by the server
- Short ID
- Hexadecimal identifier permitted by the server
- Fingerprint
- For example, chrome; keep the original value
Depending on the version, the public key field may be labeled Public key or Password. Verify it against the core and imported configuration.
For this type of setup, none is a common VLESS value for this field; it does not mean the entire connection is unencrypted. Protection comes from the selected transport security mechanism. Conversely, changing it manually to auto, commonly used with VMess, is not an upgrade to “stronger encryption”—it confuses fields from different protocols.
- Check the address, actual port, and UUID first, then verify the transport, security type, and Flow. These fields determine whether the connection reaches the expected protocol path.
- Next, check the SNI, public key, and Short ID character by character, watching for spaces when copying. A non-empty Short ID must contain an even number of hexadecimal characters, up to 16 characters. Whether an empty value is allowed depends on the server.
- Confirm that the entry actually uses an Xray core that supports REALITY and Vision, then set it as the active server. A setting saving successfully in the interface does not mean the core supports it.
- Go to “Settings” → “Parameter settings” to check the local listening port, then select “System proxy” → “Automatically configure system proxy.” If the wording differs in your version, look for the equivalent options.
Performance Comparison: Control the Conditions First
Comparing two nodes from different subscriptions usually tells you more about their routes and server resources than about the protocols. An uncongested standard TLS node can easily outperform a congested REALITY node. To assess Vision's impact, change only the flow-control mode where possible, and make sure both server configurations are valid.
| Test | Suggested method | What it tells you |
|---|---|---|
| Connection setup | Establish 5 new connections to the same HTTPS address | Handshake and first-response consistency |
| Sustained throughput | Use the same large file for at least 60 seconds per run; alternate between setups for 3 rounds | Reduces the impact of short bursts and time-of-day differences |
| Resource usage | Record CPU usage on both client and server during each test | Shows whether redundant processing is a bottleneck |
| Network conditions | Keep the access network, routing rules, and destination site the same | Avoid confusing direct access, proxying, or route differences with protocol gains |
The table outlines a testing method, not results measured by this site. When recording speeds, keep the units in mind: 100 Mbps converts to about 12.5 MB/s in theory. Actual application throughput depends on protocol overhead and network conditions. If your routing rules send the test domain over a direct connection, the results cannot be used to evaluate REALITY.
- Webpages load slowly the first time, but downloads are fast afterward: check DNS, handshake time, and the destination site's response first.
- Download speeds drop over time and CPU usage approaches 100%: check core resource usage, device performance, and background tasks.
- Every node is slow during peak hours: compare routes and test times first instead of repeatedly changing the public key or Flow.
REALITY Connection Troubleshooting FAQ
The port test succeeds. Why won't websites load?
A reachable TCP port only confirms that a connection to the port can be established; it does not mean REALITY authentication succeeded. Check the core logs, then compare the address, SNI, public key, Short ID, and UUID against the original subscription, in that order. If the logs show an authentication error, changing DNS usually will not help.
The logs say Flow is unsupported. Should I clear it?
First check which core is actually running and its version, then confirm whether the server requires xtls-rprx-vision. If the server requires Vision, clearing Flow is not a substitute for configuring it correctly. After updating or switching the core, restart it and check the logs again.
Can I enter any 16 characters as the Short ID?
No. Sixteen hexadecimal characters is the maximum length, equivalent to 8 bytes, and the value must also be in the set allowed by the server. Do not enter a node label, part of a UUID, or an ordinary word. The safest option is to reimport the complete link provided by the service provider.
The node is selected, but my browser isn't using the proxy. What should I check?
First check whether “System proxy” is configured, then verify that the browser uses the system proxy and review the routing rules for the destination domain. If the local HTTP proxy listens on 10808, manual browser settings must point to the same port. Also check the logs for the request.
The same configuration behaves differently on two devices. What should I do?
Compare the core versions, device system clocks, and actual network conditions. Clock skew can affect handshake authentication, so enable automatic time synchronization first. Then retest on the same network to avoid mistaking network blocking on one device for a UUID or public key error.
Configuration Order: Connect First, Then Verify Performance
REALITY and Vision address different parts of the connection: the handshake and the data processing path. Match the authentication parameters first, confirm that application requests actually go through the proxy, and only then compare performance. This separates handshake failures, routing issues, and bandwidth bottlenecks instead of changing a dozen fields at once.
- Import the full configuration: Keep the provider's address, identity, and handshake parameters intact instead of piecing them together from screenshots.
- Check the core: Use an Xray core that supports this combination. If fields are not recognized, check the version first.
- Verify the route: Check the system proxy, local listener, and routing rules to confirm the destination request goes through this node.
- Compare consistently: Use the same destination, similar test times, and multiple runs. Do not treat a latency figure as download speed.
For the basics of importing subscriptions and setting up the system proxy, read the user guide. To learn how protocols, transports, and routing rules differ, see the protocol section of the advanced guide. Understanding these distinctions is more useful for a reliable setup than choosing a “newer protocol” based on a node name.