Aug 28, 2026 · Protocols · About 10 min read

VMess vs. VLESS: Key Differences for Shadowrocket Users

Compare VMess and VLESS encryption, UUIDs, transport, and TLS, and learn how to enter each protocol’s settings in Add Server.

At a glance

This guide is for users who already have a provider’s configuration and want to check VMess or VLESS settings in Shadowrocket. First, distinguish authentication, data encryption, transport, and TLS; then review the fields in Add Server. You’ll learn which layer UUID, Port, Server Name, Host, and Path belong to—and why changing Type does not convert one protocol into another.

1. VMess and VLESS: Authentication vs. encryption

Both VMess and VLESS can use a UUID to identify a user, but their protocol formats differ. VMess provides authentication and data encryption at the protocol layer. The base VLESS protocol does not encrypt data, so it is typically paired with a secure transport such as TLS. A UUID in both configurations does not make them interchangeable.

Encryption here refers to the proxy connection between the client and server. HTTPS on a website is a separate layer: visiting a site over HTTPS does not mean the entire proxy connection has the same protection, and enabling TLS for the proxy does not make every website you visit use HTTPS. Check these two layers separately when troubleshooting.

What to check VMess VLESS
User identity Uses UUID and other authentication parameters, which must match the server configuration. Uses a UUID to identify the user, which must match the server configuration.
Protocol-layer encryption Supports data encryption at the protocol layer; use the method specified in your existing configuration. The base protocol does not encrypt data. A related value of none does not mean TLS must be disabled.
Outer TLS Can be used; whether it is enabled depends on the server setup. Typically paired with a secure transport such as TLS; check the actual server setup.
Transport Can use TCP, WebSocket, and other methods supported by both sides. The transport must also match; checking only the protocol name is not enough.
Changing protocols Switching to VLESS requires a matching server configuration. Switching to VMess also requires a matching server configuration.

Modern VMess configurations commonly use AEAD authentication. If an older configuration includes Alter ID, don’t confuse it with a UUID or carry its settings over mechanically to another configuration. If imported settings don’t match your provider’s current instructions, confirm they’re still supported before changing any fields.

2. UUIDs and ports: Same format, different connections

A UUID is commonly written as five groups of hexadecimal characters, for example 123e4567-e89b-42d3-a456-426614174000. This example is for recognizing the format only; it is not a usable credential. Enter the full value without spaces. Don’t put a configuration name, subscription name, or account password in the UUID field.

128 bit
UUID length; common text format: 8-4-4-4-12
443
Examples of ports commonly used for TLS services; neither is a fixed port for either protocol
1–65535
Valid numeric range for a server port

Address specifies where to connect, Port specifies which service endpoint to use, and UUID specifies which user identity to authenticate. All three must match. Ports 443 and 8443 on the same address can point to different endpoints; don’t replace one with the other just because one is more common.

  • Check Address: enter only the domain name or IP address specified in the configuration, not the full subscription URL.
  • Check Port: enter the number from the original configuration without a protocol prefix or path.
  • Check UUID: make sure no characters were missed at either end and that no line breaks were copied.
  • Check that the credentials are valid: expired, disabled, or restricted credentials may fail authentication even when formatted correctly.

3. TLS, Server Name, and WebSocket: Check each layer

It’s easier to check a connection as four layers: connect to Address and Port, establish TLS if enabled, set up a transport such as WebSocket, then authenticate with VMess or VLESS. This is a simplified model for understanding the configuration. If one layer fails, changing the UUID in a later layer usually won’t fix it.

Server Name is generally used for TLS SNI and certificate name verification. WebSocket Host is an HTTP request header, while Path is the request path. They may use the same domain, or differ depending on the server setup. Don’t automatically copy Host into Address, or treat Path as part of a subscription URL.

TLS enabled: the server provides a TLS endpoint

Recommended

Enable TLS as specified in the existing configuration, and check Server Name against the certificate. The recommendation is to match the secure endpoint provided—not to force TLS onto an arbitrary port.

Use when: the provider explicitly supplies TLS settings and a connection using a domain name that matches the certificate

TLS disabled: the server explicitly requires a non-TLS endpoint

Use only as required by the existing server setup. The base VLESS protocol does not encrypt data; a connection working temporarily with TLS off does not make this a general-purpose setup.

Use when: checking parameters for a confirmed alternative security layer or a controlled test environment

Bottom line: Match TLS and transport before checking authentication

If the certificate name is incorrect, first check Server Name, the device’s date and time, and the certificate status. If the WebSocket handshake fails, check Host, Path, and the selected transport. Don’t disable certificate verification instead of correcting the configuration.

For example, if an existing configuration specifies TLS, Port 443, and WebSocket Path /proxy, keep each value as specified. Changing Path to / may prevent you from reaching the same service, even if Address, Port, and UUID are unchanged. Follow the original configuration for case sensitivity and query parameters.

4. Enter settings in Add Server, step by step

In Home, tap the add button to open Add Server. Whenever possible, import an existing provider configuration and review the entry. Enter settings manually only if you have the complete set of parameters. Available fields vary by Type; don’t switch protocols just to force in a setting that isn’t shown.

  1. Choose Type. Select VMess for a VMess configuration or VLESS for a VLESS configuration. Similar names don’t mean their authentication formats are compatible.
  2. Enter the connection endpoint. Enter Address and Port separately, and make sure you haven’t included a path after the domain in Address.
  3. Enter the authentication details. Put the UUID in the corresponding authentication field. For VMess, use the encryption settings from the original configuration; don’t change them based on assumptions.
  4. Set the transport. Select TCP, WebSocket, or another supported method as specified in the original configuration. For WebSocket, also check Host and Path.
  5. Check TLS. Set TLS and Server Name as specified in the original configuration. Match any other required security settings too; the words “VLESS + TLS” alone don’t tell you the full configuration.
  6. Save and select the entry. Return to Home, make sure the server you just saved is selected, then test the same destination.

When importing from a subscription, server entry settings and Config rules are separate. A subscription update may overwrite server settings. Save the original details before troubleshooting so temporary edits aren’t lost on the next update. Subscription URLs may contain access credentials; redact the full URL and UUID before sharing a screenshot or asking for help.

5. Connection failures: Separate protocol issues from routing issues

Turning on the switch in Home only shows that the connection process has started. It doesn’t confirm that the selected server authenticated successfully or that the current webpage is using it. Global Routing controls how traffic is routed; the server’s Type controls how it communicates with the server. These are separate layers.

Troubleshooting plan: Test the server connection and Config rules separately

Check the server connection first
  • Note the current Global Routing mode and selected server.
  • Temporarily use Proxy to test a regular webpage request and reduce the impact of Config rules.
  • Use the same HTTPS test destination and change only one setting at a time.
  • If the connection still fails, check the endpoint, TLS, transport, and UUID in that order.
Then check Config routing
  • Once the server is confirmed working, restore the original Global Routing mode.
  • In Config, check which configuration is currently active.
  • Check whether rules such as DOMAIN-SUFFIX match before FINAL.
  • If only certain domains fail, check DNS and the policy that actually matched.

A Proxy test helps narrow down the problem; it does not convert VMess to VLESS. Restore your usual settings afterward.

Direct connects without a proxy, so it can’t be used to test whether a proxy server works. Scene applies settings for a particular scenario; it isn’t a fixed protocol. If the connection status changes automatically, also check Settings → On Demand and note the existing triggers. Don’t switch them repeatedly without understanding what they do.

  • Connection timed out: Start by checking address resolution, port reachability, the current network, and server status. A timeout alone doesn’t mean the UUID is wrong.
  • Certificate error: Check Server Name, the device’s date and time, certificate validity, and the trust chain. Don’t bypass verification.
  • WebSocket handshake failed: Check that the transport matches, that Host and Path are complete, and that the reverse proxy still serves the specified path.
  • Disconnected immediately after authentication: Check the protocol type, UUID, and server restrictions. For VMess, also make sure the device’s clock is accurate.
  • Only some websites fail: Note the domain, Global Routing mode, and matched rule, then determine whether the issue is DNS, a rule, or the destination service.

6. Frequently asked questions: Check these before changing protocols

Can I just change Type from VMess to VLESS and connect?

No. First confirm with your existing provider that they offer a VLESS endpoint, then use the complete configuration. Even if Address, Port, and UUID appear identical, the server must accept the corresponding protocol. Keep the original entry and create a separate test entry so you can revert easily.

If VLESS shows none, should I turn off TLS?

No. The none value for VLESS and outer TLS are settings at different layers. Return to the entry’s TLS settings and follow the original configuration for whether TLS is enabled and which Server Name to use. Don’t decide to disable TLS based on this value alone.

Is VLESS always faster than VMess on the same server?

You can’t tell from the protocol name alone. Keep the network, destination, transport, and test time consistent, then compare reachability, latency, and sustained throughput. Server load, packet loss, and the outer transport can all affect results; a single speed test can’t establish that one protocol is better.

What should I do if a manual change works but a subscription update breaks the connection?

Compare Type, Port, TLS, Host, and Path before and after the update to see whether the subscription overwrote them. Keep a local record of any required settings and ask your existing provider to check the subscription output. Don’t repeatedly overwrite the original entry without noting the differences.

Follow this order: confirm what complete configuration your existing service provides, check that Shadowrocket supports that combination, then test under consistent conditions. A protocol name is only a starting point; a connection depends on all the settings matching. For basic instructions on Home, Config, and Settings, use the tutorials below.

Verify the official App Store listing