VMess and VLESS are not interchangeable by simply changing Type. For Shadowrocket users who already have their own provider settings, this guide checks Add Server across four layers: protocol, credentials, transport, and TLS. Learn what UUID, Server, Host, and SNI each do, and troubleshoot by identifying where the failure occurs instead of repeatedly guessing which setting to toggle.
1. VMess vs. VLESS: What’s the Difference?
The short answer: choose the protocol actually offered by the server; don’t choose based on assumptions about speed. VMess provides authentication and encryption at the protocol layer. VLESS does not encrypt traffic on its own and must be paired with the security layer specified by the server. VLESS uses none for protocol encryption, which does not mean the entire connection is necessarily unencrypted or that you should turn off TLS.
When configuring a server manually, consider three things separately: how the user is identified, how data is transported, and how the connection is secured. WebSocket is a transport method; TLS is a security layer. Neither is another name for VMess or VLESS. A protocol can be used with different combinations, but every client setting must match the server.
| What to check | VMess | VLESS |
|---|---|---|
| Protocol identity | Uses a UUID to identify the user; authentication also involves a time check | Uses a UUID to identify the user; that does not make it interchangeable with VMess |
| Protocol encryption | Choose the encryption setting specified by the server; don’t guess | Protocol encryption is none; check connection security separately |
| Transport | Check the specific requirements, such as TCP or WebSocket | Check the actual transport method and any additional fields |
| Security layer | May use TLS separately; follow the supplied settings | Check TLS or another explicitly specified security setting supported by the current app |
So there is no universal “copy the VMess UUID, change Type to VLESS, and you’re upgraded” procedure. Even if both sets of settings happen to use the same UUID, confirm that the server has a matching protocol endpoint, port, and transport configuration.
2. Gather the Full Settings Before Opening Add Server
Tap the add button in the upper-right corner of Home to open Add Server. Choose Type first, then fill in the fields shown for that type. Available fields can change depending on Type and transport options. This guide uses protocol terms such as UUID and SNI to explain what the values correspond to; field names and locations may vary in the current app.
- Make sure all settings belong to the same endpoint. Keep the protocol, Server, Port, UUID, transport, and security layer together in one record. Don’t mix a port from an old message with a domain from a newer configuration.
- Distinguish an individual configuration from a Subscribe URL. A subscription URL retrieves a group of configurations; it is not a Server or UUID. If you imported an entry through Subscribe, check its existing details first instead of creating a duplicate without the additional settings.
- Keep the original configuration. Record the original values before troubleshooting manually. If needed, create a separate test entry and change one setting at a time. A later subscription update may overwrite provider-managed fields, so don’t treat a temporary change as a permanent fix.
- Gather any additional settings. For WebSocket, also have the Host and Path. For TLS, have the server name and certificate requirements. If Flow is specified for VLESS, check it too; don’t fill it in arbitrarily.
3. How to Enter Server, Port, and UUID
Server is the address of the server you want to connect to, usually a domain name or IP address. Do not include https://, a web page path, or query parameters. Port is the port the server actually listens on. Entering port 443 does not enable TLS automatically, and entering a domain does not set the correct SNI automatically.
A UUID is a protocol credential, not a label or an Apple Account. Preserve the hyphens when copying it, and remove leading or trailing spaces and accidental line breaks. Don’t paste an entire id=... snippet, including its key, into the field. A correctly formatted UUID does not guarantee that the server still accepts it.
- Wrong address: The domain may fail to resolve, or you may connect to a different server. Check the spelling first; don’t start by changing the UUID.
- Wrong port: The connection may be refused or time out. Don’t apply TLS settings from another entry just because you see port 443.
- Wrong credentials: The underlying connection may succeed while protocol authentication fails. Check the UUID, Type, and account status instead of relying on the latency number alone.
- VMess time issue: Authentication depends on time. If authentication still fails with all other fields matching, check that automatic date and time are enabled and the current time is correct in Settings → General → Date & Time.
4. Don’t Mix Up WebSocket Host, Path, and TLS SNI
These fields are often all domains or short strings, but they serve different purposes. Server determines the connection destination. SNI specifies the server name during the TLS handshake. WebSocket Host and Path are used in the HTTP upgrade request and server routing. Their values may match or differ; you can’t derive every value from Server.
Check the two groups separately: transport and security
WebSocket transport settings
- First confirm that the required transport is actually WebSocket. Don’t select it just because the settings include a domain name.
- Enter Host as provided, without a protocol prefix. If a port is explicitly included, don’t remove it.
- Preserve the leading
/, capitalization, and query parameters in Path. Don’t enter a full web address. - For example,
/wsand/WSmay route differently; don’t assume they’re equivalent.
TLS security settings
- Use the supplied settings to determine whether TLS is enabled; don’t infer it from Port alone.
- SNI usually takes the server name, without
https://or a path. - Check the name covered by the certificate, its validity period, and the device’s date and time. Don’t use certificate-error bypasses as a substitute for troubleshooting.
- If ALPN or other additional settings are provided, check them against the supplied values. Don’t copy values from another entry when none were provided.
The connection address, TLS server name, and WebSocket Host serve different roles. Use the same value for more than one only when the original settings specify it.
The example below illustrates how fields relate to one another. It is not a usable configuration and does not indicate that a real server supports these values. Enter the complete settings for your own existing endpoint; don’t fill in missing fields using this example.
Type: VLESS
Server: edge.example.com
Port: 443
UUID: Use the full UUID provided for your existing endpoint
Transport: WebSocket
Host: web.example.com
Path: /ws
TLS: enabled
SNI: web.example.com
5. How to Decide Whether to Enable TLS: Follow the Endpoint Settings, Not the Protocol Name
VMess can use TLS, and the protocol name alone does not determine whether VLESS should use TLS either. This section compares how security-layer settings work in the same app; it does not rank the two protocols. The recommendation applies when your existing settings explicitly enable TLS. If the server specifies a different security method, check its required fields and whether the current app supports it.
If the supplied settings require TLS: Keep TLS enabled and verify the server name
RecommendedEnable the specified TLS settings and check SNI, certificates, and additional fields one by one. If the names don’t match, check the supplied settings first; don’t bypass the problem by turning off verification.
Best for: Configurations where the existing endpoint explicitly specifies TLS and a server name
If the supplied settings don’t use TLS: Check the actual security method
Don’t force TLS on, and don’t assume that “no TLS” means you can skip all connection security. For VLESS in particular, confirm how the full connection is encrypted and whether all related fields are present.
Best for: Configurations where the existing endpoint clearly specifies the security-layer combination and includes all required settings
How to decide: Check the security layer in the supplied settings first, then check the encryption field
If you see none for VLESS, don’t turn off TLS. First confirm whether it describes protocol encryption or the connection security layer, then change the relevant setting.
6. How to Verify Your Settings and Avoid Mistaking a Routing Issue for a Protocol Problem
After saving the entry, return to Home, select the configuration you just checked, and test the connection. A latency value only means the relevant test received a response; it does not confirm that the UUID, WebSocket routing, TLS, and access to the destination website are all working. The symptoms below are troubleshooting categories, not the only possible explanation for any error.
- First, confirm the selected entry. Check the current selection on Home. You may have edited a new entry but still be connecting with a different, older one.
- Next, check Global Routing.
Directwon’t test the proxy endpoint. WithConfig, a rule may route the destination directly. You can temporarily useProxyto rule out rule selection, then restore your original setting after testing. - Note where the failure occurs. For a connection timeout, check Server, Port, and network reachability first. For a TLS failure, check the security layer, SNI, certificate, and device time. If the connection is established but still fails, check the UUID, transport settings, and server status.
- Finally, check the rules and DNS. If the destination is accessible with Proxy but not with Config, check which rule and policy are matched in the current Config. Don’t keep changing protocol credentials.
A rule such as DOMAIN-SUFFIX,example.com,DIRECT sends matching domains through DIRECT. FINAL determines the policy for traffic that didn’t match an earlier rule. In this case, the result reflects the routing path, not necessarily the VMess or VLESS entry you just added. Don’t treat a temporary global selection used for testing as a permanent routing configuration.
7. Common Questions About Manually Adding VMess and VLESS
Can I add a server with just a UUID and domain name?
Those details aren’t enough to reconstruct the full configuration. At minimum, you also need to confirm Type, Port, transport, and security layer. WebSocket may also require Host and Path. Ask your existing provider for any missing fields; don’t substitute a common port or default path for the actual values.
Why does the connection stop working when I change VMess to VLESS?
The protocols work differently, and the server must have a matching endpoint. Go back to Home and edit the entry to restore its original Type and settings. To use VLESS, get the complete settings for that endpoint instead of reusing only the UUID.
VLESS shows none. Is that a misconfiguration?
If it refers to VLESS protocol encryption, none is consistent with the protocol’s design. Continue by checking TLS or another specified security layer. This value doesn’t mean the entire connection is unencrypted, and it isn’t an instruction to turn off TLS.
An imported subscription works, but manual setup doesn’t. What should I check first?
Open the details for both entries on Home and compare Type, Server, Port, UUID, transport, security layer, and additional fields in order. Pay particular attention to a missing Path, SNI, or Flow in the manual entry. You don’t need to reset Settings first, and don’t post full credentials in a public discussion.
The port is 443. Do I still need to check TLS?
Yes. 443 is just a port number; it doesn’t determine the protocol for the client. Return to the entry’s edit screen and check the TLS setting and server name against the supplied settings. If you see a certificate warning, check SNI and the device’s date and time first. Don’t treat disabling verification as a routine fix.
After checking an entry, keep a record of the original values, the changes made, and the result. Once you know whether the failure occurs during address connection, the TLS handshake, protocol authentication, or rule selection, you can troubleshoot that layer without changing the protocol, port, and transport all at once.