VMess, VLESS, and Trojan are not three simple speed levels. They describe different authentication and transport approaches, and the result also depends on the server, TLS settings, network quality, client, and core. This beginner guide explains how to read a node, compare compatibility and security, choose between common combinations, and import or test a configuration in v2rayN or v2rayNG without changing unrelated settings.
What VMess, VLESS, and Trojan Actually Mean
A proxy protocol defines how a client identifies itself to a remote server and how the connection is organized before application traffic is forwarded. VMess, VLESS, and Trojan are therefore not complete connection descriptions by themselves. A usable node also needs a server address, port, transport, encryption or security layer, authentication value, and sometimes additional fields such as a WebSocket path, gRPC service name, SNI, flow, public key, or short ID.
VMess is the older protocol most closely associated with the original V2Ray ecosystem. A typical VMess configuration contains a UUID, an alterId field in older formats, a security value such as auto, and transport information. Modern clients can encounter VMess over TCP, WebSocket, HTTP upgrade, or gRPC, with TLS enabled or disabled according to the server configuration. Because it has been used for many years, VMess remains common in existing subscriptions and older server deployments.
VLESS is a newer, more lightweight protocol in the same general ecosystem. It normally uses a UUID for authentication but removes several layers of legacy protocol behavior. VLESS does not automatically mean “unencrypted” or “faster.” The actual protection comes from its transport and security combination, such as TLS, XTLS Vision, or REALITY where supported by the selected Xray core and server. A VLESS node with incorrect SNI, flow, or public-key fields will fail even when its address and UUID are correct.
Trojan takes a different approach: it is designed around a password and a TLS-protected connection that resembles ordinary HTTPS traffic at the transport layer. A common Trojan node uses a domain name, port 443, a password, and TLS server-name information. It may also use WebSocket or another supported transport, but the exact combination must match the server. Trojan is not the same as “any proxy on port 443,” and changing a VMess or VLESS node’s protocol label to Trojan cannot make it compatible.
These labels are useful starting points, but they are not a ranking. A well-configured VMess node can be more reliable than a poorly configured VLESS node, while a Trojan server with an expired certificate can fail before authentication begins. Always compare the complete node parameters instead of selecting a protocol from its name alone.
VMess: Compatibility, Strengths, and Limitations
VMess is often the easiest protocol to recognize in an older subscription. Its URI commonly begins with vmess://, although many subscription providers return encoded content that the client decodes automatically. A VMess record may include values such as add for the address, port, id for the UUID, aid for alterId, net for transport, path, host, and tls. The presence of a field does not mean every version of every core will use it in the same way.
- Compatibility: VMess is widely supported by v2rayN, v2rayNG, Xray-core, and V2Fly-based clients, especially in conventional TCP, WebSocket, and gRPC configurations.
- Migration value: It is practical when an existing provider still publishes a large VMess node list and server-side changes are not under your control.
- Configuration risk: Old fields such as alterId may be ignored, deprecated, or incompatible with a server that expects current settings. Do not manually add an alterId value unless the provider documents it.
- Transport dependency: VMess over WebSocket and VMess over TCP are different configurations. Copying only the address, port, and UUID leaves out the settings that determine how the connection is established.
VMess can still be a reasonable choice for a legacy subscription, but it is less suitable as a reason to rebuild a new server without checking current core documentation. If a provider offers both VMess and a modern VLESS or Trojan profile for the same location, the newer profile may expose better-supported security features. However, the provider’s actual deployment quality, certificate maintenance, routing, and congestion control remain more important than the protocol name.
VMess Fields to Check Before Connecting
VMess over WebSocket
- Protocol
- VMess
- Transport
- WebSocket
- Typical port
- 443
- Important fields
- Path, Host, TLS, UUID
The WebSocket path and Host value must match the server or reverse proxy configuration exactly.
VMess over TCP
- Protocol
- VMess
- Transport
- TCP
- Typical port
- 80, 443, or provider-defined
- Important fields
- UUID, security, TLS settings
Do not copy WebSocket path or HTTP headers into a plain TCP profile unless the server explicitly uses them.
When a VMess node imports successfully but cannot connect, first compare the transport and TLS fields with the provider’s original profile. A correct UUID cannot compensate for a wrong WebSocket path. Similarly, a node configured for plain TCP will not work if the client is set to WebSocket merely because both use port 443.
VLESS and the Role of the Selected Core
VLESS is commonly chosen for newer deployments because its authentication format is simpler and it works with several modern Xray combinations. A basic VLESS profile may use TCP with TLS, WebSocket with TLS, or gRPC with TLS. More advanced profiles can include xtls-rprx-vision as the flow and REALITY fields such as a public key, short ID, server name, and fingerprint. These features are not interchangeable: a VLESS node that requires REALITY cannot be converted into ordinary TLS by changing one checkbox.
The selected core matters because the user interface and the core are separate layers. v2rayN or v2rayNG stores the node and generates a configuration, while Xray-core or another supported core performs the connection. A client may display a VLESS profile correctly but fail to start it if the chosen core does not support a required field. For a basic VLESS + WebSocket + TLS node, compatibility is usually broad. For VLESS + REALITY or Vision, use the core family and version recommended by the provider.
| VLESS combination | Fields that matter most | Typical use |
|---|---|---|
| TCP + TLS | UUID, port, serverName, certificate behavior | Direct TLS deployment with a conventional certificate |
| WebSocket + TLS | UUID, path, Host, SNI, TLS | Deployment behind a web server or reverse proxy |
| gRPC + TLS | UUID, serviceName, SNI, TLS | Provider-managed HTTP/2-style transport |
| TCP + REALITY | UUID, public key, short ID, serverName, fingerprint, flow | Modern Xray configuration requiring matching advanced fields |
VLESS is therefore not automatically faster than VMess or Trojan. Performance is influenced by round-trip time, packet loss, server load, congestion control, encryption processing, and the distance between the device and server. In a stable network, ordinary protocol differences may be less noticeable than a 30 percent change in network latency or a congested server. Treat “fastest protocol” claims cautiously unless the test conditions are controlled and repeatable.
Practical conclusion: choose the complete profile, not the VLESS label
If the subscription supplies VLESS + REALITY with all required fields, use the recommended Xray core and import it without simplifying the profile. If it supplies only basic VLESS + TLS, judge it by compatibility and network quality rather than assuming advanced features are present.
Trojan: TLS, Passwords, and Certificate Requirements
Trojan is built around the expectation that the connection uses TLS correctly. Its authentication value is normally a password rather than a UUID, although the exact configuration format depends on the client and server implementation. A typical profile contains a domain or address, port 443, password, TLS enabled, and an SNI or server-name value. Some profiles also contain certificate verification options, ALPN, WebSocket settings, or a separate destination for fallback behavior.
The certificate is central to a normal Trojan connection. The client sends a TLS handshake, verifies the certificate and server name, and only then proceeds with Trojan authentication. If the system clock is wrong, the certificate is expired, or the SNI does not match the certificate, changing the Trojan password will not fix the problem. Correct the TLS layer first and review the core log for terms such as x509, certificate, server name, or handshake.
- Use the domain and port supplied by the provider; do not replace a hostname with an IP address when certificate validation expects the hostname.
- Keep the TLS server name consistent with the server certificate and the provider’s profile.
- Leave certificate verification enabled for normal use. Disabling it hides certificate problems and weakens the connection’s authenticity check.
- If WebSocket is included, copy the path and Host settings exactly; a Trojan password alone does not describe the full transport.
- Check whether the client is using Xray-core or another compatible core before enabling optional fields.
Trojan can be attractive when a provider maintains certificates carefully and offers a conventional TLS endpoint. It is less convenient when the provider gives incomplete parameters or when a user expects to repair a broken node by changing protocol names. As with VMess and VLESS, the server-side implementation determines the real result.
How to Choose the Right Protocol
A strong default for a new profile when the provider supplies a complete configuration and the selected Xray core supports its transport, TLS, Vision, or REALITY fields.
Best for: current deployments, advanced Xray profiles, and users following provider parameters
A practical compatibility choice for existing subscriptions, older server installations, and conventional WebSocket, TCP, or gRPC profiles.
Best for: legacy nodes, established subscriptions, and broad client compatibility
A TLS-centered option that works well when the domain, certificate, password, SNI, and optional transport settings are maintained correctly.
Best for: certificate-backed TLS services and complete provider profiles
Use the following decision order rather than choosing from marketing descriptions:
- Start with the provider’s available profiles. If only VMess is offered, switching to VLESS or Trojan requires a different server-side configuration. The client cannot create a new protocol endpoint from an existing link.
- Check the required core. Basic VMess, VLESS, and Trojan configurations are widely supported, but REALITY, Vision, and some transport combinations require a compatible Xray release.
- Count the fields you can verify. A complete profile should identify the address, port, credentials, transport, TLS behavior, and special fields. Missing information is a stronger warning sign than the protocol label.
- Prefer security that can be validated. TLS certificate verification, correct SNI, current core support, and an authentic provider source matter more than a claimed speed advantage.
- Test reliability over time. Record connection success, DNS behavior, packet loss, and whether the node remains stable during ordinary use. A short speed test is not enough to rank protocols.
Is VLESS always faster than VMess?
No. VLESS has a streamlined design, but throughput still depends on transport, server load, latency, packet loss, and core implementation. Compare complete profiles under the same conditions.
Can I change VMess to Trojan in the client?
No. The remote server must provide a Trojan service with its own password, TLS endpoint, certificate, and matching transport settings.
Why does VLESS import but not start?
Review the selected core and advanced fields. REALITY public key, short ID, serverName, fingerprint, and flow must be present and mutually consistent.
Should certificate verification be disabled?
Normally no. Correct the device clock, domain, SNI, certificate, and transport instead of treating disabled verification as a permanent fix.
Import and Test a Node Step by Step
Before testing, keep one known-good configuration available if possible. It provides a comparison point for local proxy ports, core startup, DNS behavior, and system proxy settings. Do not edit several imported nodes at once; otherwise, it becomes difficult to identify which field caused the failure.
Import the profile
In v2rayN, use the main window’s node import or clipboard option for a single URI, or add the HTTPS address under “Subscription Groups” → “Subscription Group Settings.” In v2rayNG, open the configuration import menu and choose the clipboard, QR, or subscription option that matches the data you received.
Inspect all fields
Open the node details and confirm protocol, address, port, credential, transport, TLS, SNI, path, service name, flow, public key, and short ID where applicable. A name such as “Premium VLESS” is not a substitute for these values.
Select the core
Choose the core recommended by the profile. For a VLESS + REALITY or Vision configuration, verify that the installed Xray core is selected and that the client has not silently fallen back to an incompatible core.
Start the core
Select the node and start the service. Check the log for a successful local listener and confirm that the configured local address and port are not already occupied. A common local port is
10808, but the actual value may differ.Enable system proxy
After the core starts successfully, enable the client’s system proxy option or configure an individual application to use the local proxy. Test one ordinary website first, then test DNS-sensitive services and other applications separately.
Change one variable
If the connection fails, change only one relevant value at a time: first the core, then transport or TLS fields according to the provider’s data. Save the log from each attempt rather than repeatedly importing altered copies.
For a subscription, update the group before selecting a node. If the list is empty, the issue is probably the subscription response, access permission, decoding format, or group filter—not the protocol of a node that has not been imported. If a node appears but the core exits immediately, inspect the generated configuration and startup log. If the core stays running but websites fail, check the local port, system proxy mode, DNS rules, and route selection.
Common Mistakes and a Final Checklist
Many first-time configuration problems come from mixing fields between profiles. For example, a user may copy the WebSocket path from a VMess node into a TCP profile, use a TLS server name from a different domain, or enable Vision on a server that provides ordinary VLESS. These changes can make a valid imported node unusable even though the interface still shows every field as saved.
- Protocol mismatch: Confirm that the server actually offers VMess, VLESS, or Trojan. The client-side label must match the server-side inbound.
- Credential mismatch: VMess and VLESS commonly use UUIDs; Trojan commonly uses a password. Do not move credentials between protocols.
- Transport mismatch: TCP, WebSocket, and gRPC require different fields. A path is meaningful to WebSocket, while a service name belongs to gRPC.
- TLS mismatch: Verify the TLS toggle, SNI, certificate domain, ALPN requirements, and port. Port 443 alone does not prove that TLS is configured correctly.
- Core mismatch: Advanced VLESS features may require a current Xray core. Check the core log instead of assuming the GUI itself is the connection engine.
- Local proxy confusion: Confirm the actual listening address and port, often
127.0.0.1:10808in desktop examples, before changing browser proxy settings. - Routing confusion: A connected core does not guarantee that every application uses it. Review global, rule-based, or direct routing mode and test with the intended application.
A sensible beginner choice is simple: use the complete profile supplied by a trustworthy provider, keep the recommended core, and avoid manually simplifying advanced fields. Choose VMess when compatibility with an existing subscription is the priority, VLESS when a modern and fully documented Xray profile is available, and Trojan when its TLS domain, certificate, password, and transport are correctly maintained. No protocol can compensate for an unreachable server, an expired certificate, a wrong SNI, or a mismatched core.
Once the node works, export or back up the client configuration without exposing credentials, note the local proxy port, and record which core was selected. This small amount of documentation makes future device migration and troubleshooting much easier.