---
title: "Minecraft Players Can't Connect: Every Error Message Explained"
description: "Match the exact error your players see - version mismatch, whitelist, online-mode, mod mismatch - to its cause and its fix on a Minecraft Java server."
url: "https://www.gameserverkings.com/knowledge-base/minecraft/players-cant-connect/"
category: "Minecraft"
category_url: "https://www.gameserverkings.com/knowledge-base/minecraft/"
published: "2026-08-19T04:53:46.633Z"
updated: "2026-08-19T06:09:37.106Z"
source_format: "markdown"
site: "GameServerKings"
---

# Minecraft Players Can't Connect: Every Error Message Explained

Minecraft is unusually good at telling you what went wrong — the client prints a specific sentence for almost every failure, and each sentence maps to exactly one cause. The problem is that the sentences are short, most guides paraphrase them, and a paraphrase sends you down the wrong path.

This guide is organised by the **exact text the player sees**. Find the message, read the cause, apply the fix. It covers Java Edition on your [Minecraft server](/games/minecraft/). For the game-agnostic version of this problem — offline in the panel, missing from a server browser, only you affected — see [Players Can't Connect to My Server](/knowledge-base/general/players-cant-connect/); this guide is its Minecraft-specific counterpart.

> [!TIP] Copy the error before you change anything
> Every message below is quoted verbatim from the game files of the current release. If what your player sees does not match word for word, you are looking at a different problem than the one you think.

## Error Message Lookup

| What the player sees | What it actually means | Section |
|---|---|---|
| `Incompatible client! Please use 26.2` | Client and server are on different Minecraft versions | [Version mismatch](#version-mismatch-the-most-common-cause-by-far) |
| `Incompatible version!` (in the server list) | Same thing, seen before connecting | [Version mismatch](#version-mismatch-the-most-common-cause-by-far) |
| `Can't resolve hostname` | The address itself is wrong or misspelled | [Wrong address or port](#wrong-address-or-port) |
| `Failed to connect to the server` + `Connection refused` | Right machine, nothing listening on that port | [Wrong address or port](#wrong-address-or-port) |
| `Failed to connect to the server` + `Connection timed out` | Nothing answered at all — wrong address, or blocked | [Wrong address or port](#wrong-address-or-port) |
| `Failed to verify username!` | Auth failed against Mojang; the account is not valid for this server | [online-mode and authentication](#online-mode-and-authentication) |
| `Failed to log in: Invalid session (Try restarting your game and the launcher)` | The player's launcher session went stale | [online-mode and authentication](#online-mode-and-authentication) |
| `You are not white-listed on this server!` | Whitelist is on and this player is not on it | [Whitelist rejection](#whitelist-rejection) |
| `The server is full!` | `max-players` reached | [Server full](#server-full) |
| `You are trying to connect to a server that is running NeoForge, but you are not.` | Modded server, unmodded (or wrong-loader) client | [Mod and plugin mismatch](#mod-and-plugin-mismatch) |
| `Received a registry entry that is unknown to this client.` | Fabric server has content mods the client is missing | [Mod and plugin mismatch](#mod-and-plugin-mismatch) |
| `You are banned from this server` | Exactly what it says | [Other kicks](#other-kicks-worth-knowing) |
| Nothing — the server never appears in the list | Status replies suppressed, or genuinely down | [Runs but shows offline](#the-server-runs-but-shows-offline) |

## Before Anything Else: Is It Actually Up?

Open the **Console** tab and look for the line the server prints when it has finished starting:

```text title="Console output"
[Server thread/INFO]: Done (18.412s)! For help, type "help"
```

Until that line appears, nothing can connect — and on a large or heavily modded world it can be minutes away. If the console has stopped short of it, or shows a stack trace, you have a startup problem rather than a connection problem: go to [Reading Minecraft Server Logs and Crash Reports](/knowledge-base/minecraft/reading-crash-logs-and-common-errors/).

The other thing to take from the Console tab is the **Address** at the top left. Copy it rather than typing it from memory — that habit alone removes a large share of these tickets.

## Version Mismatch: The Most Common Cause by Far

A client on a different Minecraft version than the server is rejected during the handshake, before login even begins. The player sees:

```text
Incompatible client! Please use 26.2
```

> [!IMPORTANT] The version in that message is the server's version, not the client's
> Minecraft fills that message in with the version **the server is running**, whichever side is actually out of date. The instruction is therefore literal and always correct: switch the launcher profile to the version named and the player gets in. It also means the message never tells you which side moved — the wording is identical either way.

Before connecting, the same mismatch shows in the Multiplayer list as `Incompatible version!` in place of the ping.

> [!NOTE] Behind a proxy, the wording changes
> BungeeCord uses its own messages for the same situation: `Outdated client! Please use <version>` when the client is behind, and `Outdated server! I'm still on <version>` when it is ahead. Those two sentences are BungeeCord's, not Minecraft's — if you see either of them, the rejection came from your proxy rather than from the backend server. See [Minecraft Server Networks: Setting Up a Velocity Proxy](/knowledge-base/minecraft/multi-server-networks-with-velocity/).

### Where the mismatch comes from

- **The player auto-updated.** The launcher's "Latest release" profile follows Mojang, so a client can jump a version overnight while your server stays put.
- **You updated the server.** Everyone who has not switched profiles is now locked out.
- **You are on a fork.** Paper, Purpur, Spigot and the mod loaders each track a specific Minecraft version — `paper-26.2-112.jar` is a 26.2 server, and a 26.1 client cannot join it. [Minecraft Server Software Compared](/knowledge-base/minecraft/choosing-server-software/) covers which fork tracks what.

### The 2026 version numbering, briefly

Java Edition dropped the `1.x` prefix in 2026. Releases are now `YY.D` — year, then drop number — so the current release is **26.2** (16 June 2026) and the last `1.` release was **1.21.11**. If a guide tells a player to "use 1.20.1", check whether that guide is simply old. [Updating Your Minecraft Server](/knowledge-base/minecraft/updating-your-server-version/) covers the numbering and the upgrade path in full.

> [!WARNING] 26.1 and newer need Java 25 on the server
> This is not a client-side issue, but it produces the same complaint. Every release from 26.1 onwards requires **Java 25**; 1.20.5 through 1.21.11 needed Java 21. If your server was moved to a `26.x` jar without its Java runtime being moved too, it will not start at all — and "nobody can connect" is how that gets reported. Mojang publishes the requirement per version in its own version manifest, and PaperMC states the same minimum in its [getting started guide](https://docs.papermc.io/paper/getting-started). The startup error it produces is covered in [Reading Minecraft Server Logs and Crash Reports](/knowledge-base/minecraft/reading-crash-logs-and-common-errors/).

## Wrong Address or Port

Several different failures hide behind "it won't connect", and Minecraft distinguishes them clearly. A failed direct connect puts `Failed to connect to the server` on screen with the underlying Java exception underneath it — that second line is the one to read.

| Client shows | Meaning | Do this |
|---|---|---|
| `Can't resolve hostname` in the server list, or `Unknown host` on connect | DNS could not turn the name into an address at all | Check the spelling. If you use a custom domain, check the record still exists |
| `java.net.ConnectException: Connection refused` | The machine answered and said nothing is listening there | Right IP, wrong port — or the server process is stopped |
| `Connection timed out` | Nothing answered at all | Wrong IP, wrong port, or something is dropping the packets |
| `Can't connect to server` in the server list | The list ping got no usable reply | Same three causes; try a direct connect to narrow it |

The official [Minecraft server setup tutorial](https://minecraft.wiki/w/Tutorial:Setting_up_a_Java_Edition_server) draws the distinction precisely: a refusal means the packets arrived and the operating system replied that nothing was listening, while a timeout means a firewall silently discarded them. A refusal is the more useful of the two — it proves you have the right machine.

> [!IMPORTANT] The port is part of the address
> Minecraft's default port is 25565, and a bare address like `play.example.com` only works when the server is on that exact port. On our plans the allocated port is frequently something else, so the address players need is `IP:PORT` — for example `203.0.113.10:25566`. Take both halves from the **Address** on the Console tab, and paste them into **Multiplayer → Add Server** exactly as shown.

Two related notes:

- **Do not edit `server-port` in `server.properties` by hand.** Your server is bound to the allocation shown on the **Network** tab, and the panel keeps the file in sync on boot. Changing it there does not move the server; it just breaks the next start. Extra ports come from the Network tab.
- **`server-ip` should stay empty.** It defaults to blank, which means "listen on every interface". Putting an address in it that the machine does not own is the classic cause of a bind failure at startup. Every key mentioned on this page is documented in [Minecraft server.properties: The Complete Reference](/knowledge-base/minecraft/server-properties-reference/).

## The Server Never Started

If the server is stopped or crashed on boot, every client gets a timeout or a refusal and none of the messages above apply. The give-away is that the Console tab never reached the `Done` line.

When it worked yesterday, the cause is nearly always a **Startup tab variable** that changed (those apply on the next start), a **config file edited by hand** that no longer parses, a **mod or plugin built for a different Minecraft version**, or a **Java version mismatch** on a server moved onto `26.x`. Each prints a specific error: [Reading Minecraft Server Logs and Crash Reports](/knowledge-base/minecraft/reading-crash-logs-and-common-errors/) walks through identifying them from `logs/latest.log`.

## online-mode and Authentication

`online-mode` defaults to `true`, which means the server checks every joining player against Mojang's account database. Three different failures come out of that check, and they are not interchangeable.

**`Failed to verify username!`** — the server asked Mojang about this player and did not get a valid answer. In the console you will see the matching line:

```text title="Console output"
[User Authenticator #1/ERROR]: Username 'Steve' tried to join with an invalid session
```

In practice this means the player does not have a legitimate, logged-in Minecraft account — most often a cracked or offline-mode client trying to join an online-mode server.

**`Failed to log in: Invalid session (Try restarting your game and the launcher)`** — the player's launcher session has expired, before the server is meaningfully involved. The instruction in the message is the fix: quit the game *and* the launcher, then sign in again. Common after switching Microsoft accounts.

**`Authentication servers are down. Please try again later. Sorry!`** — Mojang's side, not yours. It resolves on its own; the console logs `Couldn't verify username because servers are unavailable`.

> [!CAUTION] Turning `online-mode` off is not a fix
> `online-mode=false` stops the server checking accounts at all. The Minecraft Wiki is blunt about the consequence: anyone can then connect claiming any username, including yours, and take your operator status with it. It is only defensible on a server with no internet exposure — and if you run it anyway, the whitelist becomes the only thing standing between your world and the first person who types your name.

Two neighbouring settings produce login rejections that look like authentication problems:

- **`enforce-secure-profile`** (default `true`) requires the joining player to have a Mojang-signed chat key. A client with a corrupted or expired profile key sees `Invalid signature for profile public key.` followed by `Try restarting your game.` — and that is genuinely the fix. A client whose system clock is wrong gets the neighbouring `Expired profile public key. Check that your system time is synchronized, and try restarting your game.`
- **`prevent-proxy-connections`** (default `false`) kicks a player when the network they appear to be connecting from does not match the one Mojang's authentication server saw. If you have turned this on, players on VPNs, mobile data and some ISPs will be rejected apparently at random. Turning it back off is usually the right call.

## Whitelist Rejection

```text
You are not white-listed on this server!
```

Unambiguous. The whitelist is enabled and this player is not on it. From the panel Console:

```text
> whitelist add PlayerName
> whitelist reload
> whitelist list
```

Operators are whitelisted implicitly and do not need adding. [Minecraft Whitelist and Ban Management](/knowledge-base/minecraft/whitelist-and-ban-management/) covers the whole workflow, including `whitelist.json` and offline players.

Two behaviours that cause confusion:

- **`whitelist on` does not remove players already in the world.** That is what `enforce-whitelist` is for: set to `true`, non-whitelisted players are kicked when the whitelist file is reloaded. It defaults to `false`.
- **The name must match the account exactly.** The entry is stored against the account's UUID in `whitelist.json`, so a player who has since changed their username is still whitelisted — but one added with a typo never was.

> [!NOTE] The whitelist default is changing
> `white-list` has defaulted to `false` on every release to date. Minecraft Wiki records that in a 26.3 snapshot the default flipped to `true`, so a freshly generated `server.properties` on that release and later will start whitelisted. 26.3 has not been released yet — as of 19 August 2026 the current release is still 26.2 — but when you do move to it, check this key before wondering why nobody can join a brand-new server.

## Server Full

```text
The server is full!
```

`max-players` defaults to 20. Check the player count in the panel before assuming anything is wrong — a full server is working correctly. Raising the cap is a `server.properties` edit followed by a restart, subject to the slots on your plan. A cap your hardware cannot actually feed shows up as lag rather than as rejections.

## Mod and Plugin Mismatch

This splits cleanly, and the split matters more than anything else in this section.

**Plugin servers (Paper, Spigot, Purpur) do not require anything of the client.** Plugins are server-side. If your Paper server has forty plugins, a completely vanilla client still joins normally. So if players cannot connect to a plugin server, the cause is somewhere else on this page — not the plugins. See [How to install plugins for Minecraft Java Edition](/knowledge-base/minecraft/java-plugins/).

**Mod servers (Forge, Fabric, NeoForge) generally do require a matching client**, and each loader rejects a mismatch with its own wording.

### NeoForge and Forge

The loader compares the mod list on both sides during the handshake and refuses on any disagreement. The messages are specific:

| Message | Meaning |
|---|---|
| `You are trying to connect to a server that is running NeoForge, but you are not. Please install NeoForge Version: <version> to connect to this server.` | Vanilla client, modded server |
| `You are trying to connect to a server that is not running NeoForge, but you have mods that require it. A connection could not be established.` | Modded client, vanilla server |
| `Your client is missing the following mods, install these mods to join this server:` | Client needs mods the server has |
| `The server is missing the following mods, remove these mods from your client to join this server:` | Client has mods the server does not |
| `The following mod versions do not match, install the same version of these mods that the server has to join this server:` | Right mods, wrong versions |

Each of the last three appears above a table naming exactly which mods are at fault, with a **You have** / **Server has** column pair. Screenshot that table — it is the whole answer. In the server list, before connecting, NeoForge annotates the entry with `Incompatible FML modded server` or `Server mod list is not compatible`.

### Fabric

Fabric does not check the client's mod list by default. A vanilla client can join a Fabric server that only runs server-side mods — which is exactly why performance mods are popular on Fabric servers. It fails when a mod adds *content*: Fabric API's registry sync then sends the client blocks, items or entities it has never heard of, and the client disconnects with:

```text
Received a registry entry that is unknown to this client.
This is usually caused by a mismatched mod set between the client and server.
See the client logs for more details.
The following registry entry namespaces may be related:
```

The namespaces listed are the mod IDs. That list tells you which mods the player is missing.

### The practical fix for either loader

Publish an exact pack rather than a mod list. A CurseForge or Modrinth modpack link installs the same loader version and the same mod versions on every client in one click, which removes this entire class of ticket. [How to Install a Minecraft Modpack Server](/knowledge-base/minecraft/installing-modpacks/) covers the server side, including the separate **Server Files** download that most packs publish; [How to install mods for Minecraft Java Edition](/knowledge-base/minecraft/java-mods/) covers loose mods.

## Java and Bedrock Clients Are Not Interchangeable

A Bedrock player — console, mobile, Windows 10/11 — cannot join a Java server by typing its address, and vice versa. They are different network protocols on different transports: Java speaks TCP on port 25565 by default, Bedrock speaks UDP on 19132. There is no error message to read here, because the two never establish a connection at all; the Bedrock client simply reports that it cannot reach the world.

Your options:

- **Run Geyser** on your Java server to translate for Bedrock clients. That is the usual answer, and it needs its own UDP allocation — see [Setting up CrossPlay for Minecraft](/knowledge-base/minecraft/geyser-crossplay/).
- **Run a separate Bedrock server**, with its own world — see [Setting up your Bedrock Minecraft server](/knowledge-base/minecraft/bedrock/) and [Minecraft Bedrock Allowlist and Permissions](/knowledge-base/minecraft/bedrock-allowlist-and-permissions/), which is where Bedrock's own "you are not allowed in" rejections live.

Note that even with Geyser, Bedrock clients cannot load Java mods. Cross-play pairs well with a plugin server and poorly with a heavy modpack.

## The Server Runs but Shows Offline

The console reached `Done`, but the entry in the Multiplayer list shows as unreachable.

- **`enable-status`** defaults to `true`. Set to `false`, the server suppresses status replies entirely: it appears offline in the list while still accepting connections perfectly. If direct connect works and the list says otherwise, check this key first.
- **`hide-online-players`** hides the player list from the status reply only. The server still shows as online.
- **`pause-when-empty-seconds`** defaults to 60. With nobody online, the server pauses after a minute; the first join of the day can therefore feel slow while it wakes up. This is normal.
- **Give it a moment.** A server that has just started may not answer the first ping.

## Only One Player Cannot Connect

If everyone else is in, the server is fine and the problem is on that player's side.

1. **Have them try another network.** A phone hotspot takes thirty seconds and splits the problem in half. If it works on mobile data, it is their home network, ISP or VPN.
2. **Check their version.** Their launcher may have auto-updated.
3. **VPNs.** A VPN alone can do it; with `prevent-proxy-connections=true` on your side it certainly will.
4. **Have them delete and re-add the server entry.** A stale entry with an old port is commoner than it should be.

## Other Kicks Worth Knowing

These arrive after a successful connection, so they read as connection failures but are not:

| Message | Cause |
|---|---|
| `You are banned from this server` | A ban in `banned-players.json`. `pardon <name>` from the console |
| `Your IP address is banned from this server.` | An IP ban in `banned-ips.json`. `pardon-ip <address>` — see [Whitelist and Ban Management](/knowledge-base/minecraft/whitelist-and-ban-management/) |
| `You logged in from another location` | The same account connected twice; the older session is dropped |
| `Server closed` | The server stopped or restarted while they were connected |
| `Timed out` | The connection was lost mid-session — usually the player's network, sometimes severe server lag |
| `You have been idle for too long!` | `player-idle-timeout` is non-zero. It defaults to 0, meaning never |
| `Kicked for exceeding packet rate limit` | `rate-limit` is non-zero. It defaults to 0, meaning disabled |
| `Flying is not enabled on this server` | `allow-flight=false` and a plugin or mod is letting the player fly |

One more that catches people out: **`require-resource-pack`**. It defaults to `false`, but set it to `true` and every player who declines your server resource pack — or whose download fails — is disconnected on the spot.

## What to Send Support

Open a ticket with these and you will skip a round trip:

1. The **Address** from your Console tab, IP and port.
2. The **exact error** the player sees, word for word — a screenshot is ideal.
3. **Whether it affects everyone or one player.**
4. The **Minecraft version and server type** you are running, and the version the player's launcher is set to.
5. The **Console output** from the failed join attempt, plus the last twenty lines before it.

## What to Read Next

- [Reading Minecraft Server Logs and Crash Reports](/knowledge-base/minecraft/reading-crash-logs-and-common-errors/) — when the server will not start or keeps dying
- [Minecraft server.properties: The Complete Reference](/knowledge-base/minecraft/server-properties-reference/) — every key named on this page
- [Minecraft Whitelist and Ban Management](/knowledge-base/minecraft/whitelist-and-ban-management/) — whitelists, bans and pardons in depth
- [Updating Your Minecraft Server](/knowledge-base/minecraft/updating-your-server-version/) — version numbering, Java requirements and safe upgrades
- [Minecraft Server Software Compared](/knowledge-base/minecraft/choosing-server-software/) — which fork tracks which Minecraft version
- [How to Install a Minecraft Modpack Server](/knowledge-base/minecraft/installing-modpacks/) — the reliable answer to mod mismatch
- [How to install plugins for Minecraft Java Edition](/knowledge-base/minecraft/java-plugins/) — why plugin servers never need a modded client
- [Setting up CrossPlay for Minecraft](/knowledge-base/minecraft/geyser-crossplay/) — letting Bedrock players join
- [Minecraft Server Commands](/knowledge-base/minecraft/admin-commands/) — `whitelist`, `ban`, `pardon` and the full op reference
- [Players Can't Connect to My Server](/knowledge-base/general/players-cant-connect/) — the game-agnostic version of this guide

---

Made with 💜 by GameServerKings
