top of page

Essential Utilization Data Fields for Job Shops


Make utilization trustworthy by logging every minute as Run, Idle, or Down. Stop debating numbers and recover capacity before buying new machines

Essential Utilization Data Fields for Job Shops

Most utilization projects in CNC job shops don’t fail because the math is hard. They fail because the data model quietly turns into an “ERP integration,” a reason-code taxonomy debate, or another spreadsheet that can’t be defended when shift leads disagree. If you’re running 10–50 machines across multiple shifts, you don’t need more fields—you need the minimum set that makes time loss visible, consistent, and actionable during the shift.


The goal is simple: explain, in plain operational terms, which utilization data fields are essential to calculate utilization from real machine behavior—without turning this into an OEE initiative or an IT project.


TL;DR — Essential utilization data fields for job shops

  • You can calculate defensible utilization with three states only: Run, Idle, Down.

  • State changes must be time-stamped (start/end) or you can’t audit the totals.

  • Pick a denominator (planned production time, staffed time, or 24/7) and keep it consistent.

  • Machine_ID must be unique and stable; aliases create bad rollups.

  • Add shift/calendar context so “Shift 2 vs Shift 1” comparisons don’t require manual slicing.

  • Require a Down reason only when the machine is truly unavailable to run.

  • Don’t use ERP schedule or standard cycle time as a proxy for runtime.


Key takeaway Utilization becomes trustworthy when it’s treated as time accounting: every minute in your chosen denominator must land in Run, Idle, or Down with consistent definitions across shifts. Once you can separate “available but waiting” (Idle) from “not capable to run” (Down), the shop stops arguing about the number and starts recovering capacity before spending on more machines.


The only utilization question that matters: where did the time go?

Utilization is a time accounting problem before it’s a reporting problem. If your data can’t answer “where did the time go?” at the machine level, the output will always feel debatable—especially in multi-shift shops where different people classify the same stop differently.


That’s why job shops often end up with conflicting utilization numbers: an ERP says the machine was “scheduled,” a spreadsheet says it was “busy,” and the “green light” tells a simplified story that doesn’t match what supervisors saw. Each source is measuring a different thing (plan, perception, or a signal), so the numbers diverge.


The fix is not a bigger data model—it’s a clear denominator and consistent rules. Before you calculate anything, explicitly define what time you’re dividing by: planned production time (recommended for job shops), staffed time, or true 24/7 calendar time. Any of these can be valid as long as you use the same denominator across machines, shifts, and weeks; otherwise you create “argument metrics” that change depending on who runs the report.


“Defensible” utilization means you can audit it: for a given machine and time window, every minute is accounted for, the definitions don’t change by supervisor, and the results can be reproduced next week without reinterpreting notes. If you want broader context on why this approach works operationally (without overcomplicating it), see machine utilization tracking software.


The 3 essential machine states (Run / Idle / Down) — with job-shop definitions

You only need three states to calculate utilization. The hard part is defining them so the same event doesn’t get classified differently across shifts or machines.


Run (the machine is executing an automatic cycle)

Run should mean “automatic cycle is in progress.” In most job shops, that maps best to cycle start/cycle stop rather than “spindle on” (which can stay on during non-productive moments) or a stack light state that’s too generic. Decide up front what you will include: cutting and air-cut are typically both “Run” because they consume machine time and block capacity, even if they’re not adding value. The key is consistency—pick a definition you can apply across your mixed fleet.


Idle (available-to-run, but not cycling)

Idle is the “in-between” time when the machine is capable of running but isn’t in automatic cycle: setups, load/unload, gauging and probing, waiting on an operator, waiting on material, waiting on first-article approval, program edits, or staging issues. Idle is where a lot of recoverable capacity hides because it’s often treated as “normal” and only remembered at end-of-shift.


Down (not available to run)

Down should mean “the machine is not capable of producing if you wanted it to.” That includes faults/alarms that stop production, maintenance work, e-stop conditions, and events like a broken tool only if it halts production and requires restoration before the machine can run again. Keep it crisp: Down is not “we weren’t running it”; Down is “we couldn’t run it.”


A practical rule of thumb: Idle is a production workflow issue (supervisors, leads, scheduling, staging). Down is a restoration-to-capability issue (maintenance, troubleshooting, repair). This separation is the backbone of machine downtime tracking that doesn’t devolve into finger-pointing.


Essential utilization data fields (minimum viable schema)

With the three states defined, the essential utilization data fields are straightforward. This is the minimum viable schema that lets you compute utilization from time-in-state and defend it in a production meeting.


1) Machine_ID (unique and stable)

You need a unique identifier that doesn’t change with nicknames (“Doosan Lathe,” “Lathe #2,” “NLX”) or physical moves. If Machine_ID isn’t stable, rollups get corrupted: a month of “good utilization” might actually be two different machines merged, or one machine split into two records.


2) State (Run / Idle / Down)

This is your single source of truth for time allocation. Don’t start with 12 categories. Start with three states that everyone can learn, apply, and audit across machines with different controls and different operators.


3) State_start_timestamp and State_end_timestamp (or event timestamp + next event)

Timestamps make utilization auditable. Without them, you’re relying on memory and end-of-shift narratives. You can store explicit start/end times, or store an “event time” for each state change and infer the end time from the next event. Either way, you need a continuous timeline per machine.


4) Shift/calendar context (shift ID or business calendar)

Multi-shift comparisons break down when people manually slice time windows. A simple shift ID (or a calendar that defines planned production windows, breaks, and weekends) lets you compare Shift 1 to Shift 2 consistently and prevents “we measured different hours” arguments.


5) Down_reason (required only when state = Down; optional for Idle)

Add accountability without creating operator burden: require a reason only when the state is Down. Idle reasons are tempting, but they often turn into a long dropdown that nobody uses consistently. A lightweight Down reason field helps you separate chronic maintenance issues from workflow delays and keeps “operator opportunity” conversations honest.


If you need a broader overview of approaches that capture these states across modern and legacy controls, keep that as a secondary decision: machine monitoring systems.


How these fields roll up into true utilization (with a simple worked example)

Once you have Machine_ID, State, timestamps, and a clear calendar, the utilization calculation is simply state-based time accounting.


A common job-shop definition is:

Utilization = Run Time / Planned Production Time. (Planned production time is the denominator you define—often staffed shift time minus planned breaks.)


Worked example: one machine, one 10-hour shift

Assume a 10-hour staffed shift where planned breaks total 30–60 minutes, and you exclude those breaks from planned production time. For simplicity, use a planned production time denominator of 9.5 hours (hypothetical example).

Over that window, your time-in-state totals from timestamps are:

Run = 6.0 hours, Idle = 2.5 hours, Down = 1.0 hour.

These add up to 9.5 hours, which passes the basic audit check.


Utilization = 6.0 / 9.5. The exact decimal is less important than the fact you can defend it: every minute of the denominator is assigned to Run, Idle, or Down with timestamps.


Why “Idle vs Down” changes the conversation

In the example above, the supervisor action is mostly in Idle (staging, approvals, operator coverage), while maintenance action is in Down (restoring capability). If you lump Down into Idle, you’ll aim the fix at the wrong team and create friction between production and maintenance.


Quick validation checks (fast, repeatable)

  • Totals match the denominator (no missing gaps in the timeline).

  • No overlapping intervals for the same machine.

  • State definitions are identical across shifts (same rulebook).

  • Down events have a reason captured (even a simple one) while Idle does not require heavy coding.


Common data field mistakes that quietly destroy utilization accuracy

These are the failure modes that make utilization look “fine” until you try to act on it—and then everyone disputes the number.


Using ERP scheduled time or standard cycle time as a proxy for run time. Scheduling answers “what should happen.” Utilization answers “what did happen.” When you use schedule adherence as runtime, the shop can look fully utilized while machines spend long stretches waiting on setups, QA, or material.


No timestamps (end-of-shift entry) turns utilization into a story. If operators or leads log time at the end of the shift, the entries compress reality—especially interruptions and waiting. You can’t see patterns like “Idle clustered in the first 60–90 minutes” or “approval delays every afternoon,” because the record has no event timing.


Over-granular reason codes too early. A long dropdown feels precise, but it usually collapses data quality: people stop choosing, choose the first item, or choose different codes for the same issue. Start with three states plus a small Down reason set later (not on day one).


Treating every stop as downtime. If every pause becomes Down, you inflate maintenance time and hide workflow waste that belongs in Idle. The result is a misleading narrative: “maintenance is killing us,” when the bigger opportunity is approvals, staging, and coverage.


Mixing denominators across reports. One dashboard uses staffed time, another uses planned production time, another uses 24/7 calendar. The shop ends up debating which number is “real” instead of debating which loss is biggest. Pick one denominator for decision-making and stick to it.


Two shop-floor scenarios: what you can decide faster with just these fields

Minimal fields aren’t about “less data.” They’re about faster decisions, because the information is consistent enough to trust.


Scenario 1: shift comparison that exposes hidden Idle

Second shift reports the same parts output as first shift, but utilization looks higher on paper because time is logged at end of shift. When you capture near real-time Run/Idle/Down with timestamps and shift context, you see the difference: extended Idle clustered around setup, waiting on tool presetting, and waiting on first-article approval. The output is similar, but the path to it isn’t—and that matters for scalability.


With only these fields, a supervisor can respond the same day: stage the next job earlier, align QA coverage to first-article windows, or move a floater to the machines where Idle is accumulating instead of guessing based on who is loudest.


Scenario 2: “not running” that isn’t an operator issue

A CNC shows “not running” for long stretches; without a distinct Down state and a lightweight Down reason, maintenance time is incorrectly lumped into Idle. That masks repeat failures and inflates “operator opportunity” conversations. When Down is separated and tagged with a simple reason (fault/repair, waiting on parts, planned maintenance, etc.), chronic issues become visible without needing a complex code list.


Owners can use the same weekly rollup to make calmer decisions: whether overtime is covering for workflow loss, whether quoting risk is tied to certain machines, and whether a capital request is justified—or whether you should first recover capacity by reducing Idle and stabilizing Down. If you want help interpreting patterns without adding reporting overhead, that’s where an AI Production Assistant can be useful as a second step, after the core fields are solid.


If you add anything beyond the essentials, add it in this order

Scope creep is the enemy of adoption. If you expand beyond the essentials, do it in a controlled sequence so you don’t increase burden before you increase decision value.


Step 1: confirm state accuracy and timestamps

Before you add new fields, verify that Run/Idle/Down is being assigned consistently and that state changes are time-stamped without gaps. If your timeline can’t reconcile to the denominator, extra categories will only multiply confusion.


Step 2: add a small Down reason set (5–8 max)

Keep reasons aligned to who can act: maintenance, tooling, or operations. If the code list is longer than a lead can remember, it won’t be used consistently. Add depth only after the shop is using the basic model weekly without debate.


Step 3: add job/operation context only if it answers a decision

Add job, part, or operation context only when it resolves a specific question such as: “Which jobs drive the longest Idle during setup?” or “Which programs correlate with frequent Down events?” If you can’t name the decision the field supports, don’t collect it.


Stop conditions: when fields add burden without adding clarity

Stop adding fields when operators spend more time categorizing than acting, or when definitions start changing by shift. A minimal, consistent model that drives action will beat a detailed model that no one trusts.


You don't need a dedicated IT guy to get real-time visibility, you just need a system that captures the right signals automatically. To see the actual architecture of how this works, read our technical breakdown on manufacturing downtime tracking data fields.


If you’re evaluating implementation effort and want a straightforward way to frame cost without getting buried in “platform” complexity, review pricing in the context of how quickly you can get trustworthy Run/Idle/Down time on a mixed fleet.


A practical next step is to validate your definitions and denominator on a small subset of pacer machines (the ones that gate shipments). If you want to pressure-test your field list and see what “defensible utilization” looks like on your actual shifts and machines, you can 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