Factorio Updated April 27, 2026

Performance Tuning, UPS, and Player Capacity

How to monitor Factorio server performance via UPS, understand capacity limits, and tune settings to keep your server running smoothly.

FactorioperformanceUPSlagoptimizationplayer capacity

Overview

Factorio performance is measured in UPS (Updates Per Second). The target is 60 UPS — at 60 UPS, the game runs in real time. Below 60, the game slows down proportionally. Understanding what drives UPS degradation helps you configure servers that stay healthy as bases grow.

Monitoring UPS

Check current UPS from the server console or via RCON:

/perf

This prints current UPS, game time, and timing breakdowns by subsystem (entity updates, transport belts, circuit network, etc.).

A healthy server reports 60.0 UPS. Values below 50 indicate the server is under load. Values below 30 mean gameplay is noticeably slowed — action is required.

The Single-Threaded Constraint

Factorio is single-threaded per save. Adding more CPU cores does not improve performance for a single server instance. What matters is:

  • Single-core clock speed — Higher GHz directly improves UPS.
  • CPU generation — Newer architectures (better IPC) outperform older high-clock CPUs.
  • RAM — Large maps need significant RAM for the entity list; typical servers need 1–4 GB.

Player Capacity Guidelines

These are rough guidelines — actual capacity depends on base complexity and mod overhead:

Players Minimum CPU recommendation
1–10 Any modern CPU core
10–50 4+ core CPU, high single-core speed
50+ High-end CPU (Ryzen 9 / Core i9 class)

Player count itself adds roughly 5–10% CPU overhead per player for netcode and sync. The dominant factor at large player counts is base size, not player count directly.

UPS Killers

In order of typical impact:

  1. Large bases with millions of entities — Every belt segment, inserter, and assembler is simulated every tick.
  2. Bots (logistic and construction robots) — Bot pathfinding is expensive. Excessive bot counts tank UPS.
  3. Circuit networks — Complex combinators with frequent updates.
  4. Too many mods — Each mod adds simulation overhead. Performance-heavy mods (e.g., adds new entity types) compound the issue.
  5. Enemy bases — Large numbers of biter settlements on the map add AI pathfinding cost.

Tuning Options

Reduce entity count: Encourage players to use fewer but denser factory layouts. Merging belt lines reduces belt segment count significantly.

Limit player count: Set max_players in server-settings.json to a value your CPU can handle:

{
  "max_players": 20
}

Adjust latency setting: The --latency-ms flag controls network tick batching (default 100ms). Increasing it reduces network overhead at the cost of perceived input lag:

./factorio/bin/x64/factorio --start-server saves/save.zip --latency-ms 150

Useful range is 50–500. Do not set below 50 on high-latency connections — it increases resyncs and disconnections.

Peaceful mode: Disabling enemies via peaceful_mode: true in map gen settings (new maps only) removes all enemy AI cost.

Reduce pollution spread: In map-settings.json, disable or reduce pollution to cut biter aggression and associated pathfinding overhead.

When UPS Drops Below 50

Immediate options:

  • Run /perf to identify the bottleneck subsystem.
  • Reduce max_players to lower netcode overhead.
  • Ask players to disable heavy mods temporarily.
  • Increase autosave_interval to reduce autosave frequency (see Tuning Autosave Settings and Recovering from Backups).
  • Upgrade to a node with a faster single-core CPU.

Long-term options:

  • Start a new map with a more performant design in mind.
  • Remove performance-heavy mods before the base grows further.