
You click Join on a modded server and get kicked back with Connection closed - mismatched mod channel list, a list of "Mod rejections", or a channel that "failed to connect". On Fabric the game may stop even earlier, at startup, with "Incompatible mod set". Each means the mods on your side and on the server do not line up, and each already names the mods involved. Here is how to fix each one on Forge, NeoForge and Fabric, checked against the loaders' own source code on 31 October 2026.
Quick answer: Connection closed - mismatched mod channel list means Forge's join check failed: a mod that sends its own network data is missing on one side, or the two sides run builds of it with different network versions. "Mod rejections" is the same check in Forge for 1.12.2 and older, and NeoForge for 1.20.4 and newer words it as "Channel of mod ... failed to connect". The disconnect screen and logs/latest.log name the mods. Players: install the exact modpack version the server runs. Server owners: build the server from that version's server pack, not from your own mods folder. "Incompatible mod set" is a different problem: Fabric Loader stopped at startup over a missing or wrong dependency.
Which Error Do You Have?
| You see | Printed by | What it means |
|---|---|---|
Connection closed - mismatched mod channel list | Forge for 1.13 to 26.3, NeoForge for 1.20.1 and 1.20.2 | A mod's network channel is missing on one side or has another version |
Server Mod rejections: or Mod rejections | Forge for 1.12.2 and 1.7.10 | The same check, in older wording |
Channel of mod "..." failed to connect | NeoForge for 1.20.4 and newer, including 1.21.1 | The same check, with a reason for each channel |
Failed to synchronize registry data from server, closing connection | Forge | The server has blocks, items or other content from mods your client lacks |
Received N registry entries that are unknown to this client. | Fabric API | The same, on Fabric |
Incompatible mods found! (older Loader: Incompatible mod set!) | Fabric Loader, at startup | A dependency is missing, has the wrong version or does not load on this side |
Network Protocol Error | Minecraft 1.20.5 and newer | Your client failed while handling a packet from the server |
Why One Missing Mod Blocks the Whole Join
Mods that sync data between client and server register a network channel with a version. When you join, the loader compares the channel lists of both sides, and a channel only accepts its own version unless the mod's author marked it optional. Forge's channel builder "defaults to only accepting current version", and NeoForge's payload registrar says that "if any non-optional payloads are missing during a connection attempt, the connection will fail."
That version is a value the author sets, not the mod's version number, which is why two builds of a mod sometimes connect and sometimes do not. And the check is about channels, not about which side a mod is meant for. LuckPerms, a server-only permissions mod, caused "mismatched mod channel list" on Forge 1.21.1 because it expected a client-side copy, until its developer fixed it in February 2025.
Reading the Mismatched Mod Channel List
Forge for 1.18.2 and newer sorts the mods on the disconnect screen into three groups: "Your client is missing the following mods" (install them), "The server is missing the following mods" (remove them from your client) and "The following mod versions do not match" (install the server's version). The columns show the version you have, need or the server has. A long list ends with "[N additional, see latest.log for the full list]", and the Open latest.log button takes you there. Older Forge builds, including all of 1.13 to 1.18.1, show only the one-line message, so the names are only in the log.
Search logs/latest.log on your PC or on the server. This covers Forge and NeoForge:
grep -E "rejected their|mismatched|failed to connect|additional mods|missing on server" logs/latest.log
On Windows, in PowerShell from your instance folder:
Select-String -Path logs\latest.log -Pattern 'rejected their','mismatched','failed to connect','additional mods','missing on server'
Forge's Channels [...] rejected their client side version number (or server side) lists the failing channels as modid:name; the part before the colon is normally the mod id. Server has additional mods that may be needed on the client: modid@version, ... appears when the multiplayer list pings the server, before you even click Join.
NeoForge for 1.20.4 and newer shows a Connection Lost screen with a "Channel name" and "Reason" table, and logs each row as Channel [modid:name] failed to connect: .... The reason tells you which way to fix it:
| Reason | Fix |
|---|---|
This channel is missing on the client side, but required on the server! | Install that mod on your client, in the server's version |
This channel is missing on the server side, but required on the client! | Remove it from your client, or the server owner adds it |
The client wants the payload to be version: ..., or a reason about the payload's flow | Two builds of the same mod: install the server's version |
Forge for 1.12.2 kicks you with "Server Mod rejections:" and one line per mod, in the form <mod name>: Requires version <x> but client has <y>. or <mod name>: Requires version <x> but mod is not found on client. Install exactly the version it names. Forge for 1.7.10 prints "Mod rejections" followed by the rejected mods.
Fix It as a Player
- Find out what the server runs: the modpack and its version, or for a custom server the Minecraft version, the loader version and the mod list.
- Install that exact pack version. The newest version of a pack is not always the server's, and one mod in another version can be enough to fail the check.
- Work through whatever the screen still lists: install what you are missing in the version it names, and remove what the server is missing.
On a server with a hand-picked mod list, compare file names. The server owner runs ls mods > server-mods.txt in the server folder and sends you the file. On Linux or macOS, in your instance folder:
ls mods > my-mods.txt
comm -3 <(sort my-mods.txt) <(tr -d '\r' < server-mods.txt | sort)
Names in the left column are only on your side, indented names only on the server. In Windows PowerShell:
Get-ChildItem mods -Name | Set-Content my-mods.txt
Compare-Object (Get-Content my-mods.txt) (Get-Content server-mods.txt)
<= marks files only you have, => files only the server has. Minimaps, shaders and other client-only mods show up as differences and belong on your side, so focus on the mods the disconnect screen named.
Fix It as a Server Owner: Start From the Server Pack
- Use the server pack of the exact version your players run. CurseForge's own tutorial has authors attach the server pack to a pack version and says "the pack and server should match pack versions". A Modrinth pack (.mrpack) marks which files go into the client and the server install, which keeps client-only files off the server.
- Do not copy your client's mods folder to the server. On Forge and NeoForge, client-only mods can stop the server from starting. Our client-side mods fix shows the log lines that name them.
- Update both sides together, and back up first: see how to update a modpack without losing your world.
- Check a mod's side before you add it. In August 2025, Modrinth asked all authors to verify an environment label on their projects, such as "Client-side only", "Server-side only" or "Client and server, Required on both". A "Required on both" mod has to go into the pack your players install too. Authors set these labels themselves, so the disconnect screen has the final word.
On Space-Node's modpack hosting, the panel's modpack installer sets up listed CurseForge and Modrinth packs, or you upload a pack's server files over SFTP.
Incompatible Mod Set on Fabric
Fabric has no mod list handshake like Forge. It checks at startup and again when you join.
At startup, Fabric Loader checks every mod's dependencies on the side that is starting, your PC or the server. A failure stops it with Incompatible mods found! (Loader 0.14.22 and older: Incompatible mod set!), then a potential solution as Install, Replace or Remove lines, then the details:
which is missing!at the end: install that mod, in the version the line names.but only the wrong version is present: replace the mod with the version the line names.which is disabled for this environment (client/server only)!: a mod depends on a mod that does not load on this side. Remove the mod that depends on it, or update both.
A Fabric mod declares its side in fabric.mod.json, and "environment": "client" means the loader never loads it on a dedicated server. To check a jar on Linux or macOS:
unzip -p examplemod.jar fabric.mod.json | grep environment
No output means the default, "*": both sides. For a missing Fabric API, our Fabric API guide lists the right file per Minecraft version.
When you join, Fabric API compares registries. If the server has blocks, items or other entries your client does not know, you get Received N registry entries that are unknown to this client. and a list of namespaces, usually mod ids: install those mods in the server's versions. Recent Fabric API builds also refuse a client without Fabric with This server requires Fabric Loader and Fabric API installed on your client!
Network Protocol Error on a Modded Server
"Network Protocol Error" appears in Minecraft 1.20.5 and newer when your client hits an error while handling a packet from the server. Since 1.21, the client also saves a report about the disconnect, "similar to crash reports" in Mojang's words, and the screen gets an Open Report Directory button. The report sits in the debug folder of your game or instance folder, is named like disconnect-2024-11-06_17.02.07-client.txt, and starts with ---- Minecraft Network Protocol Error Report ----. Read it like a crash report: find the first exception, then the first package or id that does not belong to Minecraft or the loader. Our crash log guide shows how.
These cases are documented on the mods' own issue trackers:
- Supplementaries with Forgified Fabric API on NeoForge 1.21.1. Players got Network Protocol Error on joining, even in singleplayer. The Supplementaries developer saw that one of its data values was read as
minecraft:instead ofminecraft:bed, and both projects closed the report as fixed on 17 November 2024. - Supplementaries with ImmediatelyFast on Fabric 1.21.1. Players were kicked from any world with a filled map in their inventory. The report named a failed
MapAtlasTexturemixin, which the ImmediatelyFast developer traced to Supplementaries' compatibility code, and the Supplementaries developer pointed to a new version on 4 November 2024. - owo-lib on NeoForge 21.1.262 (Minecraft 1.21.1). Here the screen said Internal Exception instead: every player was kicked on join with
Failed to encode packet 'clientbound/minecraft:custom_payload'and[owo] Sided Packet Codec has not been unpacked, which broke Accessories and other mods that use owo-lib's networking. owo-lib 0.12.15.6-beta.1+1.21 fixed it on 16 October 2026; Modrinth lists it for client and server, so update both.
In each case the answer was an update of the mods the report names, on the client and the server. For an Internal Exception that names a packet, see our connection lost guide.
FAQ
Why do I get "mismatched mod channel list" when I have the same mods as the server?
Usually one mod has another version, or the server runs an extra mod with a required channel. Compare the "You have" and "Server has" columns, search latest.log for Server has additional mods, and compare both mods folders.
What does "mod rejections" mean in Minecraft? It is how Forge for 1.12.2 and 1.7.10 reports mods that do not match the server's. Each line names a mod and the version the server requires: install exactly that version.
What does "Channel of mod failed to connect" mean? It is NeoForge's wording for the same check, on 1.20.4 and newer. The text after the colon says whether the channel is missing on your side, missing on the server, or present in another version.
How do I fix "Network Protocol Error" on a Minecraft server? Run the server's exact pack version, open the report with the Open Report Directory button, find the mod it names, and update that mod on both the client and the server.
Can players with a modpack join a vanilla server? Only if none of their mods needs its channel on the server. Otherwise NeoForge refuses with "You are trying to connect to a server that is not running NeoForge, but you have mods that require it." The reverse fails too: a client without Forge on such a Forge server gets "This server has mods that require Forge to be installed on the client." Keep a separate vanilla profile.
Sources
All opened on 31 October 2026:
- Forge source on GitHub: HandshakeHandler 1.20.1, NetworkRegistry 1.20.1, ModMismatchDisconnectedScreen 1.20.1, ForgeHooksClient 1.20.1, ServerLifecycleHooks 1.20.1, ForgePacketHandler 1.21.1 and 26.3, ChannelBuilder 1.21.1, FMLHandshakeHandler 1.13 and 1.16, language files 1.16, 1.17, 1.18, 1.20.1 and 26.3, and the mismatch screen pull request #8402 (5 June 2022)
- Old Forge and FML: FMLNetworkHandler 1.12.x, NetworkModHolder 1.12.x, FMLNetworkHandler 1.7.10
- NeoForge source on GitHub: NetworkRegistry 1.21.1 and 26.3, NetworkComponentNegotiator 1.21.1, PayloadRegistrar 1.21.1, ModMismatchDisconnectedScreen 1.21.1 and 26.3, ClientConfigurationPacketListenerImpl patch 1.21.1, HandshakeHandler 1.20.1 and 1.20.2, language files 1.20.4, 1.21.1 and 26.3
- Fabric: Fabric Loader messages current, 0.14.22 and 0.14.23, fabric.mod.json specification, Fabric API registry sync: language file, RegistrySyncManager 1.21.4 and 26.3, ClientRegistrySyncHandler 26.3
- Mojang: Minecraft Snapshot 24w21a, and the version manifest with the client jars for 1.20.4, 1.20.5, 1.21.1 and 26.3 (
assets/minecraft/lang/en_us.json, andClientCommonPacketListenerImplin 26.3) - Issue trackers: owo-lib #507, owo-lib versions on Modrinth, Supplementaries #1195 and #1176, Forgified Fabric API #167, LuckPerms #3987
- CurseForge: Server Packs Tutorial (22 May 2025)
- Modrinth: Creators: Verify Your Environment Metadata (28 August 2025)