Circuit networks: combinators, wires and practical setups

The circuit network is Factorio's control layer. Belts and machines move items; combinators decide when they should stop. A small amount of circuitry turns a factory that runs until it jams into one that balances itself, and the setups that deliver most of that value are shorter than their reputation suggests.

Figures computed from game version 2.1.12, updated 2026-08-22.

What a circuit network actually is

A circuit network is a set of entities connected by red or green wire that exchange signals. A signal is a pair: an identifier (an item, a fluid, a letter, a digit, or one of the built-in virtual signals such as "everything", "anything", or "each") and an integer value. A chest set to send its contents emits one signal per item type it holds, with the in-game count as the value. A combinator reads the signals on its input wires and emits new signals on its output wire.

Red and green wires are independent networks. Two devices on the same colour of wire share signals; two devices on different colours do not. When both colours connect to the same input of a combinator, their signals add: if the red wire carries 50 iron plates and the green wire carries 30 iron plates into the same input, the combinator sees 80. When both colours connect to an output, each colour carries the output independently, so a single combinator can broadcast onto two networks at once.

Signals propagate instantly along a connected wire of a single colour. There is no latency across a network, no distance penalty, and no bandwidth limit. A wire can carry every signal at once, and every device on that wire sees the summed value of every signal. Combinators update once per tick, so a chain of combinators introduces one tick of delay per combinator in the chain, regardless of how many signals it processes.

The four combinators and what each does

Four combinator entities exist in the game: the arithmetic combinator, the decider combinator, the constant combinator, and the selector combinator added in the 2.0 expansion. The extracted prototype data contains their item definitions and crafting recipes but does not contain their runtime entity fields such as energy usage or update interval; those values are not in data/2.1/machines.json. The recipes and stack sizes are, and they are shown below.

Combinator Stack size Crafting ingredients
Arithmetic Combinator 50 5Copper Cable, 5Electronic Circuit
Decider Combinator 50 5Copper Cable, 5Electronic Circuit
Constant Combinator 50 5Copper Cable, 2Electronic Circuit
Selector Combinator 50 2Advanced Circuit, 5Decider Combinator

The arithmetic and decider combinators share a recipe of five copper cables and five electronic circuits. The constant combinator is cheaper, using two electronic circuits instead of five. The selector combinator requires two advanced circuits and five decider combinators, reflecting its position as a later-game device. All four combinator items stack to 50 in inventory, so a full stack builds a substantial control network without repeated supply runs.

Arithmetic combinator

The arithmetic combinator applies a mathematical operation to one or two input signals and outputs the result on a specified signal. Operations include addition, subtraction, multiplication, division, modulo, and exponentiation, as well as bitwise operations and absolute value. Either operand can be a constant or another signal, and the special "each" input applies the operation to every signal on the wire independently.

Arithmetic combinators are the workhorses for scaling, converting between units, and combining signals. Dividing a chest's total item count by a wagon's capacity gives the number of wagons needed. Multiplying a fluid signal by a recipe ratio converts production rates between related fluids. Most arithmetic networks are one or two combinators long.

Decider combinator

The decider combinator compares an input signal against a value or another signal using one of six conditions: greater than, less than, equal, not equal, greater than or equal, less than or equal. If the condition holds, it outputs either the input value (on a chosen signal) or a constant one. Like the arithmetic combinator, it supports "each" on the input and can output "everything" or "anything" to pass through all signals or a single matching signal.

Deciders are where thresholds live. "If heavy oil is above 20000, enable cracking" is a decider condition. "If steel plates are below 1000, enable the steel foundry" is another. A decider that outputs one on a dedicated channel when its condition holds acts as a boolean switch that other combinators or lamps can read.

Constant combinator

The constant combinator emits up to eighteen user-defined signals on its output wire with no input required. It is the network's source of fixed values: a target stock level, a train limit, a bitmask of enabled recipes. Constants set in a constant combinator can be changed by hand or by other combinators writing to the same wire, making them useful as tunable parameters for a build.

A constant combinator is also the easiest way to inject test signals while building. Temporarily set it to output 100 of an item and watch the downstream combinators respond before connecting real chests.

Selector combinator

The selector combinator, added in the 2.0 expansion, picks one signal from its input based on a selection rule: the minimum value, the maximum value, the minimum or maximum signal count, or a specific slot. It outputs the selected signal's value on a chosen channel. This replaces multi-combinator constructions that previously required an arithmetic combinator and several deciders to find a maximum.

Selectors are the natural tool for "which resource is lowest" logic in a mixed-storage train station, and for throttling production to the slowest of several inputs. Their higher ingredient cost reflects that they replace what used to be a chain of older combinators.

Wires and how they connect

Red and green wire are the two physical connections that carry circuit signals. Both have a stack size of 1, and either colour can connect to any circuit-enabled entity. A single entity can have both a red and a green wire connected at the same time, and the two networks stay separate through that entity unless the entity is itself a combinator that adds them at an input.

Wiring is not the same as the electric network. Copper cable is not used for circuit connections; red and green wire are distinct items crafted from one electronic circuit each. A power pole that carries electric power can also carry up to two circuit wires (one red, one green) strung between its neighbours, which is how long-distance circuit connections are usually run without separate poles.

Power pole Max wire distance (tiles) Supply area radius (tiles) Health
Small Electric Pole 7.5 2.5 100
Medium Electric Pole 9 3.5 100
Big Electric Pole 32 2 150
Substation 18 9 200

The big electric pole has the longest wire reach at 32 tiles, which makes it the standard pole for carrying circuit wires across a large base without needing a dedicated chain. The substation has a shorter wire distance at 18 tiles but the largest supply area, so it is preferred inside dense builds where power coverage, not wire reach, is the constraint. The medium electric pole at 9 tiles covers most local network needs. The small electric pole at 7.5 tiles is only suitable for compact, adjacent connections.

Because circuit signals propagate instantly along a connected wire, there is no penalty for running a circuit network across a long chain of big poles. The only practical limit is that a broken pole disconnects the entire segment beyond it, so mission-critical networks sometimes use redundant paths.

Practical setup one: oil cracking balance

The classic first circuit network controls which oil products are cracked into which. An oil refinery running basic oil processing produces heavy oil, light oil, and petroleum gas in fixed proportions, but downstream demand for each product varies. Without control, heavy oil backs up and blocks the refinery even when petroleum gas is running dry. Cracking heavy to light and light to petroleum solves this, but only if cracking runs when the source fluid is abundant and stops when it is not.

The setup uses one decider combinator per cracking direction. A storage tank for heavy oil is connected to the decider's input with a red wire. The decider is set to "if heavy oil is above a threshold, output 1 on signal H". The output wire connects to the cracking chemical plant, either directly through the plant's circuit-controlled operation or through an inserter that feeds it. A second decider watches light oil and enables light-to-petroleum cracking the same way.

Choosing the threshold is a matter of reserving enough heavy oil for lubricant production. Heavy oil that is above the lubricant reserve can be cracked safely; heavy oil below the reserve should be kept. The threshold is placed in a constant combinator so it can be tuned without rewriting the decider. A single constant combinator can hold both thresholds on separate signals, and the deciders reference those signals instead of hardcoded numbers.

The same pattern extends to coal liquefaction, which consumes heavy oil as an input and requires a minimum reserve before it can start. A decider that enables liquefaction only when heavy oil is above its startup reserve prevents the process from stalling itself.

Practical setup two: storage thresholds and production control

Storage thresholds are the most common use of the circuit network in any mature factory. The principle is simple: a chest or tank reports its contents, a decider compares the contents to a target, and the result enables or disables the machines that produce that item. When the chest is full, production stops; when it drops below the target, production resumes.

ItemStack sizeOne steel chest (48 slots)
Iron Plate 100 4800
Copper Plate 100 4800
Steel Plate 100 4800
Electronic Circuit 200 9600
Plastic Bar 100 4800

A steel chest has 48 inventory slots, so its maximum capacity depends on the stack size of the item it holds. For iron plates at 100 per stack, one full steel chest holds 4800 plates. For electronic circuits at 200 per stack, the same chest holds 9600. A threshold that targets "one chest of buffer" is therefore a different raw number for every item, which is why the threshold should be set against a fixed count rather than a fraction of a chest.

To control a production line, wire the output chest of the line to a decider combinator. Set the decider to "if item is below target, output 1 on signal X". Connect the decider's output to the assembling machines on the line. Machines set to enable or disable on the circuit condition will start and stop as a group. An alternative is to leave the machines always running and control the input inserters, which keeps the machines warm and avoids the brief pause when they restart.

For mixed-item buffers, use an arithmetic combinator to sum multiple item signals into one total before comparing, or use the decider's "anything" condition to trigger when any item is below its threshold. The selector combinator's minimum function is useful here: output the signal with the lowest count and use that as the master control for the entire line.

Practical setup three: train limits and station control

Train stops can be connected to the circuit network to set their train limit dynamically. A station that requests trains when its buffer is low and stops requesting when it is full prevents trains from queueing at a station that cannot unload. This is the core of an on-demand rail network.

The setup reads the station's buffer chests with a red or green wire, sums the relevant item signals with an arithmetic combinator if necessary, and feeds the total to the train stop. The train stop is set to "set train limit" from a circuit signal, and an arithmetic or decider converts the buffer count into a number of trains. Dividing the empty capacity by a wagon load gives the number of trains the station can currently accept.

For a fuel offloading station, for example, divide the empty slot count by the rocket fuel stack size and then by the number of stacks per wagon to get the number of trains needed. A decider clamps the result to zero when the buffer is above a reserve, so the station does not request trains it does not have room for. The same arithmetic applies to ore unloads, smelter inputs, and science pack deliveries, changing only the item signal and the divisor.

Dynamic limits also solve the "all trains go to one station" problem. If two identical stations have empty capacity, both request trains, and the rail dispatcher sends trains to whichever has space. Without circuit limits, every station advertises a fixed limit regardless of how full it is, and trains stack up at stations that cannot unload them.

Signals, conditions and the red/green addition rule

A few mechanical rules cover most of what a player needs to design a working network. Signals on the same wire colour add. Signals on different colours are separate unless a combinator sums them at its input. A combinator's output connects to a specific wire colour chosen by the player, and that output can be red, green, or both.

Decider conditions evaluate per signal. When the input is "each", the condition is tested once for every signal on the wire, and every signal that passes is affected independently. When the input is a specific signal, only that signal is tested. The "everything" condition passes only if every individual signal on the wire satisfies it; "anything" passes if at least one signal does. These two virtual signals are the source of many subtle bugs when confused with "each".

Arithmetic operations with "each" apply independently per signal. An "each times 2" combinator doubles every signal on the wire without mixing them. An "each plus iron-plate" combinator adds the value of the iron plate signal to every other signal, which is rarely what is wanted but is occasionally useful for offsets.

Integer division truncates toward zero. A combinator dividing 7 by 3 outputs 2, not 2.33. For ratios that need rounding, use a decider to add a constant before dividing, or chain two combinators to compute a rounded result. Signal values are 32-bit signed integers, so values above roughly two billion wrap to negative; this is not a concern in normal factories but can bite in poorly designed accumulator counters.

When a circuit network is overkill

Not every factory needs circuits. A production line that consumes everything it makes as fast as it makes it has no surplus to control, and a threshold circuit adds combinators and wires for no benefit. Circuitry earns its place when a line produces more than one product, when a buffer needs to hold a reserve rather than run to capacity, or when a shared resource such as oil or rail needs to be divided between competing consumers.

A useful test: if you can solve the problem with a splitter, a belt priority, or a larger buffer, do that first. Circuit control is for problems those simpler tools cannot express. An oil refinery that cracks all its heavy oil unconditionally works until heavy oil is needed for lubricant; that is when a circuit condition becomes necessary. A train station with a single train on a fixed schedule works until there are two stations competing for the same train; that is when dynamic limits become necessary.

The cost of adding circuits is also low. An arithmetic or decider combinator needs five electronic circuits and five copper cable, both of which are in abundant supply by the time a player needs network control. The constant combinator is cheaper still at two electronic circuits. There is no reason to defer a useful circuit setup for resource reasons once the relevant technology is researched.

What the extracted data does and does not contain

The four combinators have complete item and recipe records in data/2.1/items.json and data/2.1/recipes.json. Their stack sizes, crafting ingredients, and research unlock flags are all available and are shown in the table above.

Their runtime entity data (energy consumption, update rate, circuit connector positions, and similar operational fields) is not present in data/2.1/machines.json. A filter of machines.json for entity names ending in "-combinator" returns no records. The data extractor captured assemblers, furnaces, miners, beacons, power poles, turrets and walls, but did not capture combinator entities. This page therefore does not quote a power draw figure for any combinator, and does not claim an update interval beyond the well-known one-tick-per- combinator game mechanic. If those fields are added to the extracted data in a future revision, the corresponding numbers will be computed here rather than hardcoded.

The behaviour described in this guide (how wires connect, how signals add across red and green, how decider conditions evaluate, how "each" and "everything" differ) is game mechanics, not data. Those rules are stable within a major version and do not require a prototype field to describe. The line this page draws is between mechanics it can state honestly and numeric values it cannot source.

Applies when…

These descriptions apply when:

  • You are playing Factorio 2.1.12. Combinator recipes, stack sizes and power pole reach are read from the prototype data for this version. A future version that changes recipes or pole distances will change the corresponding figures.
  • Combinator energy usage and update interval are not quoted because those fields are not in the extracted data. Behavioural descriptions (signal propagation, condition evaluation, wire addition) are game mechanics, not prototype numbers.
  • Storage chest capacities assume a steel chest with 48 slots. Wooden and iron chests have fewer slots and hold proportionally less; a buffer sized for a steel chest needs adjustment if built with a smaller chest.
  • Train limit arithmetic assumes standard wagon capacities and stack sizes. Modded wagons or items with different stack sizes change the divisors.

Spot an error or an out-of-date figure? Contact us at support@corecalx.com.

Related