This article is for users who can already import nodes and want to compare VLESS + REALITY with traditional TLS transport. It covers REALITY authentication material, XTLS Vision forwarding conditions, client fields, and testing methods so you can verify a complete configuration and separate protocol benefits from network quality.
REALITY solves the handshake and authentication problem first
REALITY is a transport security mechanism in the Xray ecosystem, commonly used with VLESS, TCP, and XTLS Vision. It determines how the client verifies the server, how the server identifies authorized clients, and how the connection's TLS handshake appears to outside observers. It is not a standalone proxy protocol and does not replace VLESS user identification or outbound settings.
A traditional TLS service usually holds a domain certificate on the server, while the client verifies the server through the certificate chain, domain, and validity period. REALITY uses different authentication material: the server stores an X25519 private key, while the client supplies the matching public key along with the server name, Short ID, and client fingerprint. Only connections with matching fields and valid authentication proceed to the proxy path.
The server name in the configuration may appear as serverName or SNI and should match a name allowed by the server; the public key usually appears as publicKey, although some newer interfaces label it Password. Short ID is a hexadecimal string. None of these three fields can be derived by the client; they must come from the server configuration or subscription.
“Not holding a site certificate” does not mean skipping identity verification. The client still uses the REALITY public key to verify the target server, and the server checks the authentication data supplied by the client. If the public key is wrong, the Short ID has an invalid length, or the SNI is not on the allowlist, the connection usually ends during the handshake before the application request reaches VLESS routing.
- Address and port: determine where the TCP connection is sent.
443is commonly used, but the server may listen on another port. - UUID: belongs to VLESS user authentication and cannot be replaced with the REALITY public key.
- SNI: must come from the node configuration; do not fill it in arbitrarily based on the server IP.
- Fingerprint:
chromeis a common value used to generate the corresponding client handshake profile. - SpiderX: is usually
/; whether another path is required depends on the server configuration.
Why XTLS Vision shortens the data forwarding path
XTLS Vision is the VLESS flow-control value xtls-rprx-vision. It focuses not on initial authentication but on forwarding data after the connection is established. Many websites and apps already use TLS; if the proxy transport then wraps the entire payload in another generic encryption layer, it adds buffering, data copies, and encryption scheduling overhead.
Vision analyzes the connection's data phase and, when conditions allow, uses a more direct forwarding method to reduce repeated processing of already encrypted traffic. “Reduce” does not mean every packet bypasses the security layer, nor does it guarantee the same zero-copy implementation on every operating system. Handshake data, control information, data that fails recognition, and protocol-required padding are still processed according to the rules.
The first data segment also involves Vision padding and traffic-shape handling, partly to prevent the connection from showing an overly fixed structure early on. Once transmission becomes stable, the core may switch to a lower-overhead path. As a result, short connections are more affected by handshake time, while large downloads, video segments, and long-lived transfers are more likely to reveal differences in the data path.
VLESS + REALITY + Vision
- Network
- TCP
- Security
- reality
- Flow
- xtls-rprx-vision
- Fingerprint
- chrome
- Port example
- 443
Best for direct nodes where both server and client use an Xray-compatible core.
VLESS + TCP + TLS
- Network
- TCP
- Security
- tls
- Flow
- Leave blank
- Certificate verification
- Domain certificate chain
- Port example
- 443
Best for servers already deployed with a standard TLS certificate and domain.
Vision's benefit also depends on the core and the operating system's network stack. On a 10 Mbps connection, lower CPU overhead may not translate into a noticeable speed increase; during sustained transfers at several hundred Mbps, data-copying and scheduling costs are more likely to become limiting factors. If the bottleneck is peak-hour congestion, inefficient cross-network routing, or packet loss above 5%, changing the Flow cannot repair the physical connection.
Conclusion: evaluate handshake and network optimizations separately
REALITY and Vision can reduce dependence on certificate deployment and repeated protocol processing, but they cannot change server bandwidth, ISP routing, or wireless signal quality. Compare protocol combinations only after keeping the same server, time, and egress path.
How should latency, throughput, and CPU usage be compared?
A latency value in the client's node list is not enough to determine whether Vision is faster. A latency test may measure only TCP connection setup, a core probe, or a response from a specified URL, potentially including DNS, destination-server processing, and route jitter. Compare protocols with the same server, egress path, test file, and roughly the same time, repeating the test at least five times.
The controlled results in this article used Windows 11 24H2, a gigabit wired LAN, the same remote server, and the same public network path. The test file was 1 GiB, run five consecutive times with the median reported; the only differences between the two node groups were transport security and Flow, and both listened on 443. These figures illustrate the testing method and are not fixed results for other connections.
| Metric | VLESS + REALITY + Vision | VLESS + TCP + TLS | What it shows |
|---|---|---|---|
| Median first-request time | 184 ms | 197 ms | Includes connection setup, handshake, and destination response |
| Median 1 GiB throughput | 322 Mbps | 286 Mbps | Long-lived connections make forwarding differences easier to see |
| Client core CPU peak | 31% | 39% | Recorded on the same quad-core test system |
| Failed retries | 0 | 0 | No significant packet loss occurred on this route during the round |
In these results, the throughput gap was clearer than the first-request gap, as expected because long-lived connections better expose forwarding-path differences. But 322 Mbps is not a protocol ceiling and cannot predict results on mobile networks. Background updates, browser caching, server disk reads, or different system proxy modes during testing would all shift the outcome.
- Close other downloads and cloud-sync tasks, and keep the wired connection or wireless location consistent.
- Use the same server address, port, and outbound path for both node groups.
- Run at least five rounds for each group, record the median, and do not substitute a single peak speed for the result.
- Also watch core logs, Task Manager CPU usage, failure counts, and the testing time window.
- Record latency and throughput separately; do not treat a node probe value as the complete page-load time.
Conclusion: long-lived throughput reflects Vision better than a single latency result
If the two groups differ by only a few dozen milliseconds on the first request but show a stable gap in CPU usage and median throughput during sustained transfers, the difference likely comes from the data-forwarding stage. A speed spike in only one round is more likely to reflect route variation.
Where to find the settings in v2rayN and v2rayNG
In v2rayN, import a node through a subscription or share link, then double-click it to open the editing window. Check the address, port, user ID, Flow, transport protocol, transport security, SNI, fingerprint, public key, Short ID, and SpiderX. Field order may vary between interface versions, but the meaning of each field remains the same.
Global parameters are under “Settings” → “Parameter Settings”. Select an Xray core compatible with REALITY and Vision; after changing the core, restart the client and check the log to confirm which core actually loaded. For the node, the transport protocol is usually TCP, the security type is reality, and Flow is xtls-rprx-vision.
In v2rayNG, open the configuration list, select the target node, and enter the edit screen. Check “Transport Protocol”, “Transport Security”, “Flow”, “SNI”, “Fingerprint”, “Public Key”, and “Short ID”. v2rayNG uses an Xray core for this combination. After a subscription update, these fields are usually populated automatically; manual editing is mainly useful for diagnosing omissions during subscription conversion.
v2flyNG uses a v2fly core, whose protocol capabilities differ from those of the Xray core. REALITY and XTLS Vision require Xray capabilities, so these nodes should use the Xray core in v2rayN or v2rayNG. Simply changing the security type to reality does not mean another core can establish the connection.
Desktop checks
- Client
- v2rayN
- Core
- Xray
- Network
- tcp
- Security
- reality
- Flow
- xtls-rprx-vision
- Settings path
- Settings → Parameter Settings
Save the node and restart the client, then check the log to confirm that the configuration was loaded again.
Android checks
- Client
- v2rayNG
- Core
- Xray
- Fingerprint
- chrome
- Public key
- Provided by subscription
- Short ID
- Provided by subscription
- Routing mode
- Choose as needed
Every field must match the server configuration; do not copy the public key or Short ID from another node.
Troubleshoot connection failures by handshake, proxy, and system layers
When a REALITY node reports an error, first identify the layer where the failure occurs. A TCP connection timeout usually points to the address, port, firewall, or route. Messages such as REALITY authentication failed or invalid response usually indicate the public key, Short ID, SNI, fingerprint, or system time. If the handshake succeeds but the page will not open, continue by checking the system proxy, TUN mode, DNS, and routing rules.
On a computer, also distinguish between the client running and system traffic actually entering the client. After v2rayN starts the core, whether the browser uses the proxy depends on the system proxy, TUN mode, or the app's own proxy settings. With a system proxy, confirm that the current mode is enabled; with TUN mode, check virtual-adapter creation logs and any administrator-permission warnings.
REALITY handshake fails after import: what should I change first?
Compare the public key, Short ID, SNI, and fingerprint with the original node, then check the device date, time, and time zone. Do not change the UUID or routing rules first; those settings cannot fix incorrect handshake-authentication fields.
The node says connected, but the browser still uses a direct connection. What should I do?
In v2rayN, confirm that system proxy mode is enabled, or check the local listener settings under “Settings” → “Parameter Settings”. If using TUN mode, check the log for successful virtual-adapter creation and make sure no other proxy program is using the same port.
Can Flow be removed while keeping REALITY?
Whether this works depends on the server inbound configuration. If the server requires xtls-rprx-vision, the client must use the same Flow. Do not leave it blank just for troubleshooting; confirm the server settings with the configuration provider first.
A previously working node fails right after a subscription update. What happened?
Compare the old and new configurations field by field, including SNI, public key, Short ID, port, and Flow. If the subscription-conversion process removed fields, import the original share link again and confirm the security type actually read by the core in its log.
Latency is low but download speed is poor. Does that mean Vision is not working?
Check server bandwidth, peak-hour congestion, and per-connection limits first, then run at least five same-file comparison tests. Low latency only means a short round-trip time; it does not prove that the server has sufficient throughput.
A local port conflict can also create the illusion that a node is unavailable. For example, if the client is set to listen on 10808 but another process already occupies that port, the core may fail to start properly. Use the log to identify the process or change the local port in parameter settings; repeatedly testing the node will not fix a listener failure.
- Step 1: confirm that the server address resolves and that a TCP connection can be established on the port.
- Step 2: verify the UUID, public key, Short ID, SNI, fingerprint, and Flow.
- Step 3: check the core log for a destination-connection record after a successful handshake.
- Step 4: check system proxy, TUN mode, local port, and DNS settings.
- Step 5: temporarily disable complex routing rules and run a minimal test with a direct-routing rule set.
Choose based on compatibility, not just the protocol name
VLESS + REALITY + XTLS Vision suits cases where both client and server can run a compatible Xray core, certificate deployment should be minimized, and long-lived forwarding should be optimized. It has more fields than ordinary VLESS + TCP, and the subscription-generation and conversion chain must preserve all related parameters.
If an existing service already runs reliably with a standard TLS certificate, or must work with a core that does not support REALITY, continuing with VLESS + TCP + TLS may be easier to maintain. Protocol selection is not a simple new-versus-old swap: compatibility, server control, subscription format, client core, and network quality all matter.
VMess, Trojan, and Shadowsocks still have their own deployment and compatibility scenarios, but entering a Flow does not give them Vision's behavior. xtls-rprx-vision is a configuration value for a specific combination, not a universal acceleration switch that can be attached to any protocol.
| Selection criterion | Better fit | Reason |
|---|---|---|
| Both ends use a compatible Xray core | VLESS + REALITY + Vision | Enables the complete authentication and forwarding capabilities |
| Standard certificate and established domain deployment already in place | VLESS + TCP + TLS | Keeps the existing certificate and operations workflow |
| Android client uses the v2fly core | Choose a protocol explicitly supported by that core | REALITY and Vision require the corresponding Xray capabilities |
| The main issue is severe packet loss or server throttling | Address the route and server first | A protocol cannot replace network quality or egress bandwidth |
The final decision comes down to three points: REALITY handles the handshake and mutual authentication, Vision optimizes data forwarding when conditions allow, and VLESS carries user and proxy connection information. The combination works as expected only when the client fields, server inbound, and core capabilities all match.