September 1, 2026 · Core Insights · About 10 minutes

VMess vs VLESS vs Trojan: A Beginner’s Guide to Choosing

Confused by VMess, VLESS, and Trojan? This practical beginner guide compares their compatibility, performance, setup needs, and security considerations so you can choose the right protocol for your client, subscription, and device.

At a Glance

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.

3
Protocols Compared
443
Common TLS Port
UUID
Common VMess/VLESS Credential
SNI
TLS Name to Verify

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.

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.

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

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.

Download the client View installation options for all four platforms