// connection guide

Why can't my friends join my modded Minecraft server?

The server is up, but your friends get thrown back to the multiplayer screen. The message they see almost always points to one of two problems. Either their game doesn't match the server (different mods, pack version or loader), or their game can't reach the server at all (port forwarding, CGNAT, a firewall). Find their exact message below.

Updated  ยท  Forge, NeoForge, Fabric

Match the message to the cause

Ask the player for the exact text on their screen. The server console usually shows the same reason, in a line like PlayerName lost connection: Connection closed - mismatched mod channel list.

The player seesUsually meansFix
Connection closed - mismatched mod channel listForge, and NeoForge 1.20.1 and 1.20.2: their mods don't match the server's. One is missing, extra or a different version.Mod mismatch
Channel of mod "..." failed to connectNeoForge 1.20.4 and newer: the same mismatch, with the mod named.Mod mismatch
Server Mod rejections: or Mod rejections [FMLMod:...]Forge 1.12.2 or 1.7.10: the same mismatch, old-style.Mod rejections
Incompatible FML modded serverA red X in the server list. Forge or NeoForge already sees the mod lists won't match.Server list X
Received 3 registry entries that are unknown to this client.Fabric: the server has content mods the player doesn't.Fabric mismatch
You are trying to connect to a server that is running NeoForge, but you are not.They launched plain Minecraft, or the wrong profile.Same pack
Incompatible client! Please use 1.21.1A different Minecraft version. Older versions say Outdated client! or Outdated server!Same pack
You are not white-listed on this server!The whitelist is on and they're not on it.Whitelist
Failed to verify username!The server couldn't confirm their Minecraft account with Mojang.Username
Connection refusedNothing is accepting connections there: the server is off, still starting, or on another port.Refused
Connection timed outTheir connection never reached the server: port forwarding, CGNAT or a firewall.Port forwarding
Timed outThey connected, then one side stopped answering for 30 seconds. Common on big packs.Timed out
Unknown hostThe address is misspelled or doesn't exist.Address

Common in these packs: GregTech: New Horizons, where the pack version has to match exactly between the server and every player, and the biggest packs, like All the Mods 10 (around 500 mods) and FTB StoneBlock 4 (388 on the server). The more mods a pack has, the more one update behind can break, and slower PCs can time out while joining.

"Mismatched mod channel list"

Mods that send data between the server and the players' games register a network channel, and Forge compares the player's channels with the server's when they join. If anything differs, Forge closes the connection with:

Connection closed - mismatched mod channel list

On Forge 1.18.2 and newer, and on NeoForge, the disconnect screen usually adds a table that names the mods. The heading over each part tells you which way round the problem is:

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:

NeoForge 1.20.4 and newer checks each channel by name. On 1.21.1 a failure reads like this, with the mod named in the quotes:

Channel of mod "examplemod" failed to connect: This channel is missing on the client side, but required on the server!

The reason after the colon can also be This channel is missing on the server side, but required on the client! or a version line such as The client wants the payload to be version: 2, but the server wants it to be version: 3! (examplemod and the numbers here are made up.)

A few other messages have the same cause. On Forge: Failed to synchronize registry data from server, closing connection. On NeoForge: Not all expected registries were received from the server! and Cannot connect to server as it has mandatory registry data maps not present on the client.

How to fix it

  1. Missing on the client: the player needs that mod, in the same version as the server. If you added mods to the server yourself, every player needs the same jars, apart from server-only mods.
  2. Missing on the server: the player has a mod the server doesn't. Usually it's one they added for themselves. If it adds blocks, items or mobs, either put it on the server too or take it out of the player's mods folder. Client-only mods such as shaders and most minimaps are normally fine to keep. Anything that is a problem shows up by name in this list. Not sure which kind a mod is? Look it up in the client-side or server-side checker.
  3. Versions don't match: someone updated a mod or the pack and someone else didn't. Get everyone onto the same version.
  4. Several mods at once? The player is on a different pack version from the server. That's the next section.

"Mod rejections" (Forge 1.12.2 and 1.7.10)

Older Forge does the same check with different wording. Recent Forge 1.12.2 builds list one line per mod:

Server Mod rejections:
Example Mod: Requires 1.4.2 but client has 1.4.0.
Other Mod: Requires 2.0 but mod is not found on client.

Forge 1.7.10 (which GregTech: New Horizons runs on) puts it all on one line, like Mod rejections [FMLMod:examplemod{1.4.0}]. The fix is the same as above: the mods it names must be installed on both sides, in the same version.

"Incompatible FML modded server" in the server list

Forge and NeoForge players see this before they even click Join. Their game pings the server, compares mod lists, and shows a red X with a tooltip. A matching server shows Compatible FML modded server and how many mods it has. The second line of the red tooltip says what's wrong:

On big packs the tooltip may also say Data may be inaccurate due to protocol size limits. The server's mod list was cut short to fit in the ping reply, so the check can be wrong. Trust the message you get when you actually join.

Fabric: "registry entries that are unknown to this client"

Fabric doesn't compare mod lists when a player joins. Fabric API catches a mismatch when the server sends blocks or items the player's game doesn't know:

Received 3 registry entries that are 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 names listed under it are mod IDs. Install those mods on the player's side, in the server's version. On newer Minecraft versions a player can also be dropped with just Network Protocol Error, which means one side couldn't read a packet from the other. Different versions of a mod on each side can cause that, so compare versions first. The player's own logs/latest.log has the details. Because Fabric doesn't check versions, a player on an older version of a mod can sometimes get in and then hit errors or glitches. Keep versions identical anyway.

Same pack, same version, same loader

A modded server only works when every player runs the same three things as the server: the same Minecraft version, the same mod loader (Forge, NeoForge or Fabric), and the same version of the pack.

The fix: compare the pack version on the server (the server pack's file name, or the version you installed) with the version installed in each player's launcher, and change whichever side is wrong. After you update the server's pack, every player has to update too: see updating a modpack server. A pack downloaded from CurseForge and the same pack from Modrinth can differ, so get everyone to install it from the same place.

Don't build the server by copying a player's mods folder. It brings client-only mods along, and those crash a server when it starts. If the server crashed, your friends just see Connection refused. See client-only mod on the server, and wrong mod loader if the server won't start because a mod was built for another loader or version. If the pack has no server files at all, here's how to build them.

"You are not white-listed on this server!"

The whitelist is on (white-list=true in server.properties) and this player isn't on it. Check this first on new servers: since Minecraft 26.3, a freshly created server.properties has the whitelist turned on by default, so everyone is turned away until you add them.

In the server console (no slash needed there), add each player by their exact Java Edition name:

whitelist add PlayerName
whitelist list

Or run whitelist off if you don't want one. In game, ops type the same commands with a slash.

"Failed to verify username!"

With online-mode=true (the default), the server asks Mojang's servers to confirm every player's account when they join. This message means that check failed. Usually the player's launcher login has gone stale: have them close the game and the launcher, open the launcher again (signing back in if it asks), and retry. Variants of the same problem include Failed to log in: Invalid session (Try restarting your game and the launcher). If everyone gets it at once, Mojang's login service may be down. Wait and try again.

Don't switch online-mode to false to get around it. That turns off account checks, so anyone can join under any name, including an op's.

"Connection refused"

The player sees Failed to connect to the server and a line like this one (the address is an example):

io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: example.com/203.0.113.10:25565

Refused means their connection reached a machine, but nothing there was accepting players on that port. Check these in order:

  1. Is the server running? Look at the console. If it crashed on startup, paste the log into the crash log analyzer.
  2. Has it finished starting? A pack with 300 or more mods can take several minutes to start. The port isn't open until the console prints Starting Minecraft server on *:25565, and the world still has to load after that. Wait for Done (...)! For help, type "help" before anyone joins.
  3. Right port? The address needs :port on the end if server-port in server.properties isn't the default 25565. Example: 203.0.113.10:25570.
  4. Self-hosting? A firewall on the server PC can also refuse connections. See the next section.

"Connection timed out": port forwarding, CGNAT and firewalls

io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection timed out: no further information: example.com/203.0.113.10:25565

Timed out (while connecting) means nothing answered at all. When the server runs on your own PC, work through this list:

  1. Test on the PC itself. Join with the address localhost. If that works, the server is fine and the problem is the network.
  2. Test from your own network. Someone on the same Wi-Fi joins with the PC's local address (run ipconfig on Windows and use the IPv4 address, something like 192.168.1.20). If this fails too, it's the PC's firewall: allow Java through Windows Defender Firewall. Windows usually asks the first time the server starts, and it's easy to click the wrong option.
  3. Forward the port. In your router's settings, forward TCP port 25565 to the PC's local address. Friends outside your home then join with your public IP, the one a "what is my IP" site shows. Give the PC a fixed local address so the forward doesn't break when the router hands out a new one.
  4. Check for CGNAT. Look at the internet (WAN) address on your router's status page. If it doesn't match your public IP, or it starts with anything from 100.64 to 100.127 (the shared range carriers use), your ISP is putting several customers behind one public address. That's carrier-grade NAT, and port forwarding can't work behind it. Your options: ask the ISP for a public IPv4 address (some charge for it), have everyone join a private network app such as Tailscale or ZeroTier, or run the server somewhere else.
  5. "Unknown host"? The address is misspelled, or a domain name you set up doesn't point anywhere yet.

On a hosted server you can skip all of this. It has a public address with the port already open. On DSN that's your yourname.dsnservers.com address. Our server location page shows what ping to expect.

"Timed out" while joining a big pack

A bare Timed out means the connection was made, then one side went 30 seconds without hearing from the other. Two common reasons:

How to check it's fixed

  1. Have the player join again. The server console should print PlayerName joined the game.
  2. If one friend gets in and another doesn't, compare the two. Same pack version? Same launcher profile? Any extra mods?
  3. For reachability problems, test from outside your network (a laptop on a phone's mobile hotspot works), not from the PC running the server.
Server crashing instead?If the server stops before anyone can join, paste the log into the free crash log analyzer. It finds the common modded crashes and explains the fix in plain English.

Related guides

Skip the port forwarding.

A hosted server has its own address with the port already open, so none of the router steps above apply. Every DSN server gets one like yourname.dsnservers.com. We're moving DSN Servers to new hardware, and ordering is closed until then. Join the launch list and we'll email you when servers open.

Join the launch list