Back

Written for people on networks that inspect traffic, and for anyone who saw a vless:// link in a config file and wanted to know what it meant.

What is VLESS?

A plain-language answer: what VLESS is, what it is always paired with, why filtering systems struggle with it, and what it does not give you.

Crypto
  • VLESS is a lightweight transport from the V2Ray and Xray family, not a full VPN by itself
  • It has no encryption of its own on purpose, which is why it is always run over TLS
  • Lighter than VMess and free of its clock-skew failures, since it drops timestamp authentication
  • CDN fronting hides it among ordinary web traffic; REALITY answers active probes with a real site
  • Not anonymity and not Tor: one hop, one operator, a transfer of trust rather than a removal
  • No protocol is guaranteed on a censored network, VLESS included
no accountconfigs on your order page

VLESS is a transport protocol from the V2Ray and Xray family. It defines two things: how a client proves which account it is, using a UUID, and how it asks the server to open a connection to some destination on its behalf. That is close to the whole specification. It is deliberately thin.

The part that surprises most people is that VLESS has no encryption of its own. This is not an oversight and it is not a weakness in itself. Encryption was moved out of the protocol and handed to TLS, the same layer that protects ordinary HTTPS, which is why in practice you will never see VLESS deployed alone. You will see VLESS over TLS, and increasingly VLESS with a REALITY handshake.

The rest of this page answers the question properly first: how VLESS differs from VMess, from Shadowsocks and from Trojan, what CDN fronting really means, why deep packet inspection has a hard time with it, and the honest list of things it does not do. What we sell comes at the end, in one section, and you can ignore it.

What VLESS actually does

A VLESS session begins with the client sending a small header: a version byte, the UUID that identifies the account, an optional add-on field, the command (connect over TCP, connect over UDP), and the destination address and port. The server checks the UUID against its list, opens the requested connection, and from that point simply copies bytes in both directions.

There is no per-message framing, no obfuscation layer, no timestamp handshake, no key exchange inside the protocol. The overhead per connection is a handful of bytes, and the CPU cost of the protocol itself is close to nothing. Everything expensive is happening in the TLS layer underneath, which every modern processor has hardware acceleration for.

This is why VLESS is described as a transport rather than a tunnel in the way WireGuard is a tunnel. WireGuard builds a network interface and routes packets. VLESS proxies streams: an application asks for a destination, the client wraps that request, and the server makes the connection. Whether your whole device goes through it depends on the client software you use, not on the protocol.

Why it carries no encryption of its own

Older protocols in this family bundled their own cryptography. That created two problems. The first is that home-grown cryptography inside a censorship-resistant protocol is a bad bet: it is written by fewer people, reviewed by fewer people, and when it is wrong nobody finds out for years. The second problem is worse for the actual purpose. Custom encryption produces custom-looking traffic, and traffic that looks like nothing else on the internet is easy to single out even when it cannot be read.

VLESS takes the opposite position. It does the identification and the addressing, then gets out of the way and lets TLS provide confidentiality and integrity. TLS is the most analysed protocol on the internet, it is implemented by libraries that thousands of people audit, and, most usefully here, it is what almost every other connection leaving your device also looks like.

The practical consequence: a VLESS endpoint without TLS in front of it is genuinely insecure and should never be used. If you are handed a vless:// link where the security parameter is none, that link sends your account UUID and your destination addresses in the clear. Every configuration we issue uses TLS.

VLESS compared with VMess

VMess came first, from the same project. It carries its own encryption, and it authenticates using a hash built from the account UUID and the current time. That time dependency is the source of the classic VMess failure: a client whose clock is more than a minute or two off the server simply cannot connect, with no useful error to explain why.

VMess also has a distinctive shape. Because it does its own framing and its own crypto, the resulting byte stream has properties that a filtering system can learn. Several national filtering systems demonstrated exactly that, and VMess deployments started wrapping themselves in TLS to survive, at which point the protocol was paying for encryption twice.

VLESS is essentially VMess with those two things removed: no built-in cryptography and no timestamp authentication. The result is lighter on the CPU, immune to clock skew, and, once TLS is doing the outer layer, considerably harder to fingerprint. If you are choosing today, there is no strong argument left for VMess.

VLESS compared with Shadowsocks and Trojan

Shadowsocks is an encrypted SOCKS proxy. Its traffic is designed to look like random bytes with no recognisable header at all. That worked well for years, but "a stream of high-entropy bytes on a port, with no TLS handshake in front of it" is itself a signature, and modern filtering systems have learned to look for exactly that pattern and to actively probe the servers that produce it.

Trojan took the other route: rather than looking like nothing, look like something extremely common. A Trojan server presents a real TLS certificate and, if a probe connects without the right password, serves an ordinary web page. To a scanner it is a web server. The weakness is that it needs a genuine domain and certificate, and the sites it is standing in for are usually low-traffic sites nobody visits.

VLESS over TLS sits in the same family as Trojan, and REALITY pushes it further along the same idea. The difference is that VLESS is a transport rather than a complete server design, so it can be carried over plain TLS, over WebSocket behind a CDN, over gRPC, or over REALITY, and you pick the one that suits the network you are on. That flexibility is the actual reason it has become the default in this ecosystem.

What CDN fronting and REALITY mean in practice

CDN fronting means your VLESS connection is not made to a server sitting alone on its own address. It is made to a content delivery network edge, over WebSocket or gRPC inside an ordinary HTTPS request, and the CDN forwards it onward. To anyone watching the network, you connected to an IP address that also serves thousands of unrelated websites, using a hostname and a certificate that belong to that CDN. Blocking that address means blocking a large slice of the ordinary web with it, which is a cost most networks will not pay.

REALITY attacks the problem from the certificate side instead. A REALITY server borrows the TLS handshake of a real, popular, unrelated website. When a censorship system actively probes your server, which is now a routine technique rather than a theoretical one, the probe receives the genuine handshake and the genuine certificate of that real site. The probe concludes it has found a mirror of a well-known service, because from the outside that is exactly what it saw.

Neither technique is magic and neither is permanent. Both are answers to a specific detection method, and detection methods change. What they buy you is that blocking your connection requires collateral damage the network operator may not want, rather than a rule that costs them nothing.

Why deep packet inspection struggles with VLESS

Filtering systems work in layers. The cheapest layer is a list of blocked addresses and hostnames. The next layer looks at the shape of the traffic: the handshake bytes, the packet size distribution, the timing. The most expensive layer connects to your server itself and tries to make it reveal what it is.

VLESS over TLS gives the first layer very little, because a CDN address cannot be added to a blocklist cheaply. It gives the second layer very little, because what is on the wire is a TLS session whose handshake fingerprint can be made to match a common browser, and the VLESS header itself only appears after that session is established, encrypted. REALITY answers the third layer directly by handing the prober a real site.

What still works against it: a network that permits only a whitelist of destinations, a network that blocks TLS to anything outside its own resolver and proxy, and traffic analysis over a long period, which does not need to read anything to notice that one connection carried a suspicious amount of data for a long time. VLESS is a strong answer to pattern matching. It is not an answer to a network that only lets you reach five approved addresses.

What VLESS is not

It is not anonymity. A VLESS connection moves the visible endpoint of your traffic from your own network to the server. Your local network and your access provider no longer see where you are going; the server does. That is a transfer of trust, not a removal of it. Our network keeps no logs, meaning source addresses and connection timestamps are not stored and the servers run from RAM so a reboot leaves nothing behind, but you should evaluate that claim the way you would evaluate anyone making it.

It is not Tor. Tor routes through three independent relays run by different people so that no single one knows both who you are and where you are going. VLESS is one hop to one operator. Tor is far slower and far stronger against that specific threat. If your risk model requires that nobody in the path can correlate both ends, a VPN of any protocol is the wrong tool.

It is also not a guarantee. A network can block a protocol, a country can block a CDN, and an endpoint that worked yesterday can stop today. Anyone promising that VLESS will always work in a named country is guessing. What is true is narrower and still useful: VLESS is built to look like ordinary encrypted web traffic, and it is what to try when plainer protocols fail.

Ours runs from four locations - Singapore, Tokyo, Los Angeles and Berlin - because CDN-fronted endpoints are maintained individually rather than spun up in bulk, and a short list that is looked after beats a long one that is not. VLESS access is included with every plan on /vpn/, alongside WireGuard and OpenVPN on servers in dozens of countries, and there is a live board at /vpn/status/ if you want to see the endpoints before deciding.

How to read a vless:// link

  1. 1

    The part before the @ is your account

    A link looks like vless://UUID@host:port?parameters#label. The long hexadecimal string before the @ is the UUID that identifies your account. Treat it as a password: anyone holding it can use your access.

  2. 2

    The host and port are where the client connects

    This is the address the connection is actually made to. With a CDN-fronted setup this is often a CDN hostname rather than the server itself, and port 443 so it lands on the same port as all normal HTTPS traffic.

  3. 3

    security tells you what is protecting it

    security=tls means ordinary TLS; security=reality means a REALITY handshake borrowing a real site. security=none means nothing is encrypting the session, which is unsafe and should never be used outside a lab.

  4. 4

    type is how VLESS is carried

    type=ws is WebSocket, which is what CDN fronting normally uses, and it will be paired with a path and often a host parameter. type=grpc uses gRPC streams, type=tcp is raw. These must match the server exactly or nothing connects.

  5. 5

    sni and fp control what the network sees

    sni is the server name sent in the TLS handshake, which is the one part of a TLS connection visible in plain text. fp sets the handshake fingerprint the client imitates, usually chrome, so the connection looks like a browser rather than a proxy tool.

  6. 6

    The text after the # is only a label

    It names the entry in your client list and has no effect on the connection. You can rename it to anything that helps you tell your servers apart.

Questions & answers

What does VLESS stand for?

It is not a formal acronym. The name comes from VMess, the earlier protocol in the same V2Ray project, with the "V" kept and the rest signalling that the design is less: less overhead, less cryptography inside the protocol, less to fingerprint. Reading it as "VMess, lighter" is close to the intent.

Is VLESS safe to use?

VLESS over TLS is safe in the ordinary sense: the session is protected by the same cryptography that protects HTTPS. VLESS without TLS is not safe, because the protocol itself encrypts nothing and would expose your account UUID and your destination addresses. Check that any link you are given has security set to tls or reality, never none.

What is the difference between VLESS and VMess?

VMess includes its own encryption and authenticates with a timestamp, so a device with a wrong clock cannot connect and the traffic has a learnable shape. VLESS removes both, relying on TLS for encryption and on the UUID alone for identity. VLESS is lighter, harder to fingerprint, and has no clock dependency.

Is VLESS better than Shadowsocks?

For networks that actively look for proxy traffic, usually yes, because VLESS over TLS looks like a normal HTTPS session while Shadowsocks looks like an unexplained stream of random bytes. On a network that does not filter at all, Shadowsocks is simpler to run and the difference does not matter.

Does VLESS make me anonymous?

No. It changes who can see your traffic, not whether anyone can. Your local network and access provider stop seeing your destinations and the VPN server starts seeing them. For anonymity against an observer who can watch both ends of a connection, Tor is the appropriate tool, not any VPN protocol.

Will VLESS work in a country that blocks VPNs?

Nobody can promise that. VLESS is designed to look like ordinary encrypted web traffic, so it is normally the thing to try when WireGuard and OpenVPN are blocked, but a network that only permits a whitelist of destinations can stop it like anything else. Treat any provider guaranteeing a specific country as a warning sign.

What client apps support VLESS?

On Android, v2rayNG and Hiddify. On iOS, Shadowrocket and Streisand. On Windows, v2rayN, Nekoray or Hiddify. On macOS and Linux, Hiddify and the Xray core directly. All of them import a vless:// link by paste or by scanning a QR code.

Does VLESS need a domain name?

A plain TLS or CDN-fronted deployment does, because TLS certificates are issued for names rather than addresses. REALITY is the exception: it borrows another site name for the handshake, so it can run on a bare IP address. As a user you do not have to care, since the domain is already inside the link you are given.

More topics

Related guides

What is VLESS?

A plain-language answer: what VLESS is, what it is always paired with, why filtering systems struggle with it, and what it does not give you.

See VPN plans