At a glance

VMess and VLESS are proxy protocols, not client names. VMess typically encrypts data at the protocol layer. Common VLESS configurations use encryption=none and rely on TLS or REALITY to secure the connection. When choosing between them, first check which protocol the server offers, then verify the transport, authentication fields, and core support. You can’t switch protocols just by changing the name in your client. This guide is for users importing subscriptions, adding nodes manually, or deciding whether to switch from VMess to VLESS.

Quick comparison: protocol, encryption, and transport are different layers

Think of a node configuration as three layers: VMess or VLESS handles proxy requests and user authentication; TCP or WebSocket carries the data; TLS or REALITY provides transport security. These options aren’t mutually exclusive, so you might see VMess + WebSocket + TLS or VLESS + TCP + REALITY.

v2rayN is a desktop client, v2rayNG is an Android client based on the Xray core, and v2flyNG is an Android client based on the v2fly core. Being able to import a link doesn’t mean the client’s current core supports every combination in it. Check core implementation and version support, especially for options such as REALITY and flow.

ComparisonVMessVLESS
User identityUsually a UUIDUsually a UUID
Common data encryptionThe protocol layer can use AES-GCM, ChaCha20-Poly1305, and other methodsCommonly set to none; relies on an outer security layer
Time dependencyAuthentication includes time-based checks, so the system clock must be accurateBasic authentication does not use VMess’s time-window mechanism
Additional fieldssecurity, alterId, and others; modern configurations typically use alterId=0encryption, flow, and fields for TLS or REALITY
When to switchThe server must offer an entry point for the protocol; changing the client’s protocol type alone won’t work

Encryption differences: VLESS with none doesn’t mean the entire connection is unencrypted

VMess’s protocol-layer encryption and outer TLS are separate things. For example, with VMess + WebSocket + TLS, VMess can encrypt proxy data, while TLS protects the connection between the client and the TLS termination point. Even if a configuration includes two security-related options, they aren’t duplicate settings for the same parameter.

In common VLESS configurations, encryption=none means no additional data encryption is enabled at this layer; it does not disable TLS. With VLESS + TLS, you still need the correct server address, port, and serverName. With REALITY, match the public key, shortId, and other parameters provided by the server. Some newer implementations may add encryption capabilities. Check the subscription and documentation for both cores to confirm the required fields; don’t assume an old guide applies to every version.

Configuration checklist: separate protocol fields from security fields

VMess + WebSocket + TLS
  • At the protocol layer, check the UUID, security, and alterId.
  • At the transport layer, check the WebSocket path and Host.
  • At the TLS layer, check the serverName and certificate validity.
VLESS + TCP + REALITY
  • At the protocol layer, check the UUID, encryption, and any flow required by the server.
  • At the security layer, check the serverName, public key, and shortId.
  • Check that both cores support this combination; don’t copy over WebSocket fields.

Check each layer against the subscription. If you see a certificate or handshake error, fix the security settings instead of hiding the problem by skipping certificate verification.

Performance: compare the route first, then protocol overhead

VLESS has a leaner base protocol design, and common configurations avoid some of VMess’s protocol processing and encryption work. But real-world download speeds also depend on server load, round-trip latency, packet loss, bandwidth limits, transport combinations, and the device’s cryptographic performance. There’s no fixed speed advantage to promise for VLESS. Nor can you attribute the entire difference to the protocol when testing servers in different regions.

Keep a configuration that’s already proven to work

Recommended

If your current node is stable and fast enough, keep the existing configuration. Base any switch on server support, maintenance plans, and results from a fair comparison.

Best for: users with a working subscription who mainly want reliable everyday access.

Test a VLESS entry side by side

If the server offers both protocols, compare them on the same device and network, at roughly the same time. Record the transport and security settings so you don’t mistake differences in the route for a protocol advantage.

Best for: users who manage the server or have comparable entries for both protocols in their subscription.

  1. Use the same test file for each configuration. Record connection time, sustained download performance, and any interruptions.
  2. Test each configuration three times, alternating between them. Pause other bandwidth-heavy tasks during testing.
  3. If the server, transport, or routing differs between configurations, report the result as a “difference between configurations,” not a “difference in protocol performance.”

Bottom line: don’t switch a stable node just because the protocol name is different

Switch your everyday connection only if side-by-side tests show repeatable improvements and you’ve verified the new security settings and core compatibility. Keep the old configuration so you can switch back.

Configuration fields: setting alterId, ports, and flow

Importing a subscription from a trusted source is usually less error-prone than entering each field manually. If you’re setting up a node by hand, first confirm whether the provider gave you VMess or VLESS, then open the matching node editor. Menu labels may differ between client versions, but the relationship between protocol, address, port, user ID, transport, and security stays the same.

0
Typical alterId value for modern VMess AEAD configurations
443
Common TLS server port; use the value specified in your node configuration
10808
Example of a local proxy listening port, not a remote port

These numbers serve different purposes: alterId=0 is used with modern VMess AEAD configurations; it is not a port. 443 is a common remote entry port, but the actual value may differ. 127.0.0.1:10808 is an example of a local address that apps use to connect to the proxy; check your client’s listening settings for the actual value. Entering a local port as the remote node port is a common reason a configuration can look complete but still fail to connect.

Treat subscription URLs, full share links, and UUIDs as sensitive information. When asking for help, you can share the protocol, transport, and relevant error messages, but don’t post the full link or subscription QR code.

Time checks: why VMess authentication can suddenly fail

VMess authentication uses time-based information. If the client and server clocks are significantly out of sync, authentication may fail even if the UUID hasn’t changed. Check the actual system time, not just the displayed time zone: different time zone labels aren’t usually a problem if they represent the same instant. Manually setting the clock a few minutes ahead or behind can affect authentication.

VLESS basic authentication doesn’t use VMess’s time-window mechanism, but that doesn’t mean you can ignore the system clock. TLS certificates have start and expiration dates, and other handshake mechanisms may also use time-based information. Making sure the device clock is accurate is a basic troubleshooting step for both protocols.

  1. Windows: Go to Settings → Time & language → Date & time, turn on Set time automatically, then select Sync now.
  2. Android: Search Settings for “Date & time” and turn on automatic time. The menu location varies by device.
  3. Server: If you administer the server, check that its time synchronization service is working. Otherwise, send the service provider the authentication error and when it occurred.
  4. Test again after syncing: Reconnect to the same node and check the client logs. If it still fails, verify the UUID, server port, and transport settings. Don’t keep changing encryption options at random.

FAQ: switching subscriptions and fixing connection problems

Can I turn a VMess node into VLESS and use it right away?

No. The server must be configured with a VLESS entry and provide the corresponding port, user identity, transport, and security settings. Import a VLESS share link from the provider or update your subscription; don’t just change the protocol in the existing node’s dropdown.

Why does my VLESS configuration import successfully but fail to connect?

A successful import only means the client was able to parse the configuration. Check the logs for connection timeouts, certificate verification failures, or authentication errors. Then verify the remote address and port, serverName and security settings, UUID, and flow. If you’re using REALITY, also check the public key and shortId, and confirm that your current core supports it.

If a subscription works in v2rayNG, will it definitely work in v2flyNG?

Not necessarily. The two clients use cores from different projects, and you can’t determine feature support just from the fact that both can import subscriptions. Check that the target core supports the specific combination, especially when it involves Xray-specific features. In v2flyNG, use a configuration that the provider explicitly offers and the core supports; don’t remove essential parameters just to force it to start.

It says connected, but webpages won’t load. Did I choose the wrong protocol?

Not necessarily. First check that system proxy or TUN mode is enabled as needed. Then check whether the browser is using the proxy, DNS is working, and routing sends the destination to the correct outbound. If the logs say the local listening port is already in use, resolve the port conflict first. Don’t switch protocols before confirming that traffic is reaching the client.

For everyday use, prioritize a trusted subscription source, complete configuration fields, and a supported core. Compare overhead and speed only after those checks. For help with proxy modes and routing, see the client setup guide. For DNS failures or access issues, see the DNS troubleshooting guide so you don’t mistake a local network problem for an issue with VMess or VLESS.