Factorio: Can't connect to server
Fix a Factorio headless connection by matching the game and mods, using Connect to address, checking the UDP listen port, and entering game_password.
If Factorio cannot connect, work through these checks in order. Do not delete the save first. The usual failure after a Factorio patch is a client that updated before the headless server.
Stop as soon as one fix works. If you are helping somebody else, test with one player before asking the whole group to retry.
1. Match the Factorio version
The client and the headless server must run the same Factorio version. 2.0 and 1.1 are different games for this purpose.
Update the player's game
Close Factorio, let Steam finish the update, and stay off a beta branch the server is not using.
Update the dedicated server
Stop the server. On berrybyte, Auto Update pulls the current headless build on the next start. Restart once after the patch is live.
Compare the versions in the log
The version printed at headless startup must match the version on the player's main menu.
If you do not want to run updates after every hotfix, rent a Factorio server that handles them.
2. Align mods with the save
Factorio can sync Mod Portal mods to a connecting client. It cannot invent a matching save. A factory that still expects a mod you removed will refuse the join.
Use Sync mods with server
Choose Factorio's synchronization option after a mismatch. It can download Mod Portal releases and restart with the server's enabled set.
If the join still lists missing mods
Install the same mods the save needs, or load a save that
matches the current mod-list.json.
Match official expansion mods
Space Age is an official expansion delivered as mods, including required dependencies. Enable the same official expansion mod set on the client and server.
Inspect a custom modded save
Open the save once in single-player to see the required list, then put those mods on the server.
The Factorio multiplayer reference documents exact version and mod matching. The Space Age reference lists the expansion's official mods.
3. Use Connect to address
The reliable test is Multiplayer → Connect to address.
Copy Server address
On berrybyte, copy Server address from Overview. Do not
assume port 34197.
Paste the full host:port
Launch Factorio, open Multiplayer, choose Connect to address, and paste the address into that field.
Enter username and password
Factorio asks for a username. Reuse the exact name from an existing factory so the save returns you to that character. Enter the server password when one is set.
4. Check the UDP game port
Factorio speaks UDP. The documented default is 34197. TCP on that number does not create a working game path.
Use the port the server bound
On berrybyte, Overview is the source of truth. On a
self-hosted box, check --port, the optional port in
--bind, or the value in config.ini.
Forward UDP (self-host)
Every firewall and router between the machine and the internet must allow UDP on that port.
Preserve the source port through NAT
Some routers randomize the outgoing UDP source port. Disable that behavior for the Factorio mapping when direct connections still fail.
berrybyte opens the allocated UDP port for you. Self-hosters who are fighting NAT can rent a Factorio server that already has it reachable.
The official
command-line reference
documents --port and --bind. Factorio's multiplayer guide also
covers UDP 34197 and NAT source-port preservation.
5. Use the game password
A passworded factory rejects a blank or mistyped password. The username is separate and is how the save finds your character.
Read the configured password
On berrybyte, open Settings → Game Settings. On a
self-hosted box, game_password in
server-settings.json controls player access.
Send the exact string, or clear it
Check capitalisation and characters that chat apps rewrite. Clear it for a public test, then restart.
The Factorio.com service username and token serve public listing
and authenticated Mod Portal downloads. Players should never
receive those credentials. Share only game_password.
6. Confirm the save actually loaded
A headless server that failed to open the save is not joinable, even when the process looks alive.
Read Console
Wait until the log says the save loaded. A megabase can take a minute.
Check the selected save
If you uploaded a new save, the path passed to
--start-server must select that file. Hosts may expose the
same choice through their panel.
Test with one client
Do not ask the whole factory crew to retry while the save is still deserialising.
If none of the six fixes worked
Confirm the headless log reached a loaded save. Then check the leftover causes:
- Another connected client is using the same Factorio identity. Close that client, then reconnect with the returning player's usual username.
require_user_verificationrejecting an offline Steam client.- Check steamstat.us if every public Factorio server disappeared.
- Check berrybytestatus.com.
Frequently asked questions
Why can't I connect to a Factorio server?
Match the exact Factorio version and mod set first. Use Connect to address with the full host:port, then verify that the server's UDP listen port is reachable. Enter game_password only when the host configured one.
Why does Factorio say the mods do not match?
The headless server and client must use the same Factorio release and gameplay-changing mods. Use Factorio's Sync mods with server option to download or enable the matching Mod Portal releases. Space Age also appears in the mod set and must match.
What port does a Factorio dedicated server use?
UDP 34197 is the default game port. berrybyte shows its allocated port on Overview. Self-hosters set the listen port with --port, --bind, or config.ini and must forward that same UDP port.
Why is my Factorio server missing from the public list?
Public visibility and Factorio.com service credentials are configured separately from the game listen port. A hidden factory remains joinable through Connect to address when its UDP path is reachable.
Do I need a username to join Factorio?
Yes. Returning players should reuse the same Factorio username so the save loads the same character. A conflict only exists while another client is connected with that identity.