Joining a Java server from your browser
This client speaks the Minecraft: Java Edition protocol and can join existing servers. But there is a technical obstacle between a browser and an ordinary server that is worth understanding, because it explains nearly every failed connection.
Why a proxy is needed
A Java server listens on a plain TCP connection. A web page cannot open a TCP connection: by design, the browser only lets it speak HTTP and WebSocket. That is not a limitation of this project, it is a security rule of the web itself, and there is no way around it from a tab.
The answer is a middleman. The proxy is a small service that accepts a WebSocket connection from your browser and, on the other side, opens the real TCP connection to the server you want to join. It translates in both directions and stays out of the way. The server sees an ordinary connection and needs to know nothing about any of this.
The client ships with a proxy configured by default, but it is an editable field on the connection screen: you can point it somewhere else, or at your own if you would rather not depend on a third party.
Which servers work
- Servers that already expose WebSocket. Some servers publish a
wss://address meant for web clients. These are the ones that work best, because the browser connects straight to them with no proxy in between. - Ordinary Java servers, through the proxy. Most of them. You type the usual address and port and the proxy does the rest. It works with the versions the client supports, roughly 1.8 through 1.21.x.
What does not work
- Servers on your local network or on
localhost. A public proxy sits out on the internet and cannot reach a private address inside your home. For that you need a proxy running on your own network. - Servers that require a paid account when the proxy does not support authentication. Signing in with a Microsoft account is only available if the proxy you use implements it; if it does not, the client will tell you that this proxy does not support it, and you will only be able to join servers that accept unverified sessions.
- Servers with aggressive protection. Some anticheats, firewalls and mitigation proxies block connections that all arrive from the same IP (the proxy's) or that do not behave like the desktop client. It is common on large networks and there is not much you can do about it from here.
- Heavily modded servers. If a server requires a client with specific mods, or uses an altered protocol, there will be no connection.
The proxy sees your game traffic. It is a middleman, with everything that implies. If you are joining a server where you have something to lose, use a proxy you run yourself or one you genuinely trust.
Limitations you will notice
Added latency. Your connection takes a detour: browser to proxy to server. If the proxy is far from you or from the server, milliseconds add up. For building and exploring it makes no difference; in combat you will feel it.
Shared capacity. A public proxy is used by a lot of people at once. At peak times it can get worse or turn connections away. That is not a fault of the server you are trying to join.
Differences from the desktop client. This is a reimplementation of the client, not the original game recompiled. Some features do not exist yet or behave differently, and servers with a lot of interface plugins are the ones that show it most.
If it will not connect
Check the obvious first: that the address and the port are right, and that the server is up and on a supported version. Then try another proxy, because a good number of failures belong to the middleman and not to the destination. If the server has a whitelist, make sure the name you are joining with is the one that is allowed. And if the server publishes a wss:// address, use it: it saves you the proxy entirely.
If what you want is to play with friends without depending on any public server, there is a shorter route: a P2P connection. And if you would rather have a genuine Java server running on your own PC, there is the Windows Helper.