Existing VMess nodes can keep running. For new nodes, consider VLESS first when the client supports the Xray core. This guide is for users choosing subscription nodes, adding servers manually, or troubleshooting protocol compatibility. It explains the relationship between protocols, transport layers, TLS, and REALITY, then helps you choose based on your device and server setup.
VMess vs. VLESS: What’s the difference?
VMess and VLESS both handle client–server identity verification and data encapsulation, but they emphasize different things. VMess includes authentication and encryption at the protocol layer; modern configurations typically use AEAD and set alterId to 0. VLESS is more streamlined, focusing on user authentication and data forwarding rather than duplicating content encryption at this layer.
“VLESS does not encrypt at the protocol layer” does not mean the connection is exposed in plain text. In practice, VLESS is usually paired with TLS or with REALITY in the Xray core. The outer security layer provides confidentiality, while VLESS avoids duplicate processing. Assess the complete combination, such as VLESS + TCP + TLS, rather than the protocol name alone.
| Comparison | VMess | VLESS |
|---|---|---|
| Protocol-layer role | Authentication, data encapsulation, and protocol-layer encryption | Authentication and lightweight data forwarding |
| Common user identifier | UUID | UUID |
| Common modern configuration | VMess + WebSocket + TLS | VLESS + TCP + REALITY |
| Core focus | Widely supported by V2Ray and Xray | More complete combination options with Xray |
| Time synchronization | Authentication depends on the system clock being correct | Usually does not rely on VMess-style time authentication |
Encryption and performance overhead: What does it mean?
VMess handles authentication and encryption at the protocol layer, while VLESS delegates those responsibilities to outer mechanisms such as TLS or REALITY. For most users, this structural difference does not directly translate into a noticeable difference in web browsing speed. The real-world experience also depends on server load, route quality, congestion, transport method, and the destination site's response time.
With the same server, route, and transport conditions, VLESS has a leaner protocol path and theoretically uses less additional processing power. The difference is easier to notice with high throughput, low-powered routing hardware, or many concurrent connections. For everyday browsing and messaging, route fluctuations are often more significant than protocol overhead.
VLESS + REALITY
- Transport
- TCP
- Security
- reality
- Flow
- xtls-rprx-vision
- Fingerprint
- chrome
- User identifier
- UUID
Common in Xray core configurations. After importing a subscription, also check the public key, Short ID, SNI, and fingerprint fields.
VMess + WebSocket + TLS
- Transport
- WebSocket
- Security
- TLS
- Encryption
- auto
- Alter ID
- 0
- Path
- Specified by the server
Suitable for an existing reverse proxy or WebSocket setup. The path, Host, and TLS domain must match the server configuration.
How to run a useful local comparison test
- Keep the same server, exit route, and test window; change only the protocol combination.
- Run each setup for 30 seconds, repeat it 5 times, and record the median instead of drawing conclusions from a single peak result.
- Before testing, pause system downloads, cloud sync, and video playback so other traffic does not consume bandwidth.
- Record whether the connection succeeds, whether the first page loads normally, whether sustained transfer is interrupted, and the client's CPU usage.
- If the transport layers differ—for example, VMess uses WebSocket while VLESS uses TCP—the results represent the complete setups and cannot be attributed to the protocol alone.
REALITY and core compatibility determine your options
REALITY is a transport security solution in the Xray ecosystem. The most common client combination is VLESS, TCP, XTLS Vision, and REALITY. In addition to the address, port, and UUID, a node may include a public key, Short ID, Server Name, Fingerprint, and Flow. A missing or incorrect field can cause the connection to drop immediately after connecting.
If your subscription provides VLESS REALITY nodes, desktop users generally choose v2rayN with the Xray core, while Android users choose v2rayNG with the Xray core. v2flyNG uses the v2fly core and is better suited to standard VMess, VLESS, and TLS combinations explicitly supported by that core. For REALITY configurations, first confirm that the current core supports every field in the subscription.
Xray core
RecommendedSupports common modern combinations such as VLESS, XTLS Vision, and REALITY, while also handling modern VMess nodes.
Best for: new configurations, VLESS REALITY, and primary desktop or Android use
v2fly core
Suitable for VMess, standard VLESS, WebSocket, gRPC, and TLS combinations explicitly supported by the current version.
Best for: existing VMess nodes, standard TLS configurations, and compatibility with an existing server
Switching cores in v2rayN and checking nodes
Using the common v2rayN 7.x interface as an example, you usually do not need to rebuild nodes manually after importing a subscription, but you should confirm that the core type matches the node protocol. Before changing the core, stop the system proxy, save the settings, and restart the client so an old process does not keep the local port occupied.
The common local SOCKS listening port in v2rayN is 10808; use the current settings to determine the HTTP port. If another program is using the port, local applications may fail to connect even when the remote node parameters are correct. During troubleshooting, check the client log for listening, handshake, and DNS errors instead of repeatedly changing the UUID.
-
Update subscription
Open the main window, select the relevant group under “Subscription groups,” then choose “Update all subscriptions” to ensure the node parameters are not stale.
-
Confirm the protocol
Double-click the target node, check whether it uses VMess or VLESS, and verify the address, port, user ID, transport, and security type.
-
Choose the core
Go to “Settings” → “Parameter settings” → “Core type,” then choose an Xray core that supports the VLESS REALITY combination.
-
Check the port
Verify the local listening port in the parameter settings. If you use the SOCKS port
10808, your browser or other application must use the same port. -
Start testing
Save the settings, select a node, and enable the system proxy. Check the log first to confirm that the core started successfully, then run an actual connection test.
Fields you should not casually change after importing a subscription
- The UUID, transport path, Host, TLS domain, and port of a VMess node.
- The public key, Short ID, SNI, Fingerprint, and Flow of a VLESS REALITY node.
- You can rename a subscription group, but an automatic subscription update will rewrite the node parameters, so manually edited remote fields may be overwritten.
- The routing mode only determines whether traffic uses a direct connection, proxy, or block; it does not convert a VMess node into a VLESS node.
Choose by use case, not just by which protocol is newer
If the server provides only VMess, use VMess directly. There is no need to manually change the node type to VLESS just to switch protocols. The two protocols require different server configurations, and changing only the client dropdown cannot perform a conversion. If an existing VMess WebSocket TLS node is stable, continuing to use it is usually better than guessing the server parameters yourself.
If you are building a new server, the subscription offers both node types, and every device can use an Xray core that supports the required fields, test VLESS REALITY first. If the network requires an existing WebSocket reverse proxy, VMess WebSocket TLS and VLESS WebSocket TLS are both candidates; the final choice depends on the server deployment.
Recommended setup: one subscription for both devices
Desktop (v2rayN)
- Use the Xray core for VLESS REALITY
- Keep VMess nodes as a compatibility option
- Verify the local SOCKS port is
10808 - Check the core startup log after updating the subscription
Android (v2rayNG)
- Import the same subscription link
- Confirm that all REALITY parameters are present
- Enable per-app proxying when needed
- Run a connection test after switching nodes
The protocol is determined jointly by the server and subscription. Using the same subscription on both devices reduces manual entry differences, but you still need to verify core and node-parameter compatibility separately on each client.
The bottom line
- Existing VMess nodes: Keep using them if the parameters are correct and the connection is stable; there is no need to switch just because the name is older.
- New nodes: When both the client and server use the Xray core, evaluate the VLESS, XTLS Vision, and REALITY combination first.
- WebSocket access required: Choose VMess or VLESS according to the server's existing setup, and make sure the path, Host, and TLS domain match.
- Android with v2flyNG: Choose a protocol and transport combination explicitly supported by the current v2fly core, then check the log after importing to confirm field compatibility.
- Both protocols available in the subscription: Run 5 comparison rounds using the same region and server route, then keep the more stable setup.
Common pitfalls and troubleshooting order
When a VMess or VLESS node fails to connect, first determine whether the core did not start, the local proxy is not taking over, the remote handshake failed, or DNS resolution failed. These four problems require different fixes; changing protocols alone will not resolve a port conflict, a disabled system proxy, or missing subscription fields.
First confirm that the client log shows successful local listening, then check the system proxy status, verify the remote address and port, and finally inspect protocol-specific fields. For VMess, also confirm that the device clock is synchronized automatically. For VLESS REALITY, focus on the public key, Short ID, SNI, Fingerprint, and Flow.
Can a VMess link be changed directly into a VLESS link?
No. The protocol is determined by the server configuration, and the client and server must use matching authentication, transport, and security parameters. Changing only the link prefix or node type will cause the handshake to fail.
Is VLESS always faster than VMess?
Not necessarily. VLESS has a leaner protocol path, but real-world speed is usually affected more by the route, server load, congestion, and transport layer. Compare them over multiple rounds using the same server and time window.
Why won't a VLESS REALITY node from my subscription start?
First confirm that the client uses an Xray core supporting the combination, then check that the public key, Short ID, SNI, Fingerprint, Flow, and port are complete. A stale subscription cache may also be missing new fields, so update all subscriptions first.
Does traffic routing affect protocol choice?
Routing rules determine whether outbound traffic uses a direct connection, proxy, or block; they do not convert VMess to VLESS or vice versa. If the node itself fails to connect, fix the protocol and transport parameters before checking routing rules.