top of page

Setup vs Idle Time Reason Codes: Stop Hiding Lost Time


Setup vs idle time reason codes: define boundaries and prevent hidden idle. A practical CNC code set, gray-area examples, and rollout steps for multi-shifts

Setup vs Idle Time Reason Codes: Stop Hiding Lost Time

Second shift walks up to a machine that’s down mid-changeover. The previous shift pulled the job, but the jaws aren’t on the cart, the tooling is scattered, and the traveler doesn’t match what’s in the control. The operator spends the next 10–30 minutes hunting—then someone codes the whole stop as “setup.” By the next morning, the report says “setup ran long,” even though the actual delay was waiting on missing inputs.


That’s not a data problem. It’s a classification problem. If “setup” is the default bucket for anything that isn’t cutting, you’ll keep debating schedules, “slow setups,” and capacity—while the real constraints (material, QC, programs, coverage) stay invisible.


TL;DR — setup vs idle time reason codes

  • “Setup” becomes a catch-all when nobody wants to label waiting time.

  • True setup is work required to make the next part good; idle is waiting on an external constraint.

  • One stop often contains both: code setup work and the waiting portion separately when possible.

  • Define setup start/stop triggers (last good part → first good part) to reduce shift-to-shift debates.

  • Keep reason codes short (8–15) so compliance beats “perfect” detail.

  • Force code entry at stoppage, not end-of-shift memory, to make same-shift decisions possible.

  • Daily review should surface top idle causes (material, QC, programming, coverage), not re-litigate “setup took too long.”


Key takeaway Setup vs idle isn’t about accounting—it’s about separating legitimate changeover work from waiting that’s starving the spindle. When idle is mislabeled as setup, your ERP and schedule narratives drift away from actual machine behavior, especially across shifts. Clear reason-code boundaries make hidden time loss visible fast enough to act the same shift.


Why ‘setup’ becomes the junk drawer for lost time

In many CNC job shops, “setup” is the most acceptable explanation when a machine isn’t cutting. It sounds like work. It feels unavoidable. And it avoids uncomfortable follow-up questions like: Why wasn’t the material staged? Why is QC backed up? Why is the program still being edited? That social reality is why setup becomes the junk drawer.


Multi-shift handoffs amplify the ambiguity. Second shift inherits a half-finished changeover and spends time searching for the correct jaws and the tooling cart. If that gets coded as “setup,” the delay gets pinned on the shift doing the hunting—not on the missing kitting/hand-off inputs that caused the wait. A clean idle reason code like “Waiting on Tooling/Crib” (or “Fixture/Jaws Not Available,” depending on your wording) prevents that time from being buried inside a setup label.


When idle is hidden as setup, utilization loss becomes invisible and unfixable. You can’t reduce “setup” if the biggest contributor is actually waiting. And you can’t recover capacity if the constraint never gets named. This is where the ERP vs. actual machine behavior gap shows up: the system may show a work order “in setup,” while the machine is physically stopped due to a missing input.


Misclassification also distorts capacity planning and quoting assumptions. If yesterday’s two-hour “setup” on a repeat job was really 45 minutes of changeover and 75 minutes of waiting on material or a program release, your planning team learns the wrong lesson. The shop keeps padding setup allowances, dispatching becomes reactive, and “we need another machine” starts sounding rational before you’ve eliminated hidden time loss.


Reason codes aren’t for blame—they’re for decision clarity. The point is to create a shared language so supervisors can resolve the same debate the same way on any shift. If you’re improving how you classify machine time, you’re improving the credibility of everything downstream, including machine utilization tracking software outputs and the day’s dispatch decisions.


Keeping your reason codes simple for operators is the first step to getting accurate information. If you're curious about how those simple taps on a tablet translate into your reporting, check out our deep dive on structuring machine breakdown downtime data and reason codes behind the scenes.


Practical boundary: what counts as true setup vs idle (shop-floor rules)

You don’t need a theory lesson to separate setup from idle. You need enforceable rules that survive real conditions—mixed fleet machines, different supervisors, and multiple shifts.


True setup (work)

True setup is the set of actions required to make the next part good: loading tools, setting offsets, probing, loading/verifying the program at the machine, fixture/jaw changes, first-piece steps, and in-process adjustments needed to establish a stable run condition. If the operator is actively performing tasks that advance the machine toward producing an acceptable part, that’s setup.


Idle (waiting)

Idle is a waiting state where the machine could be making parts if an input or resource were available. That includes waiting on material, waiting on QC sign-off, waiting on a programmer/CAM edits, waiting on the tool crib, waiting on dispatch clarification, or waiting because there’s no operator coverage.


Rule of thumb: if forward progress depends on an external constraint, it’s idle—even if it happens “during setup.” For example, an operator might have tools loaded and the machine is ready, but the program isn’t released yet. The waiting portion should not inflate setup performance metrics.


Split events (one stop, two truths)

One stoppage can contain both setup work and waiting. A common example: the operator does 20 minutes of fixture change and tool touch-offs, then waits 25 minutes for CAM to push an edit. Code the first part as setup and the second part as idle (“Waiting on Program/CAM”). This protects setup from being blamed for downstream constraints while making the constraint visible enough to escalate.


Define setup start/stop triggers

To keep multi-shift coding consistent, define setup boundaries in plain language. A practical trigger pair is: setup starts after the last good part of the prior job (or when the prior job is ended in the control) and ends when the first good part of the next job is produced and the machine is ready to continue running. If the machine is ready but cannot proceed due to an external dependency, the clock should be in idle.


Reason codes that prevent ‘hidden idle’ (a minimal code set)

The goal isn’t a perfect taxonomy. It’s a short list that operators will actually use—consistently—without slowing the floor. Most shops do better with 8–15 codes than with 40 codes and low compliance.


Setup-side codes (work to make the next part good)

  • Changeover/Tooling

  • Fixture/Jaw Change

  • Offset/Probing

  • First-Article/Prove-out

  • In-process Adjustment

Idle-side codes (waiting on a constraint)

  • Waiting on Material

  • Waiting on Program/CAM

  • Waiting on QC/Approval

  • Waiting on Tooling/Crib

  • No Operator/Break/Meeting

  • Dispatch/Traveler Confusion

Use “Unknown/Other” sparingly and review it daily. If “Unknown” becomes a top reason, it’s a signal your definitions are unclear or the workflow is breaking in a repeatable way you haven’t named yet.


The biggest compliance lever is timing: require codes at the time of stoppage, not end-of-shift memory. Manual, end-of-shift entry is where waiting time gets “rounded” into setup because it’s easier. If you’re formalizing stoppage capture, start with the operational baseline concepts in machine monitoring systems and then tighten the classification layer with setup vs idle rules.


Ambiguous situations: how to code the gray areas (with examples)

Most arguments come from the gray areas—events that feel like setup because they happen “around” setup, but are actually waiting on a constraint. The goal is not to police people; it’s to make the story consistent across machines and shifts.


A quick decision tree (use it on the floor)

  • Is the operator doing an action required to make the next part good? If yes, code Setup (choose the setup-side reason).

  • If no: could the machine run right now if a missing input/resource appeared? If yes, code Idle (choose the constraint reason).

  • If it’s both (work then waiting), split the event into two codes when possible.


Common gray-area mapping table

Ambiguous event

Setup or idle?

Reason code to use

Decision it supports

Second shift inherits half-changeover; operator searches for jaws/tooling cart

Idle (waiting), not setup work

Waiting on Tooling/Crib (or local “Fixture/Jaws Not Available”)

Fix kitting/handoff, not “setup speed” arguments

First-article approval bottleneck: machine is ready but waiting on QC sign-off

Idle once machine is ready to run

Waiting on QC/Approval

Escalate inspection priority or reroute QC that same shift

Program not released: tools/material loaded; waiting 25 minutes for CAM edits

Split: setup work + idle waiting

Setup: Changeover/Tooling; Idle: Waiting on Program/CAM

Protect setup performance; surface programming constraint in real time

Material shortage mid-shift: job is at the machine but stock isn’t cut/kitted

Idle (machine-ready but not runnable)

Waiting on Material

Trigger expediting/cutting/kitting instead of blaming setup

Tool breaks: operator is waiting for replacement from crib

Idle for the waiting component

Waiting on Tooling/Crib

Identify tool logistics/crib responsiveness as the constraint

Warm-up / power-on checks / waiting for air or coolant issues

Local policy; avoid burying facility constraints in setup

Often Idle (Other/Facility) or separate facility code if you allow it

Stops facilities problems from inflating setup history


Notice what the table is doing: it forces waiting to show up as waiting. For example, first-article inspection is a classic trap. Setup work may include probing and cutting the first piece, but once the machine is ready to continue, the stoppage becomes “Waiting on QC/Approval.” That one boundary changes the conversation from “setup is slow” to “inspection is gating throughput,” which is a decision you can act on immediately.


If you need a broader foundation for capturing stoppages and categorizing them consistently, pair these boundaries with a basic machine downtime tracking approach—then keep this article’s focus tight: setup vs idle separation.


How setup vs idle coding changes decisions the same day

Classification is only useful if it changes behavior quickly—within the shift, not in a weekly meeting. When setup and idle are separated, “what happened?” turns into “what do we do next?”


If setup is truly long, you can target standard work, kitting, and changeover process improvements (those improvement projects are real, but they’re separate from the measurement problem this article addresses). The key is that you’ll be improving actual setup work—not trying to “reduce setup” when the biggest component is waiting for material or a program release.


If idle is the issue, you can escalate the constraint immediately:


  • “Waiting on Material” triggers expediting, cutting, or a swap to the next runnable job.

  • “Waiting on QC/Approval” triggers reprioritizing inspection, splitting QC coverage, or moving first-article checks earlier.

  • “Waiting on Program/CAM” triggers an immediate programming queue decision instead of letting machines sit quietly.

Shift-to-shift comparisons also become fair. Instead of seeing “setup took longer on second shift,” you can see whether second shift did more true setup work or simply inherited more waiting: missing jaws, unclear dispatch, queued first-article sign-off, or operator coverage gaps. That reduces subjective accountability debates and increases schedule credibility.


Mid-shift diagnostic (fast test)

Pull the top three idle reasons by minutes for the current shift and ask one question: “Which of these can we remove before the end of the day?” If you can’t answer that quickly, the codes are probably too vague (or they’re being entered too late). If you can answer it, you’ve turned classification into capacity recovery—without buying another machine.


As you mature, interpretation support can help supervisors stay consistent across many machines. Tools like an AI Production Assistant can be useful for querying patterns (by shift, by reason, by machine family) so the team spends less time arguing about the report and more time removing constraints. The operational rule still comes first: separate work from waiting.


Implementation reality: getting consistent codes without slowing the floor

The best code list fails if it adds friction. Implementation has to respect multi-shift reality and keep entry simple enough that compliance stays high.


1) Pilot on a small, representative slice

Start with a two-week pilot on 3–5 machines across different families and shifts. Include at least one frequent-changeover machine and one “steady runner.” The goal is to uncover where your definitions break down (handoffs, first-article flow, program release timing), then tighten the wording before scaling.


2) Post a one-page coding standard at the cell

Put the rules where the decisions happen: a one-page “coding standard” with (a) setup vs idle boundary, (b) your short code list, and (c) two or three shop-specific examples like “waiting on QC after first-piece” or “tools loaded but program not released.” This reduces supervisor-by-supervisor interpretation drift.


3) Train supervisors to coach boundaries consistently

Your supervisors set the tone: “We code waiting as waiting.” Coaching should focus on repeatable decision rules, not second-guessing individuals. When the team sees the same situation coded the same way on first and second shift, trust in the data grows quickly.


4) Standardize top-level buckets even if departments differ

It’s fine if turning has slightly different setup-side codes than milling, but keep top-level meaning consistent: setup work vs idle waiting. That’s what makes cross-shift and cross-machine comparisons credible.


5) Audit “Unknown/Other” daily and refine definitions

If “Unknown/Other” shows up, treat it as a definition gap. Review it daily for a week, rewrite examples, and clarify start/stop triggers. The fix is usually the system—unclear standards, missing kitting, unclear dispatch—not the workforce.


Cost-wise, the main tradeoff is manual entry burden vs. near-real-time capture and auditability. If you’re evaluating what it would take to implement monitoring and reason-code capture without turning it into a big IT project, review expectations on the pricing page to frame rollout scope, then keep your internal focus on definitions and compliance.


If you want a quick diagnostic on whether your current “setup” bucket is hiding idle, schedule a short working session: bring one day of stoppages and we’ll apply the boundary rules to see where waiting is being mislabeled. schedule a demo.

Machine Tracking helps manufacturers understand what’s really happening on the shop floor—in real time. Our simple, plug-and-play devices connect to any machine and track uptime, downtime, and production without relying on manual data entry or complex systems.

 

From small job shops to growing production facilities, teams use Machine Tracking to spot lost time, improve utilization, and make better decisions during the shift—not after the fact.

At Machine Tracking, our DNA is to help manufacturing thrive in the U.S.

Matt Ulepic

Matt Ulepic

bottom of page