🔌 Circuit Networks & Automation Guide
"The factory must grow — intelligently."
Factorio's Circuit Network is the nervous system of your factory. It lets you wire up combinators, belts, inserters, train signals, and power switches to build everything from a simple belt balancer to a fully automated megabase.
This guide covers the fundamentals and advanced builds with working examples you can blueprint right away.
📦 Combinator Types
There are three combinator types — every circuit build starts with these.
Constant Combinator
The Constant Combinator provides a fixed signal on the circuit network. Use it as a reference value or setpoint.
- Outputs the signals you configure in its GUI
- Available from red/green circuit research (red science)
- Connect its output to any circuit wire
Example — Setpoint for cracking control:
Set a Constant Combinator to output Petroleum Gas = 100 — this becomes the threshold your cracking plant compares against.
Arithmetic Combinator
The Arithmetic Combinator performs math on one or two input signals and outputs a result.
| Operation | Input 1 | Input 2 | Output |
|---|---|---|---|
A + B | Signal | Number/Signal | Result |
A - B | Signal | Number/Signal | Result |
A * B | Signal | Number/Signal | Result |
A / B | Signal | Number/Signal | Result (floor) |
A % B | Signal | Number/Signal | Result (modulo) |
A ^ B | Signal | Number/Signal | Result (exponent) |
A << B | Signal | Number/Signal | Bitshift left |
A >> B | Signal | Number/Signal | Bitshift right |
AND/OR/XOR | Signal | Signal | Bitwise logic |
NOT | Signal | — | Bitwise NOT |
Each → + 0 | Any signal | 0 | Signal pass-through (useful for wire merging!) |
💡 Pro tip:
Each + 0is the most common Arithmetic Combinator trick — it copies every input signal to the output on a different color wire, acting as a wire bridge.
Decider Combinator
The Decider Combinator compares signals and outputs a specified signal (or the input signal) when the condition is met.
| Condition | Example | Behavior |
|---|---|---|
A > B | Iron Plate > 100 | Outputs when Iron Plate exceeds 100 |
A = B | Petroleum = 0 | Outputs when Petroleum is exactly 0 |
A < B | Iron Ore < 50 | Outputs when Iron Ore is below 50 |
A ≠ B | Signal ≠ 0 | Outputs when signal is non-zero |
A ≥ B / A ≤ B | — | Greater/less than or equal |
A > 0 / A = 0 | — | Common zero-check patterns |
Output modes:
- Output:
1— outputs a single green signal (value 1) when condition is true - Output:
Input count— passes the input signal through when condition is true
💡 Pro tip: Use
Everything/Anything/Eachas the input signal for multi-signal logic: -Everything > 0= all signals must be positive -Anything < 0= at least one signal is negative -Each * 2= double every signal individually
🔧 Basic Circuit Builds
SR Latch (Set-Reset Latch)
The SR Latch is the fundamental memory cell of the circuit network. It maintains its output state until a reset condition overrides it.
Use case: Keep a power switch closed until steam storage drops, then open it until steam refills (hysteresis).
┌──────────────┐
Set ───▶│ │
│ Decider A │─── Output ──▶
Reset ─▶│ (Memory) │
└──────────────┘
▲
│ (feedback loop)
└── output connected to input
Blueprint recipe:
- Decider Combinator (Memory):
- Input: Red wire from tank/power switch
- Condition:
Signal > 0 - Output:
Input count(red wire from output back to input)
- Second Decider (Set/Reset):
- Outputs a signal (e.g.,
S = 1) when the "set" condition is met - Outputs a signal (e.g.,
R = 1) when the "reset" condition is met
- Outputs a signal (e.g.,
- Wire the set/reset signals into the memory combinator's input.
Real-world example — Steam battery SR Latch:
| Condition | Signal | Action |
|---|---|---|
| Steam tank < 500 | Set = 1 | Enable accumulators |
| Steam tank > 2000 | Reset = 1 | Disable accumulators |
The gap between 500 and 2000 provides hysteresis — the system won't rapidly toggle.
Clock (Timer)
A clock circuit produces a periodic pulse. Essential for timed insertions, belt pacing, and measurement intervals.
Pulse generator (rapid clock):
Arithmetic: Signal + 1 → Signal (output feedback to input)
Decider: Signal < 100 → Signal (output to circuit network)
- The Arithmetic combinator increments
Signalevery tick - The Decider passes
Signalthrough while it's below 100 - When
Signalreaches 100, the Decider stops — the Arithmetic resets back to 0 - Cycle repeats → you get a 100-tick period square wave
Adjustable clock with Constant Combinator:
Constant: T = 60 (period)
Arithmetic: T * 1 → T (pass-through, outputs T)
Decider (Counter): C = C + (1 every tick)
Decider (Output): C < T → C (pass C through while below T)
When C >= T, the Counter resets to 0 and the clock fires.
Counter
Count items as they pass on a belt or enter a chest. Combine with a clock for throughput measurement.
Basic item counter:
- Place a pulse-mode inserter — wire it to read hand contents, pulse mode
- Connect green wire from inserter to an Arithmetic Combinator:
Each + 0 → Each - Feed the output back to the input (red wire) — this accumulates
- Wire a Constant Combinator:
R = 1to a Decider that outputsEverything * 0whenR > 0to reset
Belt throughput (items/minute):
- Counter circuit as above
- Connect a clock set to 3600 ticks (60 seconds at 60 UPS)
- Decider checks: if clock fires, output the counter value → that's items/minute
🎛️ Belt Balancing & Priority Splitters
Circuit-controlled belt balancing lets you build smart splitters and priority mergers without relying on lane-balancer blueprints.
Priority Input Splitter
Ensure one belt gets filled before overflow goes to a secondary belt.
┌────────┐
Input ─▶ Splitter├─── Priority output
│ ├─── Overflow (circuit-controlled)
└────────┘
▲
│
Read belt (red wire)
- Place a Splitter with output priority set to the desired belt
- Connect a red wire from the priority-output belt (read belt contents) to the splitter's input
- Set the splitter to "Enable/disable" — condition:
Iron Plate < 8(or your threshold) - When the priority belt backs up, the splitter enables overflow on the second output
Balanced Load Balancer
Use circuits to balance multiple belts without building a huge belt balancer.
- Place 4 splitters in a tree (2 → 1, 2 → 1, then combine)
- Wire each belt to an Arithmetic Combinator:
Each + 0 → Each - Sum all 4 signals, divide by 4 → that's the average
- Compare each individual belt to the average → enable/disable inserters or splitters to match
🚂 Train Station Control
Circuit-controlled train stations prevent multiple trains from queuing at the same station and let you call trains only when resources are available.
Single-Train Enable/Disable
Wire the station to a chest or storage tank. The station enables only when there's enough to load (or enough room to unload).
Loading station example:
- Connect all provider chests to the train stop via red wire
- Set train stop condition:
Iron Plate > 2000(enough to fill one train) - Trains with
Wait until: circuit condition > 0will only path to this stop when it's active
Multi-Station Priority (Stacker Bypass)
Prevent trains from going to a station that's nearly empty when another station is full.
- Each station reads the total items in its chests
- Each station outputs
L = 1(limit) when it has enough items - Wire all stations together on the same circuit network
- Each station checks its own chest level against a threshold —
Iron Plate > 2000 → L = 1 - Train limit = 1 on each station — trains only go to stations broadcasting
L = 1
💡 Pro tip: Use Train Limit (introduced in Factorio 1.1) instead of enable/disable for smoother train pathing. Set train limit to 1 on stations that have enough resources, 0 on empty stations.
Station Timer (Pulse Generator)
Prevent trains from stacking when a station is just above threshold but quickly draining.
- Wire a Decider Combinator:
Iron Plate > 2000 → L = 1 - Wire output back through an Arithmetic Combinator:
L - 1 → L - This creates a timer — the station stays open for ~60 ticks after chests drop below threshold
🛢️ Oil Cracking Control
Oil cracking — converting Heavy → Light → Petroleum — is the most common circuit-controlled process in Factorio. You want to crack only when there's excess of the heavier oil.
Basic Heavy → Light Cracking
┌──────────────┐
Light Oil ─────────▶ │
(red wire) │ Decider │── Green wire ──▶ Heavy Cracking Pump
Petroleum ────────▶│ Combinator │
(red wire) │ │
└──────────────┘
Condition: Light Oil > Petroleum
Output: Light Oil (Input Count)
- Wire a red circuit from the Light Oil storage tank(s) to the Decider Combinator input
- Wire a red circuit from the Petroleum Gas tank(s) to the same Decider Combinator input
- Set Decider:
Light Oil > Petroleum Gas → Output: Light Oil (Input Count) - Wire the Decider output (green wire) to the pump feeding the Heavy → Light cracking chemical plants
- The pump only turns on when there's more Light Oil than Petroleum — i.e., you're backed up on Light
Full Cracking Priority System
Control all three cracking stages with priority: Light cracking runs first, Heavy cracking only when Light is also surplus.
Setup:
| Cracking Stage | Condition | Pump Signal |
|---|---|---|
| Light → Petro | Light Oil > Petroleum | Enable pump |
| Heavy → Light | Heavy Oil > Light Oil AND Light Oil > Petroleum | Enable pump |
| Heavy → Petro (if available) | Heavy Oil > 0 AND Petroleum < Light Oil | Enable pump |
Why this works:
- If Petroleum is low, Light cracking runs first (Light → Petro)
- If Light is also building up, Heavy cracking opens (Heavy → Light)
- If Petroleum is satisfied AND Light is still backed up, Heavy → Petro kicks in
Blueprint wiring:
- Wire all tanks to a shared red circuit network
- Decider #1:
Light > Petro → L = 1→ controls Light → Petro pump - Decider #2:
Heavy > Light → H = 1ANDL = 1→ controls Heavy → Light pump - Decider #3:
Heavy > 0ANDPetro < Light → P = 1→ controls any Heavy → Petro pump
⚡ Power Switch Control
Use circuit-controlled power switches to manage steam batteries, solar-accumulator priority, and emergency backup power.
Steam Battery (Accumulator Priority)
Prevent steam engines from running when accumulators have charge.
┌──────────────┐
Accumulator ───────▶ │
Charge (A) │ Arithmetic │── A * 100 ──▶ Decider ──▶ Power Switch
│ │
└──────────────┘
┌──────────────┐
Accumulator ───────▶ │
Max (J) │ Combinator │
└──────────────┘
- Connect an accumulator to an Arithmetic Combinator:
A * 100 ÷ J → % - Feed to a Decider Combinator:
% < 20 → Enable Power Switch - Wire the Decider output to a Power Switch (connect to switch via green wire)
- Set the Power Switch to:
Enable: Signal > 0
Now steam only kicks in when accumulators drop below 20%.
Solar-Only Power Switch
Cut off the main grid from accumulator-fed substations during the day.
- Read an Accumulator charge (signal
A) - Wire to Decider:
A > 95 → S = 1(daytime, accumulators nearly full) - Wire to Power Switch: enable when
S = 1 - Second Power Switch (night):
A < 5 → S = 1(switch to accumulators)
Emergency Backup
Trigger backup steam when the main grid power falls below a threshold.
- Place a power pole on the main grid
- Wire it to an Arithmetic Combinator:
Each * 1 → P(reads satisfaction/availability) - Decider:
P < 500000 → E = 1(below 5 MW → activate) - Wire to a Power Switch controlling backup steam engines
🧩 Advanced Patterns
Memory Cell
Store a value indefinitely:
- Set signal
R = 1to clear the memory - New values merge with the stored value
Pulse Extender
Convert a 1-tick pulse into a sustained signal:
The signal persists for N ticks where N is the initial value, then decays.
S-R Latch with Hysteresis (Compact)
For when you need threshold-based control with deadband:
- Decider #1:
A > 100 → S = 1 - Decider #2:
A < 50 → R = 1 - Memory Decider #3:
S > 0 → S = 1with feedback, override byR > 0
🏗️ Blueprint Strings
You can share and import any of the builds above as blueprint strings. Visit factorioprints.com or paste strings directly into your game.
⚠️ Blueprint strings are long — use the in-game import (
Ctrl+V/Cmd+Vin the blueprint library) or a pastebin.
🎯 Quick Reference
| Component | Function | Key Setting |
|---|---|---|
| Constant Combinator | Reference value | Set desired signal/number in GUI |
| Arithmetic Combinator | Math / conversion | Each + 0 for wire bridging |
| Decider Combinator | Compare & output | Everything / Anything for multi-signal |
| Power Switch | Grid segment control | Enable condition via circuit |
| Train Stop | Station enable/disable | Circuit condition or train limit |
| Pump | Fluid flow control | Enable condition via circuit |
| Inserter | Item flow control | Circuit condition + read/pulse mode |
📚 Further Reading
- Official Factorio Wiki — Circuit Network
- Official Factorio Wiki — Combinator Tutorial
- Reddit r/factorio — Circuit Network Showcase
- Factorio Prints — Community Blueprints
🛒 Support the developers — Buy Factorio on Steam