Skip to content

๐Ÿ”Œ 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 + 0 is 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 / Each as 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:

  1. Decider Combinator (Memory):
    • Input: Red wire from tank/power switch
    • Condition: Signal > 0
    • Output: Input count (red wire from output back to input)
  2. 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
  3. 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 Signal every tick
  • The Decider passes Signal through while it's below 100
  • When Signal reaches 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:

  1. Place a pulse-mode inserter โ€” wire it to read hand contents, pulse mode
  2. Connect green wire from inserter to an Arithmetic Combinator: Each + 0 โ†’ Each
  3. Feed the output back to the input (red wire) โ€” this accumulates
  4. Wire a Constant Combinator: R = 1 to a Decider that outputs Everything * 0 when R > 0 to reset

Belt throughput (items/minute):

  1. Counter circuit as above
  2. Connect a clock set to 3600 ticks (60 seconds at 60 UPS)
  3. 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)
  1. Place a Splitter with output priority set to the desired belt
  2. Connect a red wire from the priority-output belt (read belt contents) to the splitter's input
  3. Set the splitter to "Enable/disable" โ€” condition: Iron Plate < 8 (or your threshold)
  4. 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.

  1. Place 4 splitters in a tree (2 โ†’ 1, 2 โ†’ 1, then combine)
  2. Wire each belt to an Arithmetic Combinator: Each + 0 โ†’ Each
  3. Sum all 4 signals, divide by 4 โ†’ that's the average
  4. 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:

  1. Connect all provider chests to the train stop via red wire
  2. Set train stop condition: Iron Plate > 2000 (enough to fill one train)
  3. Trains with Wait until: circuit condition > 0 will 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.

  1. Each station reads the total items in its chests
  2. Each station outputs L = 1 (limit) when it has enough items
  3. Wire all stations together on the same circuit network
  4. Each station checks its own chest level against a threshold โ€” Iron Plate > 2000 โ†’ L = 1
  5. 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.

  1. Wire a Decider Combinator: Iron Plate > 2000 โ†’ L = 1
  2. Wire output back through an Arithmetic Combinator: L - 1 โ†’ L
  3. 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)
  1. Wire a red circuit from the Light Oil storage tank(s) to the Decider Combinator input
  2. Wire a red circuit from the Petroleum Gas tank(s) to the same Decider Combinator input
  3. Set Decider: Light Oil > Petroleum Gas โ†’ Output: Light Oil (Input Count)
  4. Wire the Decider output (green wire) to the pump feeding the Heavy โ†’ Light cracking chemical plants
  5. 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:

  1. Wire all tanks to a shared red circuit network
  2. Decider #1: Light > Petro โ†’ L = 1 โ†’ controls Light โ†’ Petro pump
  3. Decider #2: Heavy > Light โ†’ H = 1 AND L = 1 โ†’ controls Heavy โ†’ Light pump
  4. Decider #3: Heavy > 0 AND Petro < 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  โ”‚
                    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  1. Connect an accumulator to an Arithmetic Combinator: A * 100 รท J โ†’ %
  2. Feed to a Decider Combinator: % < 20 โ†’ Enable Power Switch
  3. Wire the Decider output to a Power Switch (connect to switch via green wire)
  4. 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.

  1. Read an Accumulator charge (signal A)
  2. Wire to Decider: A > 95 โ†’ S = 1 (daytime, accumulators nearly full)
  3. Wire to Power Switch: enable when S = 1
  4. 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.

  1. Place a power pole on the main grid
  2. Wire it to an Arithmetic Combinator: Each * 1 โ†’ P (reads satisfaction/availability)
  3. Decider: P < 500000 โ†’ E = 1 (below 5 MW โ†’ activate)
  4. 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 = 1 to 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:

  1. Decider #1: A > 100 โ†’ S = 1
  2. Decider #2: A < 50 โ†’ R = 1
  3. Memory Decider #3: S > 0 โ†’ S = 1 with feedback, override by R > 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+V in 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


๐Ÿ›’ Support the developers โ€” Buy Factorio on Steam