How HopFox VPN works
This page describes only what is running today. When something changes, the change appears here and in the news.
The protocol: VLESS Reality
HopFox connects with VLESS over TCP port 443, wrapped in Reality, using the open-source engine Xray-core (version 26.3.27 on both the servers and the Android app).
Port 443 is the port of HTTPS, and Reality makes the connection look exactly like a TLS 1.3 session with a well-known public website: the handshake is real, the certificate belongs to that site, and there is nothing in the first packets that says "VPN". Filtering equipment that recognises and slows down conventional VPN protocols sees regular web traffic. Only a client that knows the server's key gets a tunnel; anyone else who connects to the same address is transparently forwarded to the real website and sees a normal page.
Why we chose it:
- Indistinguishable from HTTPS. There is no custom handshake to fingerprint and no VPN-specific port. This is the property we care about most, because it decides whether the app works on the network you happen to be on.
- No certificates to trust. Reality borrows the TLS identity of a real site, so there is nothing to install or approve on the phone, and nothing that could be revoked.
- Fast. With XTLS Vision, application data that is already TLS-encrypted is not encrypted a second time, so the tunnel adds very little overhead. Latency is what you would get from a direct connection to the server.
- Open source and audited by many eyes. Xray-core is developed in the open; we run the latest release and do not modify the protocol.
One protocol is enough for what we do today. If we add another one, it will be listed here with the same level of detail.
On the phone
The Android app registers a system VPN interface, so every app on the phone goes through the tunnel, including DNS. Inside the app a copy of Xray-core opens the Reality connection, and a small network stack turns the phone's packets into that connection. The app itself is excluded from the tunnel: its own conversation with the server, and the check of your visible IP, go directly.
Latency is measured on your phone, not guessed on our side: the app opens a connection to each location and times it. The Automatic choice is simply the location with the lowest number at that moment. The list does not reorder itself while you look at it; it is refreshed once an hour and when you ask.
On the servers
- Our own servers, Debian 13, kept up to date. One process on each: Xray-core listening on port 443.
- Logging is set to warnings only and goes to memory, not disk. Nothing about users is written to storage on a server.
- A small agent on each server talks to our panel: which accounts are allowed, how many are online, how much traffic passed. That is the entire data model.
- The panel knows your account number, plan, device count and the time of connections. It does not know what you do inside the tunnel.
Accounts without identity
On first launch the app generates a key on your phone and asks the panel for an account number. That number is the account. No email, no phone number, no password: there is nothing to leak and nothing to reset. If you want the same account on a second device, you type the number there. If you delete the account, the panel closes the number and every device linked to it loses access at once.
What is not there yet
- Apps for iPhone, Mac and Windows: in development.
- Payments inside the app: not open yet. Every account has 30 free days, then Free mode.
- A second protocol and automatic switching between protocols: planned, not built.
Updated 27 September 2026.
30 days free. No card, no account.
Then Free mode. Nothing is charged without your action.