---
title: "How to find the real bottleneck on a packaging line"
description: "The machine that is stopped is often only waiting. Read the counts at each step to find which machine stopped the line first, and which one limits its rate."
category: "Machines and connectivity"
author: "Applications Engineering Team"
published: "2026-10-27"
updated: "2026-11-02"
source_url: "https://www.iotflows.com/blog/which-machine-stopped-the-line/"
---
> Question: How do I tell which machine limits a filler-labeler-packer line?

## Key takeaways

- On a packaging line, the machine standing still is often starved or blocked by a neighbor, not the cause of the stop.
- The step whose count stopped first caused the stoppage, and the steps that stopped after it were waiting on it.
- A stop costs line output only for the minutes it outlasts the accumulation around the critical machine, usually the filler.
- A step that runs slower than the filler limits the line without ever stopping first, so read its rate against Step 1 too.
- Fix long stops at the machine, add accumulation for stops just past the buffer, and restore the speed of a slow step.

You tell which machine limits a filler-labeler-packer line by counting at every step and reading two things: for each stoppage, the step whose count stopped first, and over a shift, any step whose running rate falls below the filler’s. The machine standing still is often only waiting. The limiter is whichever machine costs the filler the most minutes, by stopping longer than the accumulation covers or by running slow.

This guide is for plant managers and engineers on filling and packing lines. It applies the general [bottleneck method](/blog/find-the-bottleneck/) to a packaging line, and works one hypothetical bottled-tea line through a case packer jam and a slow labeler.

## Why the stopped machine often isn’t the cause

The machine that is stopped when you walk up is often stopped because a neighbor made it stop. On a line, a machine can’t run without units coming in and room for units going out.

> **Definition.** **Starved and blocked** describe a packaging machine paused by its neighbors rather than by its own fault: starved when upstream equipment can’t send it material, and blocked when downstream equipment can’t receive what it makes.

PackML, the state model for packaging machines, files both under one state, Suspended: the machine is paused, waiting for external process conditions to clear. A machine paused for an internal condition is Held instead.[1] The distinction is the whole problem in one sentence: three machines can read stopped while only one of them has a fault.

Two line designs make the cause hard to see.

- **Close-coupled lines.** With no room between machines, one fault stops its neighbors within seconds. In one bottling line, any machine that faulted almost immediately stopped all the machines upstream of it.[3]
- **Lines with accumulation.** Tables and conveyors between machines hold units, so a stop reaches a neighbor minutes later, or never. By the time the filler stops, the machine that caused it may have been down for three minutes, and the [buffers between machines](/blog/how-to-monitor-a-packaging-line/#buffers) have hidden the order.

## Which machine is meant to limit the line?

A packaging line is built with one machine chosen to set its pace, so the first step is knowing which one that is.

> **Definition.** **Critical machine** is the machine a packaging line is designed around: the slowest machine on the line, which sets line output, with every other machine given spare speed and buffer space so its stops reach the critical machine as rarely as possible.

On a liquid line the critical machine is usually the filler, the primary process. Sidel’s white paper on line regulation describes the speed profile as a *V curve*: the critical machine sits at the bottom, with faster machines before and after it.[2]

Upstream over-speed keeps the filler fed. Downstream over-speed empties the accumulation after a stop, so it is free for the next one.

Accumulation matters as much as speed. In the same paper’s model, five machines each at 97% performance multiply to 85.8% for the line when they are close-coupled. With enough accumulation between them, the line holds 97%.[2]

For example, a bottled-tea line has this design:

| Machine | Rated speed | Role |
|---|---|---|
| Unscrambler | 240 bottles a minute | Keeps the filler fed |
| Filler | 200 bottles a minute | Critical machine |
| Labeler | 230 bottles a minute | Clears accumulation after a stop |
| Case packer | 250 bottles a minute | Clears accumulation after a stop |

A hypothetical line. The case packer packs 24 bottles a case, so 250 bottles a minute is about 10.4 cases.

Figure: Rated speeds of an unscrambler, filler, labeler and case packer at 240, 200, 230 and 250 bottles a minute form a V with the filler at the bottom. With the labeler set to 190, the bottom of the V moves to the labeler, below the filler’s 200.

*As designed, the filler sits at the bottom of the V. A labeler set to 190 moves it. Sample data.*

The design tells you which machine should limit the line. The counts tell you which one does.

## How do you read counts at each step?

You read a line’s counts two ways: by time, to find the step that stopped first, and by rate, to find a step that runs slower than Step 1. Put a counter after each machine, number the steps in the order a unit passes them, and make the critical machine’s counter Step 1 when it is the first machine you count.

| Reading | What it finds | Read it when |
|---|---|---|
| Step whose count stopped first | The cause of one stoppage | Every time the filler stops |
| Rate difference against Step 1 | A step running slower | While every step is running |
| Count difference against Step 1 | Units rejected or lost | At the end of a run |

A counter reads stopped once no unit passes for longer than its *downtime filter*, then dates the stop to the last unit. Set the filter just past the longest normal gap, as the [downtime filter guidance](/docs/hardware/calibrate-beamtracker/#downtime-filter) describes, or the first-stop times blur.

Sort the stop times and read the direction. When a later step stopped first and the earlier steps followed, a downstream machine blocked the line. When Step 1 stopped first and the later steps ran dry, the filler stopped for its own reasons or was starved from upstream.

## One stoppage, minute by minute

Here is the bottled-tea line through one 5-minute case packer jam, read both ways.

#### Worked example: A case packer jam on the bottled-tea line

- The line runs at 200 bottles a minute, the filler’s rated speed.
- The accumulation table between filler and labeler has room for 400 bottles, 2 minutes at 200 a minute. The conveyor between labeler and case packer has room for 300, 1.5 minutes.
- In normal running both buffers sit near empty, because the machines after the filler are faster.
- The case packer jams at 10:02:00 and restarts at 10:07:00.

| Minute | Filler, Step 1 | Labeler, Step 2 | Case packer, Step 3 |
|---|---|---|---|
| 10:00 | 200 | 200 | 200 |
| 10:01 | 200 | 200 | 200 |
| 10:02 | 200 | 200 | 0 |
| 10:03 | 200 | 100 | 0 |
| 10:04 | 200 | 0 | 0 |
| 10:05 | 100 | 0 | 0 |
| 10:06 | 0 | 0 | 0 |
| 10:07 | 200 | 230 | 250 |
| 10:08 | 200 | 230 | 250 |
| 10:09 | 200 | 230 | 250 |

The labeler fills the 300 spaces on its outfeed in 1.5 minutes, so it stops at 10:03:30. The filler fills the 400 spaces on the table in 2 more minutes, so it stops at 10:05:30. Sorted by first stop, the case packer is the cause.

The filler is the critical machine, so line output falls only while it stands. Count the loss two ways:

- **By the filler’s stop:** it stood from 10:05:30 to 10:07:00, 1.5 minutes, so 1.5 × 200 = 300 bottles.
- **By the buffers:** the jam lasted 5 minutes, and the buffers covered (300 + 400) ÷ 200 = 3.5 of them. That leaves 5 − 3.5 = 1.5 minutes, or 300 bottles.

**Result:** The 5-minute jam costs the line 300 bottles, 1.5 minutes of filler time

Figure: Three timelines from 10:00 to 10:10. The case packer stops first at 10:02:00, the labeler at 10:03:30 and the filler at 10:05:30. All three run again at 10:07, so the filler loses 1.5 minutes.

*The case packer stopped first; the labeler and filler were blocked behind it. Sample data.*

The ten-minute totals check the arithmetic. The filler counted 1,700 bottles, the labeler 1,390 and the case packer 1,150. The 310-bottle gap between the filler and labeler counts is on the accumulation table, and the 240-bottle gap between the labeler and case packer is on its conveyor.

Both buffers drain at the labeler’s and packer’s spare speed: the table empties at 230 − 200 = 30 bottles a minute, so it takes about 13 minutes to clear.

Three lessons follow. Each machine logged its own stop: 5 minutes, 3.5 and 1.5, or 10 machine-minutes for one jam, so code the cause once, on the case packer.

The line lost 1.5 minutes, not 5. And a case packer jam under 3.5 minutes costs nothing, as long as the buffers have emptied since the last one.

## What if the limiting machine never stops?

A machine that runs slower than the filler limits the line without ever stopping first. Its count keeps moving, so a first-stop sort never names it.

#### Worked example: A labeler set to 190 bottles a minute

- A worn label applicator wrinkles labels above 190 a minute, so the operator sets the labeler to 190.
- Shift: 480 minutes with a 30-minute break, so the filler could fill 450 × 200 = 90,000 bottles.
- No machine has a stop of its own all shift.

The accumulation table fills at 200 − 190 = 10 bottles a minute, so its 400 spaces are full after 40 minutes. From then on the filler is blocked in short gaps and runs at the labeler’s 190.

Count the shortfall two ways:

- **By rate:** the labeler runs 10 bottles a minute below the filler for 450 minutes, so 450 × 10 = 4,500 bottles.
- **By counts:** the labeler labels 450 × 190 = 85,500 bottles against the filler’s possible 90,000, so 90,000 − 85,500 = 4,500 bottles.

**Result:** The slow labeler costs 4,500 bottles a shift, 15 times the case packer jam

The counts show the pattern if you read rates as well as stops. For the first 40 minutes the labeler’s rate difference against Step 1 is −10 bottles a minute. Once the table is full, the filler is held back to 190 in gaps too short to read as stops, so the difference disappears and every step reads 190.

That is the signature of a slow step: the whole line runs below the critical machine’s rated speed with no stop to explain it. The step whose rate fell behind Step 1 first is the cause, and the full accumulation table sits right in front of it. In the figure above, the labeler set to 190 has become the bottom of the V.

The filler’s own count catches the 400 bottles left on the table: it reads 85,900, the labeler 85,500. That gap matches the full accumulation table, a check that the counts agree.

## Find the limiting machine over a week

One stoppage names one cause. A week of stoppages names the machine to fix.

1. **Write down the design.** List each machine’s rated speed for the container you run, mark the critical machine, and note each buffer in minutes at the line rate.
2. **Count after every machine.** Put a counter after each machine’s last reject point and validate it against a hand count. The [count at every step](/blog/production-line-monitoring-without-plcs/#every-step) guide covers placement.
3. **Name the first stop of each filler stop.** For every stop of the critical machine, record the step whose count stopped first.
4. **Add up the filler’s minutes by cause.** Sum the minutes the filler stood, not the minutes the cause stood, under the step that stopped first.
5. **Check each step’s running rate.** Mark any step whose rate sat below the critical machine’s rated speed for long stretches, and convert the gap to filler minutes.

The step at the top of that list is the machine limiting the line this week. It may be the filler itself, a machine after it, or the supply in front of it.

## See which step stopped first

IoTFlows counts each step of a line with a BeamTracker, a laser counter that counts every unit breaking its beam, with no PLC connection. Each BeamTracker reads stopped once no unit has passed for longer than its downtime filter and back-dates the stop to the last unit, so the step whose count stopped first is the one to walk to.

Group the steps as a [cascading group](/docs/get-started/glossary/#cascading-group), and every step after Step 1 shows its first pass yield, the units lost and its [rate difference against Step 1](/docs/monitoring/asset-groups/#fpy). See [packaging line monitoring](/solutions/packaging-line-monitoring/).

[Altium Packaging](/customers/altium-packaging/) counts every bottle on its ten bottling lines in Memphis with BeamTracker. Each line is counted at every step and read as a cascade, at 20 to 140 bottles a minute.

## What to fix once you’ve found it

The fix depends on how the limiting machine costs the filler its minutes. Match what the counts show to the first fix.

| What the counts show | What limits the line | Fix first |
|---|---|---|
| Step 1 stops first, on its own | The filler’s own stops | The filler’s top stop reasons |
| Supply runs out, then Step 1 stops | Supply starves the filler | Unscrambler or bottle supply |
| A later step stops first, for long | That machine blocks the filler | That machine’s breakdowns |
| A later step stops first, briefly | Buffer too short for its stops | That machine’s jams, then buffer |
| A step runs slow but never stops | That step’s speed | Restore its rated speed |
| All steps run, counts drift apart | Rejects, not stops | Yield at that step |

When the filler is the limit, protect every minute it has. The exploit steps in the general bottleneck method apply as they are: run it through breaks, stage changeovers and keep its buffers ready. When counts drift apart while every step runs, the loss is yield, and [first pass yield](/blog/first-pass-yield/) is the measure to work on.

Slowing a line can raise its output. In one bottling-line simulation, engineers set the filler, the line constraint, at 250 bottles a minute, set the machines after it at progressively increasing rates and added two minutes of accumulation after the filler. The simulation showed the client could achieve twice the OEE.[3]

> **More accumulation or a fix?**
>
> Choose more accumulation when most of a machine’s stops run just past what the buffer covers, such as 4-minute jams against 3.5 minutes of buffer. Choose fixing the machine when its stops are long breakdowns or it runs slower than the filler. You don’t need a bigger table for a slow step: the 400-bottle table bought the slow labeler 40 minutes, then stayed full.

Re-read the design after every fix. Restore the labeler to 230 and the filler is the bottom of the V again. The fix also gives the case packer its cover back: with the table full, a packer jam blocks the filler after about 1.5 minutes instead of 3.5.

## Questions

### Is the bottleneck always the slowest machine on a packaging line?

By design, yes. Line builders make one machine, usually the filler, the slowest and give the others spare speed, so the filler sets the line rate. In practice the limiter is whichever machine costs the filler the most minutes. A labeler turned down below the filler’s speed, or a case packer whose jams outlast the accumulation, takes that role while the filler stays the slowest machine on paper.

### Does adding accumulation fix a bottleneck?

Only for stops a little longer than the buffer already covers. Accumulation lets the critical machine keep running while a neighbor stops, so short stops cost nothing. It can’t fix a machine that runs slower than the filler, because the buffer fills and stays full, and no practical table covers a 30-minute breakdown.

### Why do the machines after the filler run faster than it?

So they can empty the accumulation after a stop. A case packer that only matches the filler’s speed never clears the bottles that piled up while it was jammed, so its next jam blocks the filler sooner. Spare speed after the critical machine makes room for the next stop, and spare speed before it keeps the filler fed.

### Should each machine log its own reason when the line stops?

Log the cause once, on the machine whose count stopped first, and code the machines that were waiting as blocked or starved. Otherwise one 5-minute case packer jam appears as 10 machine-minutes of downtime across three machines, and the downtime Pareto ranks the filler and labeler for stops they didn’t cause.

## Sources

1. [OPC 30050: OPC UA for PackML, Common Object Model, version 1.01](https://reference.opcfoundation.org/specs/OPC-30050/full), OPC Foundation, accessed Oct 30, 2026
2. [Line Regulation and Accumulation, white paper 11914r1v4.0](https://www.sidel.com/media/ux2khute/11914_white_paper_r42.pdf), Sidel, prepared by Zenith Global Ltd, accessed Oct 30, 2026
3. [Clear constraints on bottling lines using simulation](https://www.plantengineering.com/clear-constraints-on-bottling-lines-using-simulation/), Creighton Fearrington, Plant Engineering, accessed Oct 30, 2026
