Cannot Connect to Your Minecraft Server: Every Error Explained

Connection refused, Connection timed out, ReadTimeoutException, Outdated server, Invalid session and the rest - what each error means, who can fix it, and why your console is often empty.


Start here: three questions solve most cases

1. Can the player see the server in their list? If the version and player count show up, the server is perfectly reachable - so the problem happens after they click Join: version, whitelist, login or capacity.

2. How fast does it fail?

  • Instantly (under a second) → the port can be reached, but nothing is listening. The server is down, or the port is wrong. Your problem.
  • After 20-30 seconds → packets are being dropped on the way. Firewall, port forwarding or routing.

3. How many players are affected? One player while everyone else is fine → their network, their version or their account. Everyone at once → it is the server.

Rule of thumb: Refused = wrong door. Timed out = no door. Incompatible = wrong key. Invalid session = wrong player, not your server.

And remember: an empty console is also an answer. Several of the errors below write nothing to the server log, because the connection never arrived. See the table at the end.


Connection refused: getsockopt

The full error looks like this:

io.netty.channel.AbstractChannel$AnnotatedConnectException:
Connection refused: getsockopt: myserver.com/203.0.113.10:25565

Older Minecraft versions say no further information instead of getsockopt. It is exactly the same error. The wording comes from Java, not from Minecraft, and it changed with Java 17. If the player runs 1.17 or newer - so anything modern - they see getsockopt.

What it means: the packet reached a machine, but nothing is listening on that port. It fails almost instantly.

The usual causes, in order:

  1. The server is not running, has crashed, or is still starting up
  2. The player is using the wrong port - usually because they type the hostname without a port while the server is not on 25565
  3. server-port in server.properties does not match the port you were assigned
  4. server-ip is filled in, so the server bound to the wrong address
  5. Port forwarding points at an old internal IP
  6. A proxy in front of the server is down even though the server itself is running

How to find it:

  • Check Console for the line **** FAILED TO BIND TO PORT!. If you see it, the cause is almost always something in server-ip. Leave that field empty so the server binds to every address.
  • Test from outside on exactly the address and port you give your players.
  • If you use an SRV record, check that the port in it matches server-port.

Server log: nothing. The connection never arrived.


Connection timed out

io.netty.channel.AbstractChannel$AnnotatedConnectException:
Connection timed out: getsockopt: myserver.com/203.0.113.10:25565

There is also a related error that comes from Minecraft itself rather than the operating system:

io.netty.channel.ConnectTimeoutException:
connection timed out after 30000 ms: myserver.com/203.0.113.10:25565

What it means: no answer came back at all. Packets are being dropped silently. That is why it takes 20-30 seconds, where Connection refused fails immediately.

Causes:

  1. A firewall is dropping the port - on the server, at the host, or in the router
  2. The port is not forwarded, or points somewhere wrong
  3. Players have an outdated IP address, or DNS points elsewhere
  4. The host's DDoS filter is blocking that player's IP
  5. The player is behind a school or office network

How to fix it: open the port inbound on TCP at every layer - the server firewall, the host firewall and the router. Then confirm the public address and DNS are correct.

Server log: nothing.


Internal Exception: io.netty.handler.timeout.ReadTimeoutException

What it means: 30 seconds passed without a single byte arriving. The connection was established - it simply stopped responding.

Causes, in order:

  1. The server's main thread froze for more than 30 seconds - chunk generation, a plugin doing synchronous I/O, a /reload, or a long GC pause. This is by far the most common cause when everyone drops at once.
  2. The server crashed or was killed by the watchdog
  3. Genuine packet loss along the way
  4. A proxy in front of the server stalled

How to find it: if only one player is affected, it is their network. If everyone drops at once, look at server health - Can't keep up! Is the server overloaded? or a thread dump in the console is the proof.

Do not confuse it with Timed out. That shorter message comes from the server's own keep-alive check and is logged neatly as lost connection: Timed out. ReadTimeoutException is the network layer's own timer.

Server log: usually yes - lost connection: Internal Exception: io.netty.handler.timeout.ReadTimeoutException. But if the server is fully frozen it logs nothing until it thaws. A console that goes completely silent for 30 seconds is itself the diagnosis.


Internal Exception: java.net.SocketException: Connection reset

The older form of the same error, which still dominates search traffic:

Internal Exception: java.io.IOException:
An existing connection was forcibly closed by the remote host

The wording changed with Java 17. If the player runs Minecraft 1.17 or newer they see Connection reset. Older versions show the long Windows text. It is the same error.

What it means: the connection was torn down rather than closed gracefully.

Causes:

  1. The server process died mid-session - a crash, the OOM killer, or a stop from the panel
  2. A firewall or DDoS filter killed the connection on the way
  3. The router or NAT table dropped the connection
  4. The player force-closed the game, or toggled a VPN

How to find it: first check whether the server was still running at that moment. If it restarted, this is a crash question, not a network one - look for Killed or exit code 137, which means the server ran out of memory.

Server log: usually yes - lost connection: Internal Exception: java.net.SocketException: Connection reset.


Incompatible client!, Outdated client! and Outdated server!

Here the text depends on which server software you run:

Error message Which server Meaning
Incompatible client! Please use <version> Vanilla, Fabric, NeoForge The versions do not match
Outdated client! Please use <version> Paper, Spigot, Purpur The player's version is older than the server's
Outdated server! I'm still on <version> Paper, Spigot, Purpur The player's version is newer than the server's

The version number in the message is always the server's - including in Outdated server!. Players often read it as the server saying its own version is wrong. It is telling them which version to switch to.

How to fix it: state the exact version clearly wherever players find your server. If you want to accept several versions at once, install ViaVersion (and ViaBackwards if older clients should get in too).

On Paper you can write your own message in spigot.yml under messages:

messages:
  outdated-client: 'Your client is too old. This server runs {0}.'
  outdated-server: 'Switch your launcher to {0} to join.'

Server log: nothing. Handshake-phase rejections are not logged. "The player says they get an error but my log is empty" is completely normal here.


Failed to log in: Invalid session

The full message is Failed to log in: Invalid session (Try restarting your game and the launcher).

Related variants:

Failed to log in: The authentication servers are currently not reachable. Please try again.
Failed to log in: Multiplayer is disabled. Please check your Microsoft account settings.

What it means: this error happens on the player's machine, before your server is contacted at all. Their client asked Microsoft for permission to join, and that answer never came.

Causes: an expired login token (the launcher has been open too long), an outage at Microsoft, the player running two instances of the game, or their system clock being wrong.

What you can do: almost always nothing - it is their account. Ask them to close both the game and the launcher completely and sign in again.

The only thing you can get wrong yourself is online-mode. Set to false, this error cannot occur at all - but then no player is verified, and anyone can join under any name.

Server log: nothing.


You are not white-listed on this server!

Note that there are two spellings depending on your server software:

Error message Which server
You are not white-listed on this server! Vanilla, Fabric, NeoForge - hyphenated
You are not whitelisted on this server! Paper, Spigot, Purpur - no hyphen

Causes:

  1. white-list=true and the player is not on the list
  2. The player was added under an old username
  3. You edited whitelist.json by hand without running whitelist reload
  4. enforce-whitelist=true kicks already-connected players when the list is reloaded

Never test with your own account. Operators always get in, whitelist or not. Use an ordinary account to test.

Server log: yes - Disconnecting <player> (/<ip>): You are not white-listed on this server!


The server is full! and Connection throttled!

Two very different things that get confused constantly.

The server is full! simply means max-players has been reached. Be aware that the real ceiling is usually your RAM, not the number in the file.

Connection throttled! Please wait before reconnecting. exists only on Paper and Spigot. The server refuses a new connection from the same IP address if less than 4 seconds have passed since the last attempt. The setting lives in bukkit.yml:

settings:
  connection-throttle: 4000

The classic false alarm: everyone behind the same public IP shares one throttle window - a household, a school, or any server sitting behind a proxy. If you run Velocity or BungeeCord in front, the backend only ever sees the proxy's IP, so the throttle hits everyone. Set connection-throttle: -1 on the backend and let the proxy handle it instead.

Server log: The server is full! is logged. Connection throttled! is not - another case of "error for the player, empty console".


Took too long to log in

What it means: precisely that 600 server ticks passed - 30 seconds if the server is running normally - without login completing. If the server is running slowly, it takes correspondingly longer in real seconds.

Causes:

  1. The server was too busy to finish the login - typically still starting up, or a plugin blocking the main thread
  2. The server cannot reach Microsoft's login servers. A blocked outbound connection is a classic on tightly locked-down servers, and it only shows up when someone tries to log in
  3. The player's saved data is very large or corrupted

Server log: yes - Disconnecting <player>: Took too long to log in


Can't resolve hostname

The player gets this in the server list, before they even click Join. There is a related variant called Unknown host.

What it means: the address could not be looked up in DNS at all. This is not your server - it is the name.

Causes: a wrong or missing A record, an SRV record pointing at a raw IP address instead of a hostname, or DNS that has not propagated yet.

If you run without a port number via an SRV record, watch two things:

Players must type only the domain - if they add a port, the SRV lookup is skipped entirely and they hit port 25565.

And the port in your SRV record has to match server-port. If it does not, players get Connection refused while you test with IP and port and everything looks fine to you.

See Minecraft without a port number: SRV record guide.


What does the server log - and what does it not?

This saves you hunting for something that is never written:

Error for the player Is anything in the console?
Connection refused No - never arrived
Connection timed out No
Can't resolve hostname No
Incompatible client! / Outdated server! No - handshakes are not logged
Connection throttled! No
Failed to log in: Invalid session No - happens on the player's machine
You are not white-listed on this server! Yes
The server is full! Yes
You are banned from this server Yes
Took too long to log in Yes
ReadTimeoutException Usually - unless the server is frozen
Connection reset Usually

In short: nothing before login is logged, everything from login onwards is. If a player gets an error and your console is completely empty, it is almost always one of three things: the connection never arrived, the versions do not match, or they were throttled.


Good advice

  • Leave server-ip empty. There are very few good reasons to fill it in, and many bad ones.
  • State the exact Minecraft version where your players can see it. That removes an entire category of tickets.
  • Test your address from outside occasionally - not from the same network as the server.
  • Always ask the player for a screenshot of the whole error. The tail with the address and port is often the most important part.
  • Do not set max-tick-time=-1 to escape crashes. You trade a clean restart for a server that hangs indefinitely - and that nobody can join.

Cannot place an error? Send us the message exactly as the player sees it, along with a section of the console from the same moment.

MinecraftOrder now

Guide Information

Published
September 6, 2026
Last Updated
September 8, 2026
Views
30