Antewise

Oxygen Not Included: Why Your Pipe Is Blocked — Priority, Packets, Junctions

Updated 26 Oct 2026 Source Piping flow rules, packet behaviour, junction priority and useful patterns verified against oxygennotincluded.wiki.gg (Piping page), October 2026 By
Data status: The facts on this page were checked against the source named above. Game values can still shift with a patch, so re-check anything that looks off.

“Pipe blocked” usually means “no destination”, not “clogged”

The wiki defines flow as needing two conditions at once:

  1. An input building capable of receiving packets — pipe junction segments count.
  2. A pipe that can accept at least part of the packet.

Miss either one and nothing moves. The clearest illustration from the wiki: a pump connected to any number of pipes but nothing else will not pump. Conversely, “a vent connected to any number of pipes but nothing else will empty those pipes.”

So before you rebuild anything, ask one question: where does this packet end up? A full tank, a machine with a full internal buffer, and a vent in over-pressurised gas all look like “blocked” and all have the same cause.

Packets: one tile, one packet, one fluid

RuleConsequence
Each pipe tile holds only one packetA pipe is a queue of discrete units, not a continuous volume
Each packet holds only one fluid typeSame-type packets can merge and “bypass”; mixed packets cannot
Mixing contents “drastically reduces throughput”Filter contamination out at the source — for gases, mechanical filters at the input are strictly preferable to pipe filtering

That merge rule is why two half-empty packets of the same water move fine, while a 5 kg water packet followed by an 8 kg polluted water packet “cannot merge” and the line crawls.

How much one line can actually carry

The pipe system updates once per second, and a packet moves one segment per update — so the segment capacity is the throughput ceiling.

Per segmentMax throughputBuild cost
Liquid Pipe10 kg10 kg/s100 kg (Plumbable or Metal Ore)
Gas Pipe1,000 g1 kg/s25 kg (Raw Mineral or Metal Ore)

A liquid line moves 10× the mass of a gas line. That asymmetry is why gas networks sprawl and liquid networks rarely need to.

The number you can reuse for anything: divide the pipe limit by your machine’s output rate. The wiki’s own worked example — a Carbon Skimmer outputs a maximum of 1000 g/s (1 kg/s) of Polluted Water, so at most 10 can share a single Liquid Pipe or Liquid Vent without holdup. 11 or more requires two parallel pipes. Swap in your own building’s rate and the same division tells you when to add a second line.

Phase changes inside a pipe damage it (see the temperature guide for the thresholds). Prevent that by cutting the packet size to 1/10 — 1 kg for liquid pipes, 100 g for gas pipes.

Gas pipes have one convenience liquid pipes do not: they can share a tile with other buildings (just not another gas pipe).

Overpressure: the other reason nothing flows

A vent that cannot release is indistinguishable from a blocked pipe — the packet just sits there. Both vents have a hard ceiling:

VentOverpressure limitBuild cost
Liquid Vent1,000 kg in the surrounding tile400 kg Metal Ore
Gas Vent2,000 g (2 kg) in its own tile50 kg Metal Ore
High Pressure Gas Vent10× the normal vent (≈20 kg)Built from Plastic Gaskets

Two details that explain intermittent behaviour: a Gas Vent “is affected only by the pressure in its own tile”, so in a tile holding several gases at different pressures it may release only intermittently, when low-pressure bubbles drift over it — clustering several vents together gives more chances to release. And there is no High Pressure Liquid Vent equivalent: the wiki notes “there is no Liquid Vent equivalent.”

(There is a well-known trick to exceed the 2 kg gas limit by standing the vent in a shallow puddle. The wiki classes it as an exploit, and it compresses gas without limit — worth knowing it exists so you do not think your build is broken, but do not build around it.)

Priority: the rule that fixes most junctions

This is the mechanic most players never learn, and it is why bridges behave strangely:

  • The input node of a building (white symbol — bridge, vent, hydroponic plot) always takes priority if the building can accept a packet.
  • The output node of a building (green symbol — bridge, pump, water sieve) always yields priority to any incoming pipe.

Worked example straight from the wiki: imagine two parallel pipe runs joined by a bridge from the upper to the lower.

  1. If liquid flows in the upper line but not the lower, the bridge takes all packets it can output.
  2. If both lines flow with full packets, the bridge does nothing — every time a packet is available for the bridge, a full packet already occupies the other side and takes precedence.

That second case is the classic “why is my bridge not working” moment. It is not broken; the far side simply keeps winning priority.

Junctions alternate, and that is usually not what you want

A junction made only of pipes runs round-robin: with three inputs and one output it takes one packet from each input in sequence; with three outputs it sends one packet to each in sequence. If one output backs up, the others receive more.

That is rarely the behaviour you actually want. Force direction by breaking continuous pipelines with bridges, valves and shutoffs, and keep “a simple, strict direction of flow, with all sources on one half of a pipeline and all consumers on the other.” Mixing sources and consumers on one line causes unpredictable path-finding where segments never fill and consumers get ignored entirely.

Two patterns that solve most problems

Overflow junction — you have more than enough supply and want the surplus diverted: Pipe the source directly to the overflow destination, then connect your main network to the source via a bridge. While the main network has demand, the bridge takes everything; once it is full the bridge blocks and surplus flows past.

Top-up junction — you have a preferred primary source and a backup: Feed the primary source directly into the network and the secondary source through a bridge, valve or shutoff. As long as the primary can satisfy demand, the bridge stays blocked and the backup is untouched.

Both work because of the priority rule above — the bridge is doing the deciding, not the pipes.

Configurations the wiki warns against

PatternWhat goes wrong
Pipe running through consumers (hydroponic plots, vents, exo-suit docks)Strict first-come-first-serve; early consumers starve later ones while filling large internal buffers
Pipe running through several outputsLast-serve queue; middle outputs block because the building cannot output into a full or incompatible packet
Mixed contents in one lineThroughput collapse — filter early instead
Closed loop with no bridgeWill not fill and will not circulate

A closed loop only works if you substitute one pipe tile with a bridge — that satisfies both flow conditions (a building output, a building input, and free pipe) and lets the loop accept and move packets. This is the basis of coolant loops and loop filters.

Keep some pipe empty and regulate output rates with automation rather than trying to run every segment full. See the automation guide for sensor-driven shutoffs — the wiki recommends shutoffs over valves, because valves are operated by dupes and keep pumping at the old rate until a dupe arrives to switch them.

Frequently asked questions

Why does my pipe say blocked in Oxygen Not Included?

Almost always because there is nowhere for the packet to go, not because something is clogging it. Flow needs both a pipe that can accept part of the packet and an input building able to receive it. A pump connected to pipes and nothing else will not pump at all.

Does a bridge work as a one-way valve in ONI?

It also sets priority. The input node of a building always takes priority when it can accept a packet, and the output node always yields to any incoming pipe. That priority behaviour is what makes bridges useful, not just the one-way direction.

Why is my pipe throughput so low?

Mixed contents. Packets of the same fluid can merge and bypass, but packets of different fluids cannot, which drastically reduces throughput. Filter contamination out at the source instead.

Why do the last buildings on my line never get fluid?

Running pipe directly through consumers creates a strict first-come-first-serve queue, and the first consumers starve the later ones while filling their internal buffers. Feed consumers with bridges instead of running the main line through them.

How do I send surplus fluid somewhere else automatically?

Use an overflow junction: pipe the source directly to the overflow destination, then connect your main network to the source with a bridge. While the main network has demand the bridge takes everything; once it is full the bridge blocks and surplus flows on.

Why won't my pump pump?

It has nowhere to send the packet. A pump needs a valid destination: an input building able to receive, plus pipe that can accept part of the packet. A pump into a full liquid tank or a sealed pipe run will sit idle.

Why is my bridge not transferring?

Priority. The bridge's output node yields to any incoming pipe, so if the destination side always has a full packet, the bridge never gets to insert one. Use a valve or shutoff to leave slack on the receiving line.

How do I stop the last farm tile from starving?

Do not run the main line through the tiles. Branch to each consumer with bridges so no consumer's internal buffer sits in front of the next one.

Can I run a cooling loop with just pipe?

Not a closed one — it will neither fill nor circulate. Replace one tile of the loop with a bridge.

Should I use valves or shutoffs?

Shutoffs with automation where you can. Valves need a dupe to operate and keep pumping at the previous rate until one arrives, though they are useful for keeping slack in a downstream line and for equalising multiple inputs.

More Oxygen Not Included guides

Sources

Figures and item data on this site are read from the game’s own reference wiki before publishing. Where a value could not be confirmed there, the page says so instead of filling the gap.