๐ 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:
Decider Combinator: Everything > 0 โ Everything (Input Count)
Wire output (red) back to input (red)
- 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:
Decider: Signal > 0 โ Signal (Input Count)
Wire output back through Arithmetic: Signal - 1 โ 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