21 April 2026

Factorio Server Configuration Guide

A detailed walkthrough of every Factorio server config file – server-settings.json, map-gen-settings.json, and map-settings.json – plus RCON setup, admin commands, and mod configuration.

¿Necesitas un servidor Factorio?Ver planes

Factorio keeps its server configuration split across three JSON files in the data/ directory, each handling a different layer of the game. Once you understand what goes where, it's actually a clean system. Let's go through all of it.

You can edit these files through the Configuration Files section in your LOW.MS Control Panel at control.low.ms. Changes to server-settings.json and map-settings.json take effect after a server restart. Changes to map-gen-settings.json only matter when creating a new save.

server-settings.json

This is your main file. It controls server identity, access, and operational behaviour. I'll go through the fields that actually matter, grouped by what they do.

Server Identity

name – your server's display name in the browser. Keep it descriptive enough that your players can find it. Something like "Connor's Factory" works. The game doesn't enforce uniqueness.

description – shown in the server browser details. Optional, but helpful on public servers.

tags – array of strings that help with server browser filtering. Things like ["vanilla", "peaceful", "new players welcome"]. Mostly useful for public servers.

Access Control

max_players – 0 means unlimited. Set this to your plan's player slot count if you want to enforce it, though honestly Factorio's performance will be your real limit before the slot count matters.

game_password – empty string for no password. I'd always set one for private servers – even with visibility off, anyone who has your IP can connect without it.

require_user_verification – leave this true. It validates that connecting players actually own Factorio through their factorio.com account. Turning it off is basically asking for trouble.

visibility.public – whether your server appears in the in-game server browser. Set to true if you want strangers to find you.

visibility.lan – shows the server on local network discovery. Not relevant for a hosted server, but doesn't hurt to leave it.

allow_commands – this one's worth thinking about. Three options: "admins-only" (the sensible default), true (everyone can run console commands, including Lua – dangerous), or false (nobody can, not even admins). Lua console access means full control of the game state, so "admins-only" is almost always the right call.

Autosave and Persistence

autosave_interval – minutes between autosaves. Default is 10, which is a good balance. Lower means less potential data loss but more frequent save hitches, especially on large maps.

autosave_slots – number of rotating autosave files kept. Default is 5. I bump this to at least 10 on servers where people are doing experimental stuff. If someone accidentally nukes the power grid and you need to roll back, you'll want options.

non_blocking_saving – an experimental feature that forks the server process to save in the background. Factorio only supports this on Linux and macOS, not Windows, and our servers are Windows-based, so the setting is a no-op on LOW.MS. Noted here so you don't waste time tracking down why it didn't help.

Player Management

afk_autokick_interval – minutes before idle players are kicked. 0 disables it. On a public server, set this to something like 10-15. On a private server with friends, 0 is fine – let them go make a sandwich.

auto_pause – pauses the game when the server is empty. Almost always what you want for a private server. Public servers or "always-on" factories might disable this.

max_upload_slots – how many players can download the map simultaneously when joining. Default is 5. On a large save, multiple people joining at once can spike bandwidth. Lower this if you see issues.

Authentication

username and password (or token) – these are your factorio.com account credentials, needed for the server to authenticate with the master server. If visibility is set to public, these are required. Your server should have these pre-configured. Don't share these – they're account credentials, not game passwords.

map-gen-settings.json

This file controls world generation and only applies when creating a new save. Editing it after world creation does nothing to existing terrain. You'd need to generate a new map for changes to take effect.

Resource Settings

Each resource type (coal, iron-ore, copper-ore, stone, uranium-ore, crude-oil) can have its frequency, size, and richness adjusted. Values are multipliers where 1 is default:

"autoplace_controls": {
    "iron-ore": { "frequency": 1, "size": 1.5, "richness": 2 },
    "copper-ore": { "frequency": 1, "size": 1.5, "richness": 2 }
}

Bumping richness is the most common tweak for multiplayer. More players drain resources faster, and nobody wants to build a train network to the next iron patch 20 minutes into a session. I typically go 1.5x to 2x richness for groups of 4+.

Enemy Bases

enemy-base frequency and size control how many biter nests spawn and how large the clusters are. Set size to 0 (or use the "none" preset) for a peaceful world with no biters at all. This is a legitimate choice – not everyone wants combat in their logistics game.

Terrain

terrain_segmentation controls water frequency (higher = more, smaller lakes). water controls water size. The starting_area multiplier determines how much safe space you get around spawn before biters show up – useful to increase for new players.

seed – leave null for random, or set a specific seed to recreate a particular world. Handy if someone found a great seed and you want to use it.

width and height – 0 for infinite in both directions. You can limit map size here, but I've never found a good reason to on a hosted server.

Map Generation Presets

Rather than tweaking individual values, you can use preset to load a predefined configuration. Options include default, rich-resources, marathon, death-world, death-world-marathon, and others. Set individual values to override specific parts of a preset.

map-settings.json

This is the runtime companion to map-gen-settings. These settings affect gameplay on an existing save and can be changed at any time (restart required).

Pollution

"pollution": {
    "enabled": true,
    "diffusion_ratio": 0.02,
    "min_to_diffuse": 15,
    "ageing": 1,
    "expected_max_per_chunk": 150
}

Pollution drives biter evolution and attacks. Disabling it makes the game dramatically easier – biters won't seek out your base unless they physically bump into it. diffusion_ratio controls how fast pollution spreads across chunks. Lower values keep pollution more localised around your factory.

Evolution

Evolution is what makes biters get stronger over time. Three factors drive it:

time_factor – evolution per tick just from time passing. Default is very small but adds up.

destroy_factor – evolution gained when you kill biter spawners. Clearing nests makes the remaining ones tougher. It's a deliberate design tension.

pollution_factor – evolution from pollution reaching biter nests. This is usually the biggest contributor.

Set all factors to 0 if you want biters present but permanently weak. Or disable evolution entirely with "enabled": false.

Enemy Expansion

enemy_expansion controls whether biters create new bases. When enabled, they'll periodically send out groups to establish nests closer to your pollution cloud. max_expansion_distance and min_expansion_cooldown tune how aggressive this is.

Disabling expansion means you only have to deal with the nests that spawned at world creation. Much more manageable for casual groups.

Difficulty

technology_price_multiplier scales research costs – higher values mean each technology takes more science packs. A multiplier of 4 or higher makes for a proper marathon game. Note that the old "expensive mode" (recipe_difficulty / technology_difficulty) was removed in Factorio 2.0, so if you see references to it in older guides, ignore them.

RCON Setup

Factorio supports Source RCON protocol for remote console access. It's not enabled by default – you need to add startup flags:

--rcon-port 27015 --rcon-password YourSecurePassword

These are configured through the Commandline Manager in your control panel. The RCON port on LOW.MS servers is typically your game port with a +5 offset on TCP. So if your game runs on UDP 34197, RCON would be TCP 34202 – but check your Service Settings to confirm.

RCON lets you run any console command remotely, including Lua with /c. Treat the RCON password like a root password – anyone with it has full control over your server.

Admin Commands Reference

These are available in-game for players in the admin list (server-adminlist.json):

Player management: /kick, /ban, /unban, /bans, /mute, /unmute, /promote, /demote, /whitelist add/remove

Server operations: /server-save, /admins, /players, /version, /time, /seed

Game info: /evolution (shows current evolution factor)

Lua console: /c followed by Lua code – powerful but dangerous. Can modify any game state. One typo can wreck a save.

The /toggle-heavy-mode command is useful for debugging – it enables extra validation that can help track down desync issues at the cost of performance.

Mod Configuration

I covered the basics in the getting started guide, but here's the full workflow for managing mods on your server.

Installing Mods

Use the Mod Manager in your control panel to browse and install mods, or upload .zip files directly to the mods/ directory through the File Manager. Don't extract mod zips – Factorio reads them as-is.

mod-list.json

This file lives in the mods/ directory and controls which installed mods are active:

{
    "mods": [
        { "name": "base", "enabled": true },
        { "name": "quality", "enabled": true },
        { "name": "space-age", "enabled": true },
        { "name": "some-qol-mod", "enabled": true }
    ]
}

The base mod is always required. If you have the Space Age DLC, quality, elevated-rails, and space-age mods are the DLC components. The Mod Manager handles this file for you, but it's useful to know the format for troubleshooting.

mod-settings.dat

This is the tricky one. It's a binary file – you can't edit it in a text editor. The workflow is:

  1. Launch Factorio on your local PC with the same mods installed
  2. Configure mod settings through the in-game mod settings menu
  3. Find mod-settings.dat in your local Factorio data directory
  4. Upload it to your server's mods/ directory via File Manager

Every player's mod list and versions must match the server exactly. Factorio checks checksums on connect, so there's no fudging it. If someone gets a "mod mismatch" error, they need to update. The easiest way to keep everyone in sync is to have one person maintain the mod list and share it – or just use the "sync mods with server" button in Factorio's multiplayer join dialog, which downloads matching versions automatically.

A Note on Updates

When Factorio or mods update, the server and all clients need to be on the same version. Use the Steam Update option in your control panel to update the server. Coordinate with your players – nothing's more annoying than half your group updating while the other half can't connect.

Join our Discord to chat with our staff and community!
Join Discord