Skip to content

Minecraft "Connection closed - mismatched mod channel list": What It Means

Forge rejects joins on the network channel list, not the mod list. What that changes, what NeoForge and Fabric say instead, and the fix that holds.

Updated August 19, 2026
Minecraft

The player is kicked at the handshake, before the world loads, with one line:

Connection closed - mismatched mod channel list
text

And your console records what it rejected:

[Server thread/ERROR]: Channels [examplemod:main, othermod:net] rejected their client side version number
[Server thread/ERROR]: Terminating connection with client, mismatched channel list
Console output

All three are verbatim from Forge for Minecraft 26.2. The message is nearly always read as "your mods are different from mine". That is not what it says, and the difference is the reason this one is so hard to chase. For every other join-time rejection, see Minecraft Players Can't Connect.

It Is a Channel List, Not a Mod List

Forge exchanges two things during the handshake: a mod list and a channel list. Only the second one can reject you.

A channel is a named network pipe that a mod registers so it can send its own packets, tagged with a protocol version. Forge walks its own registered channels and, for each, asks two questions about the other side:

  • Is this channel present over there? If not, it goes on the missing list.
  • If present, does its version pass the check the mod defined? If not, it goes on the mismatched list, with both version numbers recorded.

If either list comes back non-empty, the connection is closed. The mod list is exchanged and stored, but it is never what causes the rejection.

That single fact rearranges the diagnosis:

  • Mods with no networking are invisible to this check. A client-side shader pack, a minimap, a resource-pack mod, a texture tweak — none of them register a channel, so none of them can trigger it, however different the two mod folders look.
  • Identical mod lists still fail if one mod is a different version. If your server has examplemod-3.2.0 and the player has examplemod-3.1.4, both lists read "examplemod" and the channel version check still refuses.
  • The console names the channels, not the mods. A channel ID normally starts with the mod ID, which is how you work back to the mod — but it is one step of inference, not a direct statement.

This message is never translated

Forge builds it as a literal string rather than a translation key, so it reads exactly the same in every language the client is set to. If a player quotes it back to you in English on a French client, that is expected and tells you nothing.

Which Direction Failed

Both sides run the same check, and both produce the same sentence on screen. Your console distinguishes them:

Console line Where it was logged Meaning
Terminating connection with client, mismatched channel list Your server The server found the client's channels unacceptable
Terminating connection with server, mismatched mod list The player's client The client found the server's channels unacceptable

If the line is in your server log, the server made the decision. If your log has nothing at all and the player still saw the message, their client made it — ask them for their logs/latest.log, which will name the channels. Reading Minecraft Server Logs and Crash Reports covers pulling logs off a server.

The server also logs, at debug level, the two lists it received: Received client connection with modlist [...] and Received client connection with channels [...]. If you have debug logging on, those two lines are the complete evidence.

NeoForge Says Something Different

NeoForge is a separate loader with its own wording, so the sentence a player quotes tells you which loader they hit.

Instead of one literal line, NeoForge names the specific mod and the specific disagreement:

Channel of mod "examplemod" failed to connect: The client wants the payload to be version: 3, but the server wants it to be version: 4!
text

The reasons it substitutes into that second half are each specific: This channel is missing on the server side, but required on the client!, This channel is missing on the client side, but required on the server!, and the flow and version variants of the same idea.

NeoForge also has a dedicated mismatch screen with a table, which is far more useful than anything in the log. Its headings are Channel name, You have and Server has, above one of three sentences:

  • Your client is missing the following mods, install these mods to join this server:
  • The server is missing the following mods, remove these mods from your client to join this server:
  • The following mod versions do not match, install the same version of these mods that the server has to join this server:

Ask the player for a screenshot of that table. It is the whole answer, mod by mod, and it saves the inference step entirely.

Before Connecting, the Server List Says So Too

Both loaders annotate the multiplayer list entry before anyone tries to join, which is the cheapest possible check:

Entry shows Meaning
Compatible FML modded server The client's channels satisfy the server's list
Incompatible FML modded server They do not — this is the same failure, seen earlier
Server mod list is not compatible The mod-level check failed at ping time
Server network message list is not compatible The channel-level check failed at ping time
Vanilla server / Incompatible Vanilla server No loader on the server side at all

If the entry already says incompatible, there is no point clicking it.

Fabric Does Not Do This

Fabric has no handshake channel check by default. A vanilla client can join a Fabric server running server-side-only mods, which is exactly why performance mods are popular there.

Fabric fails later and differently, when a mod adds content the client has never heard of:

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:
text

The namespaces listed are the mod IDs. Different message, different mechanism, same underlying remedy.

Causes, in the Order to Check Them

1. The client is on a different version of one networked mod

The commonest cause on a server whose players install mods individually. One person updated, or did not.

Check: the channel names in the console. Map each back to its mod ID and compare that mod's version between server and client.

2. The client is missing a mod the server requires

Someone joined with a partial install, or with the pack's client files only.

Check: on NeoForge, the mismatch table says so outright. On Forge, the missing channels are listed in Channels [...] rejected their client side version number.

3. The client has an extra networked mod the server does not run

The reverse, and the one people forget, because "I have more mods than the server" feels harmless. It is not, if the extra mod registers a channel that the server rejects.

Check: have the player start with a clean mods folder containing only the pack.

4. Loader versions differ

Forge 65.1.2 and Forge 61.2.0 are not interchangeable, and neither is NeoForge across Minecraft versions. A mismatched loader can fail the check before any individual mod is involved.

Check: compare the exact loader build on both sides, not just the Minecraft version.

5. A pack update that only landed on one side

Servers get updated on a schedule; players update when their launcher tells them to.

Check: the pack version string on both sides.

The Fix That Actually Holds

Publish an exact pack rather than a mod list.

A CurseForge, Modrinth or FTB pack link installs the same loader build and the same mod versions on every client in one action, which removes this entire class of problem permanently. A written list of mods does not — it leaves each player to pick versions, and this error is what picking versions produces. How to Install a Minecraft Modpack Server covers the server side, including the separate Server Files download most packs publish; How to install mods for Minecraft Java Edition covers loose mods and loader choice.

When It Is Not the Real Problem

  • You are running Paper, Purpur or Spigot. Plugins are server-side and require nothing of the client. A plugin server cannot produce this message, so if you are seeing it, something is not what you think it is — see How to install plugins for Minecraft Java Edition.
  • The player has different client-side mods. Shaders, minimaps and texture mods register no channels. They are not the cause, and stripping them will not help.
  • Only one player is affected. That is their install, not your server. Everyone else proves the server's channel list is fine.
  • The message is a version number instead. Incompatible client! Please use 26.2 is a plain Minecraft version mismatch and has nothing to do with mods — Minecraft Players Can't Connect covers it.

Other Named Errors in This Cluster

One page per message, all six indexed from Reading Minecraft Server Logs and Crash Reports:


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