VLESS handles proxy requests and user identification, REALITY provides a secure handshake and server authentication, and XTLS Vision identifies traffic, applies padding, and optimizes data forwarding when conditions allow. If you plan to use this combination in v2rayN or v2rayNG, start by understanding each component’s role, then check the configuration fields and compare speeds under the same network conditions—rather than judging performance by a node’s name.
VLESS, REALITY, and Vision: Three Components, Three Roles
“VLESS + REALITY + Vision” in a node list does not mean three proxy protocols stacked together. VLESS is the proxy protocol; REALITY is a security layer; and Vision is a flow-control mode in Xray, usually configured as xtls-rprx-vision. The setup also needs a transport, commonly TCP; some newer interfaces or configurations label this transport RAW.
The easiest way to understand their roles is to ask: how is the destination specified, how is the other party authenticated, and how is the data carried afterward? A VLESS request includes a user identifier and destination details, but the UUID is not a password that encrypts all traffic. In common configurations, VLESS encryption=none means this layer adds no encryption; it does not mean the entire connection is sent in plaintext.
| Component | Primary role | What it does not replace |
|---|---|---|
| VLESS | Carries proxy requests, user identification, and destination addresses | Cannot replace a secure transport layer on its own |
| REALITY | Establishes a secure connection and authenticates the server specified in the configuration | Does not select a routing exit or update subscriptions |
| XTLS Vision | Identifies inner TLS traffic and applies padding and forwarding optimizations | Does not increase network bandwidth or reduce physical distance |
| TCP / RAW | Carries an ordered byte stream | Is not the same as WebSocket or an HTTP relay |
This article discusses the Xray implementation. v2rayN can use different cores, so check that the selected node is actually running on an Xray core that supports this combination; v2rayNG uses the Xray core. v2flyNG uses the V2Fly core, so importing some VLESS details does not mean it supports Xray’s REALITY and Vision. Seeing a node in a subscription and being able to connect with a particular core are two different things.
TLS Inside TLS: Where the Extra Encryption Happens
When you visit an HTTPS site, your browser establishes a TLS connection with the destination site. The proxy typically forwards the bytes without decrypting the HTTPS content. If that browser traffic is then carried through a TLS-protected proxy tunnel, the same data may be encrypted once for the website connection and again for the proxy tunnel. These are often called “inner TLS” and “outer TLS.”
This diagram shows each component’s role; it does not mean every handshake happens in strict sequence. As the connection is established, the client and proxy server exchange handshake data, and the proxy server also connects to the destination site. Even when some redundant encryption work is removed, network round trips, destination response times, and TCP retransmissions due to packet loss still add overhead.
- Inner protection: TLS between the browser and destination site protects website content; the proxy server typically forwards encrypted records.
- Outer protection: The secure channel between the local client and proxy server protects the proxy request and the data carried through the tunnel.
- Overhead: Repeated encryption and decryption, record encapsulation, buffering, and data copying can consume CPU resources and reduce throughput.
- Limits of optimization: For non-TLS traffic, you cannot assume that the outer layer can do less work because the data is already encrypted inside.
Vision is therefore more likely to improve performance during sustained HTTPS transfers when the client or server’s processing capacity is the bottleneck. If bandwidth is limited or packet loss spikes during peak hours, changing the encapsulation will not fix congestion on its own.
XTLS Vision: Traffic Inspection, Padding, and Optimized Forwarding
Vision inspects inner TLS traffic carried by the proxy, applies protocol-defined padding early in the connection, and checks whether subsequent data meets the requirements for optimization. For inner TLS-encrypted application data that the implementation can identify and that meets the requirements, it can switch to a dedicated direct-forwarding path, reducing redundant outer encryption and some buffering overhead.
“Direct forwarding” does not mean bypassing the proxy server or decrypting HTTPS into plaintext. Data still travels from the client through the proxy server to the destination site; what is reduced is unnecessary duplicate processing. Nor does this mean the security layer is removed entirely from the first byte: handshakes, proxy requests, and data that does not qualify for direct forwarding still follow their respective protection and processing rules.
- Establish a secure connection first. The client and server agree on security parameters, while the VLESS request provides user and destination information.
- Then process early traffic. Vision pads the initial data and identifies the inner TLS handshake and records.
- Optimize only when conditions are met. Inner encrypted application data that meets the implementation’s requirements takes the direct-forwarding path; not every byte gets the same shortcut.
- Keep other traffic protected. Traffic that cannot be identified or does not meet the requirements follows the applicable path; it must not be treated as already encrypted.
Vision also includes design features intended to reduce certain traffic patterns, but that does not make a connection undetectable or guarantee that it will always work. The destination site, network conditions, server configuration, and core implementation all affect the outcome. Measure speed and connection reliability separately; a single speed test cannot replace long-term observation.
REALITY: No Certificate to Manage, Authentication Still Required
A standard TLS server usually needs a certificate for its domain and must renew it periodically. A common REALITY deployment does not require the proxy server to obtain this kind of certificate for its own domain. Instead, it uses the TLS characteristics of a destination site alongside additional authentication mechanisms to establish a connection. The server public key, ServerName, and Short ID in the client configuration all serve a purpose; entering a domain that merely looks valid is not enough.
The REALITY server holds a private key, and the client uses the corresponding public key and other server-provided parameters to authenticate the connection. Trust in the proxy server is not based solely on “seeing a certificate from some website.” Connections that do not meet the authentication requirements are typically forwarded by the server to a destination site, depending on its configuration; this does not mean all traffic from authenticated users has to pass through that site.
- Address and port: Point to the actual proxy server. Use the port the server listens on; do not change it to 443 by default.
- ServerName: Often labeled SNI in the interface. Use a name allowed by the server; it can differ from the address used to connect to the node.
- Public key: Use the corresponding value provided by the server. The private key stays on the server; do not enter it in the client’s public key field.
- Short ID: Must match a value allowed by the server. Whether an empty value is permitted depends on the actual server configuration.
- Fingerprint: For example,
chromeselects a simulated TLS ClientHello fingerprint; it does not turn the entire client into a browser.
The server should be checked for TLS compatibility with the destination site, reachability, and response behavior. Randomly changing ServerName is not a reliable fix. System time also affects authentication checks; if the clock is significantly off, enable automatic time synchronization before reconnecting.
v2rayN and v2rayNG: Check Configuration Fields, Not Names
Import a complete node from an existing subscription whenever possible. When editing manually, verify the security layer first, then check Flow, transport, ServerName, public key, and Short ID. The two cards below compare common combinations using different security layers; they are not complete, ready-to-run node configurations. Use the address, user ID, and authentication parameters provided by the server.
VLESS + REALITY + Vision
- Protocol
- VLESS
- Transport
- TCP / RAW
- Security layer
- REALITY
- Flow
- xtls-rprx-vision
- Authentication fields
- Server public key, Short ID
- ServerName
- Name allowed by the server
Client and server parameters must match. Changing only the Flow cannot turn a standard node into this combination.
VLESS + TLS + Vision
- Protocol
- VLESS
- Transport
- TCP / RAW
- Security layer
- TLS
- Flow
- xtls-rprx-vision
- Authentication
- Certificate chain and domain validation
- ServerName
- Name matching the certificate
Vision is not limited to REALITY; conventional TLS setups still require a properly configured certificate.
- Check the node on desktop. In the v2rayN node list, double-click the VLESS node and check its protocol, transport, security layer, and Flow one by one. Make sure the node uses an Xray core that supports these features. Field names may vary slightly between versions.
- Check the local proxy endpoint. In v2rayN, open “Settings” → “Parameters Settings” and check the local listening port settings. For example, if the client listens on
127.0.0.1:10808, configure the app’s manual proxy settings with the matching address, port, and proxy type. Here, 10808 is an example to check—not a fixed value for every installation. - Check the fields on Android. In the v2rayNG node list, open the target node for editing and verify its transport, security settings, and flow control. After saving, select the node again and start the connection to avoid testing a different configuration.
- Separate the entry point from the exit. The desktop system proxy or Android VPN determines whether app traffic reaches the client; the node’s security parameters determine whether the proxy connection can be established; routing rules determine whether traffic ultimately goes through the proxy or connects directly.
Do not enable certificate verification bypass or remove the public key or change the Short ID at random to fix a REALITY connection error. These changes do not replace correct server parameters and can lead troubleshooting in the wrong direction. When sharing screenshots, hide subscription URLs, user identifiers, and other sensitive settings.
Speed and Connection Issues: Diagnose with Controlled Tests
“Why can it be faster?” describes the mechanism, not a guaranteed result for every route. To compare Vision with another setup, use the same server, roughly the same time, and the same destination resource where possible. Measure initial connection latency, sustained download throughput, and CPU usage separately. Two nodes in different regions with different protocol names do not make a valid protocol performance comparison.
- Keep conditions consistent: Use the same network, destination resource, and routing; pause background downloads. First confirm that traffic from the test app is actually going through the node under test.
- Record metrics separately: Record initial request time in milliseconds and sustained throughput in MB/s or Mbit/s, noting the unit. The two units differ by about a factor of eight and are not interchangeable.
- Repeat the test: Run three 30-second transfers per setup and record the median and any significant variation. This is a recommended test method, not a set of measured results from this article.
- Monitor resource usage: Check CPU usage on both the client and server. Reducing duplicate processing may help if CPU usage is near capacity. If throughput is low while CPU usage is low, investigate the network route and destination service first.
Why does the connection fail completely after switching to Vision?
Restore the configuration provided by the server, then check xtls-rprx-vision, TCP / RAW, and the security layer in the node editor. Make sure the active core is Xray and supports this combination, and check the core logs when connecting. Fix a mismatched Flow or incompatible transport in the configuration; increasing the connection timeout will not solve it.
The logs show REALITY authentication failed. What should I check first?
Check the server public key, ServerName, Short ID, and system time, in that order. Verify that the public key was copied in full and that the Short ID contains no extra spaces. Enable automatic time synchronization and reconnect. If it still fails, ask the configuration provider to verify that the server can reach its destination and that the parameters are allowed.
The node test succeeds, but websites won't load in the browser. What should I do?
First check that the browser is using the correct local proxy. On desktop, verify the system proxy status and listening port; on Android, make sure the VPN is connected and the app is not excluded. Then check whether requests are being routed directly and whether DNS returns a usable address. A single node test does not cover every website.
I switched to REALITY, but speed did not improve. Is the configuration wrong?
Not necessarily. REALITY mainly changes the handshake and deployment approach; Vision is responsible for the data-path optimization discussed here. Run three comparisons against the same destination and monitor CPU usage and packet loss. If the bottleneck is bandwidth, congestion, or site throttling, a correct configuration may not produce a noticeable improvement.
Ultimately, answer three questions separately: does the secure handshake complete, does app traffic reach the intended exit, and does sustained data transfer require less processing? REALITY avoids certificate management common in other deployments, Vision reduces duplicate work for suitable inner TLS traffic, and VLESS carries proxy requests. Accurate configuration fields, a compatible core, and consistent test conditions are essential to determine whether this combination suits your network.