VMess vs. VLESS: What to Know Before Adding a Server in Shadowrocket

VMess and VLESS differ in encryption, UUID authentication, and transport settings. This guide covers what everyday users need to know to enter provider-supplied details correctly in Add Server.

At a glance

VMess and VLESS are separate protocols in Shadowrocket; changing Type does not convert one into the other. This guide is for users who already have connection details or a subscription from their provider. Learn how to distinguish authentication, transport, and TLS settings, check the fields in Add Server, and tell connection issues apart from routing issues. Get subscription links from your provider. This site does not provide, sell, or recommend servers, subscriptions, or providers.

1. Key differences between VMess and VLESS

Choose the protocol your provider actually runs—don’t assume one is faster based on its name. VMess has its own authentication and data-encryption mechanisms. VLESS does not encrypt data at the protocol level, so assess connection security based on the transport and security layers in use. Both commonly use a UUID, but that does not mean a server port can accept both protocols.

What to checkVMessVLESS
AuthenticationUses authentication details such as a UUID, which must match the server configuration.Uses a UUID as the user identifier, which must match the server configuration.
Protocol-level encryptionHas its own encryption mechanism; enter the specific encryption option provided by your service provider.Does not encrypt data at the protocol level; this does not mean there is no TLS at the outer layer.
TransportSupports different transport methods; the settings must match the server configuration.The transport method and related settings must also match the server configuration.
TLSIf the server uses TLS, the client must use matching settings.Whether TLS is used, and its settings, depend on the server configuration.
Can one replace the other?Changing Type alone won’t work; you need the complete server details for the corresponding protocol.

Modern VMess authentication typically uses AEAD. Don’t guess an AlterId value for older settings. If older documentation differs from the current imported configuration, ask your provider to confirm the current settings. In VLESS, encryption=none describes the protocol layer. It does not mean you should disable TLS or ignore certificate errors.

There’s no universal answer to “How much faster is VLESS than VMess?” Server load, network latency, packet loss, transport method, and the destination site all affect performance. Changing only the protocol name without controlling these variables won’t produce a reliable speed comparison.

2. Understand UUID, transport, and TLS separately

Before adding a server, sort the details into three groups: where to connect, how to authenticate, and how the connection is carried. Address and Port specify the destination; UUID is used for authentication. Transport methods such as WebSocket and TLS determine how the connection is established. Mixing up these settings is a common reason a configuration looks complete but won’t connect.

2 protocols
Compared in this guide: VMess / VLESS
36 characters
Standard UUID text format with hyphens
443
An example of a common TLS port—not a port required by the protocol

Bottom line: Check each layer; don’t reuse one domain in every field

Check Address and Port first, then UUID, followed by the transport method, Host, Path, and TLS server name. Use the same domain in multiple fields only when your provider explicitly gives you the same value for each.

3. Add a server in Add Server

This example covers manual setup from Home. Button locations may vary by platform, so use the fields shown in your current version. If you already have a subscription, importing the complete subscription provided by your service provider can help prevent errors from manual entry. Subscription import and manual Add Server are two ways to add configuration—not two different protocols.

  1. Keep the original details. Confirm whether they’re for VMess or VLESS, and note the Address, Port, UUID, transport method, and TLS settings. Don’t combine the port or Path from a different entry.
  2. Open Home → Add Server. Set Type to VMess or VLESS as specified in your details, then enter Address and Port. Choosing the wrong type may change which fields appear next.
  3. Enter the UUID and protocol options. Set the VMess encryption option as specified. For VLESS, match any additional settings, such as Flow, to the server configuration; don’t copy them from another entry. If a required setting isn’t available in the current interface, first confirm that the configuration is supported.
  4. Set the transport. If your provider specifies WebSocket, enter the corresponding Host and Path. If not, don’t enable it just to follow a tutorial. Check that the transport name in the imported details matches the client option.
  5. Configure TLS. Enable or disable it as specified, and check the server name. Keep certificate verification enabled. If you see a certificate error, check the domain, system time, and server configuration instead of bypassing verification.
  6. Save and select the entry. Return to Home and make sure the newly saved entry is selected before testing the connection. A successful save only confirms that the configuration was stored; it doesn’t mean the remote server authenticated the connection.

4. Why check settings after importing a subscription?

A subscription is a way to deliver a set of configurations; the protocol determines how each entry connects. A subscription can contain entries using different protocols. Successfully downloading a subscription only confirms that its details were retrieved and parsed—it doesn’t prove that every entry can currently connect.

When contacting your provider, include the protocol, transport method, stage where the error occurs, and the fields you’ve checked. Redact your UUID, subscription token, and full share link; they don’t need to be exposed in a troubleshooting report.

5. Connection failures: protocol or routing?

A connected status on Home doesn’t mean a particular website is using the selected entry. Global Routing determines how traffic is routed. If no rule sends a request through a proxy, it may go Direct even when the entry is configured correctly. Check the current routing mode before assuming the VMess or VLESS settings are wrong.

Global Routing → Config

Recommended

Requests are handled according to the rules and policies in the current Config. Check the rule order and the policy that ultimately matches; not every request uses the selected proxy.

Best for: everyday routing with rules you’ve checked

Global Routing → Proxy

Sends proxy-eligible traffic through the current proxy route. This can help isolate rule-related variables during a brief comparison test, but it doesn’t guarantee that all system traffic uses the proxy.

Best for: briefly checking whether Config rules are causing an issue

Global Routing → Direct

Uses a direct connection. If a website opens in this mode, that alone doesn’t prove the VMess or VLESS entry you just configured is working.

Best for: comparing against a direct connection on your local network

If you’re using Scene, also check which policy that scene actually uses; the name alone doesn’t tell you the route. In Config, DOMAIN-SUFFIX, GEOIP, IP-CIDR, and FINAL are routing-rule keywords, not protocol options. When troubleshooting, first confirm that traffic is being sent to the proxy, then check whether the proxy handshake succeeds.

  1. Consistent timeouts: Check that Address resolves correctly, Port matches the details you were given, and the current network can reach the server. A timeout by itself doesn’t prove the UUID is wrong.
  2. TLS error: Check the system time, SNI, and certificate name. Confirm that the server provides the expected TLS service on that port.
  3. WebSocket handshake error: Check Path, Host, and the transport type. An HTTP rejection and a UUID authentication failure occur at different stages.
  4. Disconnects immediately after the handshake: Recheck Type, UUID, and any protocol-specific settings. For VMess, also check whether the device clock is significantly off, since its authentication is time-sensitive.
  5. Only some websites fail: Check DNS, rule matching, and whether the destination is reachable. Don’t immediately switch the entire entry from VMess to VLESS.

6. Common questions before and after setup

Why won’t it connect if I change VMess to VLESS but keep the same UUID?

A UUID is only part of the authentication details, and the server must also accept the corresponding protocol. Open the entry’s edit screen from Home and restore the original Type. To use VLESS, get complete VLESS settings from your provider instead of reusing only the original UUID.

If VLESS says none, should I turn off TLS?

No. First check which field the value none belongs to. Protocol encryption and outer TLS are separate settings. Check TLS and the server name against the original details in the entry editor; don’t apply a value from one field to a different setting.

The latency test works, but websites won’t load. Should I switch protocols first?

Not yet. What a latency test tells you depends on how it’s run; it doesn’t mean the full route to a website is working. First check the selected entry on Home, then review Global Routing. If needed, briefly test with Proxy as a comparison, then restore the previous mode and continue checking DNS and the rules applied to the request.

Why does it reconnect after I turn the connection off manually? Did I enter something incorrectly?

First check whether automatic connection conditions are enabled under Settings → On Demand. On Demand controls when the connection starts; it doesn’t fix UUID, Host, or Path settings. You can temporarily disable the relevant conditions while troubleshooting, then restore them to suit your needs.

Get Shadowrocket and view the setup guide

Shadowrocket for iPhone and iPad costs $2.99 as a one-time App Store purchase. The Mac (Apple silicon and Intel), Windows, Android, and Linux versions are free. Choose your platform on this site’s download page. Check the App Store listing for iPhone and iPad system requirements. The App Store developer is Shadow Launch Technology Limited; the app ID is 932747118.

A one-time app purchase is separate from a service subscription. Get subscription details from your provider. After installation, follow the quick-start guide to import your configuration, then return here to check the protocol settings.

Download Shadowrocket