Skip to main content
IoTFlows Logo
IoTFlows Logo
Shopping Cart

How to find the bottleneck machine, with numbers

The bottleneck is the machine with the least spare time for its load. Calculate load, check busy time and queues, and prove it with lost hours. Worked example.

Ulises Carrasco, Co-founder and COO

10 min read

Updated

The machine that limits output is the one with the least spare time for the work you give it: its busy hours come closest to, or past, its available hours. You prove it in three steps. Calculate each machine’s load from demand and measured cycle times, confirm it is busy while its neighbors wait, and show that hours lost there, and only there, cost shipments.

This guide is for plant managers and engineers in job shops and machining cells. It works one hypothetical four-machine cell through every step, from the load calculation to the week the bottleneck moves.

Key takeaways

  • The bottleneck is the machine whose busy hours come closest to, or past, its available hours for the work you give it.
  • Load is demand times measured cycle time, plus the machine’s own stops such as setups, divided by available hours.
  • The machine with the most downtime hours can be the one with the most spare time, because waiting counts as downtime.
  • Proof is in shipments: hours lost at the bottleneck cost output, while hours lost elsewhere are absorbed by spare time.
  • Recalculate load whenever the product mix changes, because a different mix can move the bottleneck to another machine.

What is a bottleneck?#

Definition

Bottleneck is the resource whose capacity limits how much a whole line or plant can ship. An hour lost at the bottleneck is an hour of output lost for the plant, while an hour lost at any other machine is absorbed by that machine’s spare time.

The Theory of Constraints starts every improvement here: identify the constraint before you change anything.[4] The rest of this guide is the identify step, done with numbers instead of opinions.

The whole method rests on two measurements per machine: how many hours it ran, and why it stopped when it didn’t. The first is its utilization; the second is the reason on each stop.

Why the obvious suspects mislead#

Three machines get blamed first, and each can be the wrong one.

  • The machine with the most downtime. A band saw that cuts a week’s blanks in 20 hours shows 55 stopped hours. It isn’t broken; it is waiting. A downtime Pareto by machine ranks it first and points you away from the problem.
  • The machine with the longest cycle time. Cycle time leaves out setup, tool changes and repairs. For 600 parts, a lathe at 5.5 minutes with 12 hours of setups is busy 67 hours, while a mill at 6.0 minutes with 2 hours of setups is busy 62.
  • The machine with the biggest pile in front of it. A deburr station that runs in baskets of 120 always has a basket waiting. The pile measures its batch size, not its capacity.

Calculate each machine’s load#

Load compares the hours a machine needs this week with the hours it has. Required hours include everything the machine does for its own reasons, not only cutting time.

Load =

((Demand × cycle time) + own stops)
÷
(Available hours)

Own stops are the stops a machine causes itself: setups, tool changes, breakdowns and adjustments. Waiting for material, an operator or a free spot downstream is not an own stop.

Take cycle times and own stops from what the machine logged over recent weeks, never from the quote or the nameplate. Here cycle time is running minutes per part, because own stops are counted on their own; a schedule load folds both into one effective cycle time instead.

Worked example

One week in a four-machine bracket cell

  • Demand: 600 brackets a week, routed band saw, CNC lathe, CNC mill, deburr.
  • Available time: two 8-hour shifts with a 30-minute break each, five days. That is 2 × 450 × 5 = 4,500 minutes, or 75 hours per machine.
  • Measured per part: saw 2.0 minutes, lathe 5.5, mill 6.0, deburr 0.8.
MachineRun hoursOwn stopsBusy hoursLoad
Band saw600 × 2.0 = 20 h2 + 1 = 3 h23 h30.7%
CNC lathe600 × 5.5 = 55 h4 + 3 = 7 h62 h82.7%
CNC mill600 × 6.0 = 60 h6 + 5 = 11 h71 h94.7%
Deburr600 × 0.8 = 8 h0.5 + 0.5 = 1 h9 h12.0%
Own stops are setup hours plus tool changes, repairs and adjustments. Sample data.

The mill has 75 − 71 = 4 spare hours. Its most output in a week is (75 − 11) × 60 ÷ 6.0 = 640 brackets.

The CNC mill is the bottleneck: 94.7% loaded, 4 spare hours, a ceiling of 640 brackets a week
The mill has the least spare time, so it sets the cell’s output. Sample data.

If demand rises to 700 brackets a week, the mill falls 60 short of its 640 ceiling, while the lathe could still make 741. Buying a second lathe would add nothing.

Load and takt time are the same test#

Takt time is available production time divided by customer demand.[3] For the cell that is 4,500 ÷ 600 = 7.5 minutes a bracket.

Divide each machine’s busy hours by demand and you get its busy minutes per part: the mill needs 71 × 60 ÷ 600 = 7.1 minutes. Load is that number over takt, 7.1 ÷ 7.5 = 94.7%. Use takt when you talk to a line team and load when you compare machines that make different parts.

Confirm it with measured busy time#

The calculation says which machine should be the bottleneck. Measured time says which one is.

Definition

Busy time is the time a machine spends running plus the time it is stopped for its own reasons, such as setups, tool changes and repairs. Time a machine spends waiting for a part, an operator or room downstream is not busy time.

Researchers at Toyota Central R&D Labs drew the same line: a machine is active when working, in repair, changing tools or being serviced, and inactive when it waits on another machine.[1] The bottleneck is the machine with the most busy time and the least waiting time.

Uptime is the share of available hours a machine ran. A sensor reads running and stopped, so it sees a waiting machine as stopped. The downtime reasons operators attach are what split a machine’s stopped hours into own stops and waiting.

MachineUptimeOwn stopsWaitingBusy
Band saw26.7%3 h52 h30.7%
CNC lathe73.3%7 h13 h82.7%
CNC mill80.0%11 h4 h94.7%
Deburr10.7%1 h66 h12.0%

Uptime alone ranks these machines correctly here, but not always. A press that runs 50% of its shift and spends another 44% in its own setups and breakdowns has low uptime and 6% spare time.

Close figures can’t separate two machines either. In one simulated seven-machine system, the confidence ranges of two machines’ utilization, 89% and 94%, overlapped, so utilization alone could not name the primary bottleneck.[1]

Break the tie with the shift timeline. At any moment, the bottleneck is the machine with the longest uninterrupted busy stretch.[1] Measured that way, the 94% machine was the sole bottleneck 45.1% of the time and the 89% machine 1.2%.[1]

Read the queue in front of each machine#

Work piles up in front of the bottleneck, because every machine upstream can make parts faster than it can take them. Measure the pile in days, not parts.

Time in queue =

(Parts waiting)
÷
(Parts processed per day)

This is Little’s Law, L = λW, rearranged: work in process equals throughput times the time each unit spends in the system.[2] The cell ships 600 ÷ 5 = 120 brackets a day.

QueueParts waitingDays of work
Before the lathe6060 ÷ 120 = 0.5
Before the mill240240 ÷ 120 = 2.0
Before deburr120120 ÷ 120 = 1.0

The mill’s two days of queue agree with its load. The deburr basket doesn’t: it waits a day because the station runs in batches of 120, not because it is short of hours.

Prove it: hours lost there cost shipments#

The test that settles an argument is what happens to shipments when a machine loses time. A machine absorbs lost hours up to its spare hours. Past that, output falls.

Worked example

A 6-hour breakdown on two machines

  • The mill makes 60 ÷ 6.0 = 10 brackets an hour and has 4 spare hours a week.
  • The lathe has 13 spare hours, and the mill has 240 brackets, 24 hours of work, queued in front of it.

A 6-hour mill breakdown uses its 4 spare hours and costs 2 more. That is 2 × 10 = 20 brackets the cell doesn’t ship this week, without overtime.

A 6-hour lathe breakdown fits inside its 13 spare hours. The mill keeps cutting from its queue, and the lathe catches up later in the week.

A mill hour past its spare time costs 10 brackets; a lathe hour costs nothing until its 13 spare hours are gone

Run the same test on your history:

  1. Pick four to six weeks

    Use weeks with the same shift pattern and a similar product mix, so the weeks compare.

  2. List the long stops on each candidate

    Take every own stop over an hour on the two or three machines with the highest load.

  3. Line them up with shipments

    Set each week’s good output beside those stops, machine by machine.

  4. Find the machine output follows

    The bottleneck is the machine whose lost hours past its spare time match the weeks output fell. Stops on other machines line up with nothing.

The forward version is faster: run only the candidate through its breaks for a week, and measure output the same way. If it is the bottleneck and demand exceeds its ceiling, weekly output rises by its parts per hour times the hours added. For the mill, two 30-minute breaks a day for five days add 5 hours, or 50 brackets.

When the bottleneck moves#

The bottleneck belongs to a mix, not to a machine. Change what the cell makes and the load moves with it.

Worked example

Half the week switches to part B

  • Part B needs 9.0 minutes on the lathe and 3.0 on the mill. Setups and own stops stay the same.
  • Week 2 makes 300 of part A and 300 of part B.

Lathe: (300 × 5.5 + 300 × 9.0) ÷ 60 = 72.5 run hours, plus 7, is 79.5 hours. Mill: (300 × 6.0 + 300 × 3.0) ÷ 60 = 45 run hours, plus 11, is 56 hours.

The lathe is now 106.0% loaded and the mill 74.7%: the lathe is 4.5 hours, or 30 of part B, short
A different mix moves the bottleneck from the mill to the lathe. Sample data.

The bottleneck also shifts from moment to moment, as stops come and go. In a simulated four-machine line where one machine ran at 88% and the others at 80%, the busiest machine was the sole bottleneck 32.5% of the time and part of a shifting bottleneck another 29.3%.[1] The first machine in the line, at 80%, was a sole or shifting bottleneck 33.1% of the time, so a secondary bottleneck matters too.

So recalculate load each time you release a week of work, and read the measured busy time weekly. A bottleneck that moves every few days is a scheduling question: plan the mix so no machine is loaded past its available hours.

Find the bottleneck from machine data#

IoTFlows puts a SenseAi sensor on each machine that decides running or stopped every second from vibration and sound, with no PLC connection. That gives every machine the same clock, whatever its brand or age.

The Advanced Report lists each machine’s uptime and downtime hours over any period, sorted Top Performing, so the machines that ran most sit at the top. The Downtimes report’s Downtimes by Asset chart splits each machine’s stopped hours by reason, which separates its own stops from waiting.

On a packaging line, a BeamTracker at each machine shows which one stopped the line first. See machine utilization tracking.

What to do once you’ve found it#

The Theory of Constraints orders the work in five steps: identify the constraint, exploit it, subordinate everything else to it, elevate it, and prevent inertia from becoming the constraint.[4] Spend the cheap steps before the expensive one.

StepWhat it means at the millCost
ExploitRun it through breaks and shift changesLabor only
ExploitKeep a queue in front so it never waitsSome work in process
ExploitInspect parts before the mill, not afterNone
ExploitPreset tools and stage setups offlineFixtures and tooling
SubordinateRelease work at the mill’s paceNone
ElevateOvertime, outsourcing, a second millCapital or premium

Each hour you recover at the mill is worth 10 brackets while demand exceeds its ceiling. An hour recovered at the saw is worth nothing until the saw becomes the constraint. Value the bottleneck’s hours with the cost of downtime method, using the output the plant loses, not the machine’s rate.

Setup is the mill’s largest own stop, 6 of its 71 busy hours. Measure changeover time at the bottleneck first.

You probably don’t need a new machine if the bottleneck still loses hours to waiting, breaks or long setups. Buy capacity when its busy time sits near 100% after those fixes and demand still exceeds its ceiling.

Questions#

Can a machine with low uptime be the bottleneck?#

Yes. A press that runs 50% of its shift and spends another 44% in its own setups and breakdowns is busy 94% of the time and has almost no spare hours. Uptime counts only running time, so add the machine’s own stops back in before you compare it with its neighbors.

What is the difference between a bottleneck and a constraint?#

A constraint is anything that limits how much a plant ships, such as a machine, a skill, material supply, or customer orders. A bottleneck is a constraint that is a resource inside the plant, most often one machine or one cell. When every machine has spare hours and work still ships late, the constraint is outside the machines.

Should every machine run at high utilization?#

No. Only the bottleneck needs to run every available hour. A machine upstream of it that runs faster than the bottleneck only builds work in process in front of it, which lengthens lead time without shipping a single extra part. Set utilization goals by role, not one goal for the whole floor.

How often should I check which machine is the bottleneck?#

Recalculate load each time you release a week of work, and whenever the product mix, a cycle time or the shift pattern changes. Read measured busy hours and queues weekly. A bottleneck that moves every few days points at the mix and the schedule rather than at any one machine.

Written by

Ulises Carrasco, Co-founder and COO

Sources#

  1. Shifting Bottleneck Detection, Proceedings of the 2002 Winter Simulation Conference, Christoph Roser, Masaru Nakano and Minoru Tanaka, Toyota Central R&D Labs; Winter Simulation Conference. Accessed Oct 16, 2026
    informs-sim.org/wsc02papers/145.pdf
  2. OR Forum: Little’s Law as Viewed on Its 50th Anniversary, Operations Research 59(3), 536–549, John D. C. Little, INFORMS (record on RePEc IDEAS). Accessed Oct 16, 2026
    ideas.repec.org/a/inm/oropre/v59y2011i3p536-549.html
  3. Takt Time, Lean Enterprise Institute. Accessed Oct 16, 2026
    lean.org/lexicon-terms/takt-time
  4. The Five Focusing Steps (POOGI), TOC Institute. Accessed Oct 16, 2026
    tocinstitute.org/five-focusing-steps.html