Valheim crossplay server: why Join IP fails, and how to connect

Join IP times out and the server is missing from the Steam browser — with crossplay on, that is how Valheim works. What is actually happening, how players join, and when to turn crossplay off.

You started a Valheim dedicated server with crossplay on, gave your friends the address and port, and Join IP just times out. The server isn't in the Steam server browser either, and you can't add it to favorites. Nothing is broken: with crossplay on, Valheim doesn't take players on that port at all.

  1. Why Join IP fails with crossplay on
  2. How to join a crossplay server
  3. When to turn crossplay off (and the second port)
  4. Can’t connect after a Valheim update
  5. Reading the server log
  6. Valheim 1.0 world files

Why Join IP fails with crossplay on

With the -crossplay flag, the server routes players through Valheim's crossplay relay (PlayFab) instead of listening for them directly. We checked this inside our own server's container: started with -port 2477, the process had nothing listening on 2477. It held the next port up plus two outbound connections to the relay, and every player arrived through the relay.

Two things follow from that:

  • Join IP can't work — there's nothing on the game port to answer it. Port forwarding makes no difference in this mode.
  • The server never appears in the Steam server browser, and can't be added to Steam favorites. Crossplay also turns off the Steam query socket; our server didn't answer Steam queries even from the machine it runs on, so this isn't a firewall problem.

How to join a crossplay server

  1. Start the server and wait until the world has loaded. The server log prints a join code.
  2. In Valheim, pick your character, open Join Game, choose Join Code and enter it.
  3. Enter the server password when asked.
Note

The join code can change when the server restarts. After a restart, read the new one from the log before telling your friends it's back up.

When to turn crossplay off (and the second port)

Keep crossplay on if anyone plays on Xbox or Game Pass — it's the only way they can join. Turn it off when:

  • everyone plays on Steam and you'd rather connect by address, or want the server listed in the browser;
  • you want mods: modded servers generally run with crossplay off, because console players can't run mods.

With crossplay off, players use Join IP with address:port. Valheim then uses two consecutive UDP ports: the game port and the next one up for Steam queries. If you host it yourself, open or forward both. A server that answers on the game port but stays missing from the browser usually has only the first port open.

Watch out

Valheim server passwords need at least 5 characters, and the password can't appear inside the server name.

Can't connect after a Valheim update

Valheim locks client and server versions together. When the game updates, players on the new version can't join until the server updates too. Servers set to update on start — ours are — pick up the new build with a simple restart. The log tells you which side is behind (see below).

Reading the server log

A successful join shows up as three lines, in this order:

Got handshake from client playfab/…
Network version check, their:39, mine:39
Server: New peer connected

If the two numbers on the version-check line differ, it's the version lock above. If you never see the handshake at all, the player isn't reaching the server — check they used the current join code (crossplay on) or the right address and both ports (crossplay off).

Valheim 1.0 world files

Since 1.0, a world is no longer a .db and .fwl pair. Each world is a folderholding _main.0.fwl2 (name, seed and version) and _main.0.db2 (the world itself). Starting 1.0 against an old world creates the new folder next to the old files, so back up before you move anything.

Note

A brand-new, unplayed world only has the .fwl2 file — _main.0.db2 appears once there's something to save. The seed is fixed in the .fwl2, so the world is the same every boot. That isn't a failed save.