Minecraft "Failed to Bind to Port": What the Error Means and How to Fix It
FAILED TO BIND TO PORT explained line by line: what the exception text tells you, why Paper crashes where vanilla exits quietly, and the fixes that work.
Your server prints three lines and stops. They are the whole diagnosis, and the middle one is the only one most guides never quote:
[Server thread/WARN]: **** FAILED TO BIND TO PORT!
[Server thread/WARN]: The exception was: java.net.BindException: Address already in use
[Server thread/WARN]: Perhaps a server is already running on that port? Every word above is verbatim from the 26.2 server jar. This page explains what the server was actually doing when it printed them, how to read the middle line, and what to change on a GameServerKings server — where the port is not yours to set. For the wider "my server will not start" problem, see Reading Minecraft Server Logs and Crash Reports.
What the Server Was Doing
Immediately before those three lines, the server logs the address it is about to claim:
[Server thread/INFO]: Starting Minecraft server on *:25565 It then asks the operating system for a TCP listening socket on that address and port. If the request fails, the operating system throws an IOException, and the server catches it, prints the three warnings above, and gives up on starting. That is the entire mechanism. Nothing to do with Minecraft, mods, plugins or your world has happened yet.
Two details from that Starting Minecraft server on line are worth reading:
- The
*is what the server prints whenserver-ipis empty — meaning "listen on every interface". That is the correct, default state. - The number after the colon is the port it is trying to take. If that is not the port you expect, you have found your problem before reading anything else.
The third line is a guess, not a finding
Perhaps a server is already running on that port?is printed unconditionally, whatever the underlying failure was. It is the most likely cause, so it is a reasonable guess — but it is not derived from the exception. The middle line is the evidence. Read that one.
Reading the Middle Line
The server prints the exception's own text, and the text comes from the operating system's error code. There are three you will realistically see, and they mean genuinely different things:
| The exception says | What the OS meant | Where to look |
|---|---|---|
java.net.BindException: Address already in use |
Something is already listening on that exact address and port | The old process is still up |
java.net.BindException: Cannot assign requested address |
The address you asked to bind to does not belong to this machine | server-ip was edited |
java.net.BindException: Permission denied |
You asked for a privileged port and are not privileged | The port is wrong |
Those three strings are the standard C library messages for EADDRINUSE, EADDRNOTAVAIL and EACCES respectively, which is why they are identical across every Linux host you will ever run a Minecraft server on.
Vanilla and Paper Fail Differently
This trips people up when they compare notes, because the same fault produces two very different-looking logs.
Vanilla logs the three warnings, the startup routine returns a failure, and the process exits. There is no stack trace and no crash report — the log simply stops.
Paper (and its forks) logs the same three warnings and then throws:
java.lang.IllegalStateException: Failed to bind to port with the original BindException attached as its cause, which produces a stack trace and a crash report in crash-reports/. If you are reading a crash report whose description leads back to Failed to bind to port, do not go looking for a plugin. It is this error, wearing a bigger coat.
Causes, in the Order to Check Them
Cause 1: the previous process has not exited
By far the most common on managed hosting. A stop that did not finish — or a start clicked while the old process was still shutting down — leaves the socket held for a few seconds.
Check: scroll up in the console, or open the previous run's log. A clean shutdown ends with the server saving chunks and closing; if the last thing you see is a kill, the socket may have outlived it.
Fix: use Restart rather than Start, or press Stop, wait for the console to confirm the process has ended, and only then Start. If it recurs on every boot, say so in a ticket — a stuck process is ours to clear, not yours.
Cause 2: server-ip was edited by hand
server-ip defaults to an empty string, which is what makes the server listen on all interfaces. Put an address in it that the container does not own and the bind fails with Cannot assign requested address every single time.
Check: open server.properties and look for server-ip=. It should have nothing after the equals sign.
Fix: empty it and restart. This is the single most common self-inflicted version of this error, and it is the one the Minecraft Wiki's own server setup tutorial calls out. Every key named on this page is documented in Minecraft server.properties: The Complete Reference.
Cause 3: server-port no longer matches your allocation
server-port defaults to 25565, but on managed hosting your server is bound to whatever port the panel allocated it. The panel writes that value into server.properties on boot, so a hand-edited value survives only until the next start — and in the meantime it can produce a failed bind.
Check: compare the port in the Starting Minecraft server on line against the Address shown on the Console tab and the allocation on the Network tab. They must be the same number.
Fix: stop editing server-port. If you need a second port — for Geyser, for a proxy, for anything — add it on the Network tab; that is what allocations are for.
Cause 4: a second listener inside the same server
The game port is not the only socket a Minecraft server opens. Two more are off by default and each fails with its own message rather than this one:
- RCON —
enable-rcondefaults tofalse,rcon.portto25575. A failure here logsUnable to initialise RCON on {}:{}, and the server carries on running. - Query —
enable-querydefaults tofalse,query.portto25565. Query is UDP, so it does not collide with the game port even on the same number.
Check: if the server started and only one of those is missing, you are looking at the wrong error. FAILED TO BIND TO PORT! is fatal; those two are not.
Cause 5: two servers pointed at one port
Two of your own servers configured onto the same allocation, or a proxy and a backend told to use the same port. Whichever starts first wins and the second one prints this.
Check: the Network tab of both servers. If a Velocity or BungeeCord proxy is involved, the proxy takes the public port and each backend needs its own — Minecraft Server Networks: Setting Up a Velocity Proxy covers the layout.
What This Error Is Not
- It is not something a player ever sees. This is a startup-only, console-only message. A player who cannot connect is getting a different message on their own screen, and that message is the one to read — see Minecraft Players Can't Connect.
- It is not a firewall problem. A firewall blocks packets arriving at a socket; this failed before the socket existed. If the server reaches
Doneand players still time out, that is the other guide. - It is not caused by mods or plugins. The bind happens before plugins are enabled. A modded server that fails to bind would fail with no mods installed too.
- It is not fixed by changing the port in the game client. The port players type has to match the one the server successfully bound to, which right now is none of them.
On a GameServerKings Server
Three things are true here that are not true of a home server, and they cover most of the tickets we see:
- The port is assigned, not chosen. It comes from the allocation on the Network tab and is written into
server.propertiesfor you at boot. Take the address players need — IP and port together — from the Address at the top of the Console tab. server-ipshould always be empty. Your container has its own network namespace; naming an address in that field can only ever break it.- Extra ports come from the Network tab. Geyser, a proxy, a web map — each needs an allocation, not an edit to a properties file.
If the exception says Address already in use, you have used Restart, and it still will not bind, open a ticket with the three warning lines and the Starting Minecraft server on line above them. That is enough for us to see it from our side.
Other Named Errors in This Cluster
One page per message, all six indexed from Reading Minecraft Server Logs and Crash Reports:
Error: Unable to access jarfile— Minecraft "Error: Unable to access jarfile"Failed to verify username!— Minecraft "Failed to verify username!"Connection closed - mismatched mod channel list— Minecraft "Connection closed - mismatched mod channel list"java.lang.OutOfMemoryError: Java heap space— Minecraft "java.lang.OutOfMemoryError: Java heap space"Can't keep up! Is the server overloaded?— Minecraft "Can't keep up! Is the server overloaded?"
What to Read Next
- Reading Minecraft Server Logs and Crash Reports — the index of startup errors, and how to read the one you have
- Minecraft server.properties: The Complete Reference —
server-ip,server-port,enable-rcon,enable-queryand the rest - Minecraft Players Can't Connect — for a server that starts cleanly but rejects joins
- Minecraft Server Networks: Setting Up a Velocity Proxy — port layout when a proxy is in front
- Getting started with your Minecraft server — the Console, Startup and Network tabs
Made with 💜 by GameServerKings

Need a Minecraft server?
Deploy an instantly-provisioned Minecraft server on high-clock hardware — DDoS protected, no contracts, cancel anytime.
From $4.80 /month