OEE: What Overall Equipment Effectiveness Really Tells You
Overall equipment effectiveness (OEE) multiplies Availability, Performance, and Quality into one score. Here is the ISO 22400-2 math, TEEP vs OOE worked examples, Six Big Losses mapped to PackML PLC states, and how to build a real-time OEE stack.

On this page

Overall equipment effectiveness (OEE) is the quantitative manufacturing discipline that measures how much of a machine's scheduled production time actually produces defect-free parts at the equipment's maximum sustainable speed. Standardized globally under ISO 22400-2:2014 and rooted in Seiichi Nakajima's Total Productive Maintenance (TPM) work at the Japan Institute of Plant Maintenance (JIPM), OEE multiplies three percentages, Availability, Performance, and Quality, into a single diagnostic ratio where 100% represents zero unplanned stops, zero speed loss, and zero scrap.
On a plant wallboard, a single OEE number is seductive and easy to manipulate. A factory manager can raise reported OEE from 62% to 79% in an afternoon without fixing a single machine, simply by reclassifying die changeovers as "planned downtime" or padding the ideal cycle time in the ERP routing table. Below is the engineering guide to measuring and improving OEE honestly: the exact mathematical formulations of OEE, OOE, and TEEP with worked examples across discrete and continuous lines; how the Six Big Losses map to ISA-TR88.00.02 PackML and SEMI E10 state models; how to detect sub-2-minute micro-stops at the edge; and how to architect a real-time OEE software stack from PLC registers to shift scorecards.
The short version
- The ISO 22400-2 multiplication: OEE = Availability × Performance × Quality, which mathematically collapses to Good Count × Ideal Cycle Time ÷ Planned Production Time. If the factor product and the direct ratio disagree, your downtime or cycle-time logic has a bug.
- Boundary defense via OOE and TEEP: OEE only judges active planned production time. Tracking OOE (including planned maintenance/changeovers) and TEEP (against all 24/7 calendar hours) stops teams from hiding changeover bloat outside the OEE denominator.
- Automated Six Big Losses attribution: Mapping PLC registers to ISA-TR88.00.02 PackML states (
Execute,Held,Suspended,Aborted) separates internal breakdowns from upstream starvation (Starved) and downstream blockages (Blocked) without biased paper logs. - High-frequency micro-stop capture: Minor stops under 120 seconds and 10% spindle feed-rate dial-backs often destroy more capacity than major breakdowns; catching them requires sub-second edge polling over OPC UA or MTConnect.
- Context-aware benchmarks: The classic 85% benchmark (
90% x 95% x 99%) applies to dedicated, long-run lines; high-mix discrete job shops running six setups a shift have fundamentally different availability physics than continuous chemical plants. - Execution integration: OEE is diagnostic telemetry that belongs inside or alongside your manufacturing execution system (MES), feeding breakdown events to predictive maintenance software and true net capacity back to production planning software.
Exact mathematical formulation: OEE vs OOE vs TEEP
To build software that calculates equipment effectiveness without rounding drift or denominator manipulation, you must first define the time hierarchy on the shop floor. Both ISO 22400-2:2014 and the semiconductor reliability standard SEMI E10 partition total calendar time into four nested operational buckets:
- Total Calendar Time (T_cal): All hours in the period (24 hours/day × 7 days = 168 hours/week, or 10,080 minutes).
- Scheduled Operations Time (T_sched): Calendar time minus unscheduled hours when the plant is closed, no crew is rostered, or there are no customer orders (
No Demand). - Planned Production Time (T_plan): Scheduled Operations Time minus Planned Downtime (scheduled preventive maintenance windows, statutory safety checks, and scheduled breaks where the line is intentionally shut down).
- Actual Run Time (T_run): Planned Production Time minus Unplanned Downtime (equipment breakdowns, tool failures, unplanned starvation, and setup/changeover time).
The three core OEE equations
Given Ideal Cycle Time (C_ideal) (the minimum time required to produce one unit at maximum sustainable rated speed), Total Count Produced (N_total), and Good Count Produced (N_good = N_total - N_scrap - N_rework):
That algebraic cancellation is the single best unit test in any OEE codebase. Notice how T_run and N_total cancel out in the final product, leaving Valuable Operating Time (N_good × C_ideal) divided by Planned Production Time (T_plan). If a dashboard reports A = 88%, P = 94%, Q = 98% (OEE = 81.1%), yet the machine produced fewer good parts than 0.811 × (T_plan / C_ideal), the software is misclassifying run time or mixing SKU cycle times across shifts.
Why you must compute OOE and TEEP alongside OEE
Because OEE uses T_plan as its denominator, any stop labeled "Planned" vanishes from Availability. To prevent teams from hiding 90-minute product changeovers or cleaning windows inside Planned Downtime, production platforms compute three parallel ratios:
- OEE (Overall Equipment Effectiveness): Denominator is Planned Production Time (T_plan). Judges execution when the line is scheduled to run.
- OOE (Overall Operations Effectiveness): Denominator is Scheduled Operations Time (T_sched), including planned maintenance, cleaning, and scheduled changeovers during manned shifts.
- TEEP (Total Effective Equipment Performance): Denominator is Total Calendar Time (T_cal) ($24/7/365$), revealing how much capacity sits in unscheduled shifts before buying new capital equipment.
Worked numerical comparison: high-mix discrete CNC cell vs continuous packaging line
Consider a 24-hour day (1,440 calendar minutes) across two industrial lines:
- Line A (High-Mix Discrete CNC Cell): Scheduled for two 8-hour shifts (T_sched = 960 min; 480 min unscheduled night shift), with 60 min of planned preventive maintenance (T_plan = 900 min). Runs 4 SKUs requiring 4 changeovers totaling 140 min plus 55 min of unplanned hydraulic/tool-changer faults (T_run = 705 min). At C_ideal = 1.50 min/part (theoretical output = 470 parts), it produces 418 parts due to micro-stops and feed-rate dial-backs, and scraps 11 parts (N_good = 407).
- Line B (High-Speed Rotary Bottling Line): Scheduled across three 8-hour shifts (T_sched = 1,440 min), with 90 min of planned CIP sanitation (T_plan = 1,350 min). Loses 45 min to labeler jams and 30 min to one changeover (T_run = 1,275 min). At 400 bottles/min (C_ideal = 0.0025 min), theoretical output is 510,000 bottles, actual output is 482,000 bottles, and vision rejects are $3,800$ (N_good = 478,200).
Line A posts 67.8% OEE but only 42.4% TEEP. If sales demands 35% more machined housings next quarter, the plant does not need a second $650,000 CNC center; adding a third shift and cutting setup time by 40% via SMED unlocks over 50% more output on the existing spindle.
Mapping the Six Big Losses to PLC registers and ISA-TR88.00.02 (PackML) states
In JIPM's Total Productive Maintenance framework, the three OEE factors map to Six Big Losses. The software engineering job is capturing these six buckets directly from PLC state transitions instead of operator clipboards.
ISA-TR88.00.02 (PackML) standardizes a 17-state machine (Stopped, Resetting, Idle, Starting, Execute, Completing, Complete, Holding, Held, Unholding, Suspending, Suspended, Unsuspending, Aborting, Aborted, Clearing, plus mode tags like Production, Maintenance, and Changeover). Connecting over OPC UA or MTConnect maps each loss to deterministic PLC signals:
- Equipment breakdowns (Availability Loss #1): Mode is
Production(UnitModeCurrent == 1) and state drops fromExecute(6) toAborted(9) orHeld(11) with a latching PLC fault integer (FaultCode > 0) for ≥ 120 seconds. The OEE service timestamps the drop to the millisecond, logs the PLC first-out fault code, and opens a reactive ticket in the CMMS software when technician dispatch is required. - Setup and changeovers (Availability Loss #2): Operator scans the next work order in the MES or switches PLC mode to
Changeover(UnitModeCurrent == 3). The timer runs from the last good part of Order A to the first verified good part of Order B at rated speed, comparing actual setup minutes against the production planning software changeover matrix. - Idling and micro-stops (Performance Loss #1): State enters
Suspended(5, external material starvation or downstream backup) orHeld(11) for 3 to 119 seconds, or cycle inter-arrival time (Δ t = t_n - t_n-1) exceeds 1.5 × C_ideal. Because no operator logs 12-second stops on a tablet, the edge agent attributes micro-stops automatically via PLC starvation/blockage bits (InfeedStarved_Bit,OutfeedBlocked_Bit). - Reduced speed cycles (Performance Loss #2): Machine stays continuously in
Execute(6), but rolling median cycle time C_actual exceeds C_ideal or the MTConnectpath_feedrate_overridetag reads< 100%, isolating speed dial-backs from jam stops. - Steady-state process defects (Quality Loss #1): Increments on
RejectCounter_DINTfrom an inline checkweigher, vision camera, or test stand, or a part scanned asSCRAP/REWORKin quality management software. In strict ISO 22400-2 math, reworked parts fail First-Pass Yield (FPY) and penalize Quality on their first pass. - Startup and warmup scrap (Quality Loss #2): Rejects accumulated during
First-Article Qualificationor the initial warmup shots while barrel heaters or web tensioners stabilize after a changeover.
Industry benchmarks: why 85% OEE is a trap without process context
Executive presentations routinely cite 85% OEE (90% Availability x 95% Performance x 99% Quality) as "World Class." Nakajima established that benchmark in the 1970s for high-volume automotive component lines with minimal changeover variety.
Applying an 85% target blindly to a high-mix job shop creates immediate dysfunctions: supervisors batch easy parts into giant runs to dodge setups, reject urgent small-lot customer orders, and inflate warehouse WIP while shipment dates slip.
Because OEE multiplies three ratios, compounding is unforgiving: if Availability, Performance, and Quality each sit at 80%, total OEE is 0.80^3 = 51.2%.
Bottleneck theory and line-level OEE: never average serial machines
A pervasive mistake in multi-stage factories is computing OEE for five serial stations (Station 1 to Station 5) and averaging them to report "Line OEE."
In an unbuffered five-machine line, whenever Station 3 (the bottleneck ultrasonic welder) faults for 5 minutes, Stations 1 and 2 soon stop in a Blocked state and Stations 4 and 5 stop in a Starved state. Charging those 5 minutes against all five stations turns one 5-minute breakdown into 25 machine-minutes of loss. Conversely, raising OEE on Station 1 (a non-bottleneck with 30% excess capacity) from 75% to 90% yields zero extra finished units at pack-out; it simply overflows the WIP buffer.
Following Goldratt's Theory of Constraints and NIST Smart Manufacturing line-modeling principles, multi-machine lines require two rules:
- Measure Line OEE at the Pacemaker / Bottleneck Station: Compute line output at the constraint (or final pack-out) using the bottleneck's ideal cycle time C_bottleneck.
- Propagate Starvation and Blockage Causality: Use PackML's
StarvedandBlockedstates to trace stop cascades back to the upstream or downstream station that enteredHeldorAbortedfirst, directing buffer design and predictive maintenance software to the true constraint.
Architecting a real-time OEE software stack: from PLC tags to shift scorecards
When we engineer industrial telemetry platforms at Idealogic, we focus on three problems off-the-shelf dashboard widgets miss: high-frequency edge pulse deduplication, stream-table context joins, and retroactive downtime splitting.
1. Edge pulse accumulators and cycle-delta histograms
Never count parts by polling a boolean PhotoEye_Bit from the cloud every two seconds; on a 180-pack/min line (333 ms/unit), HTTP polling misses 80% of parts and double-counts vibrating cartons. Instead, the PLC increments a hardware-debounced 32-bit unsigned accumulator (GoodPartCount_UDINT, ScrapPartCount_UDINT). The local edge gateway polls via OPC UA or MQTT Sparkplug B every 250 ms, computing Δ N = (Count_t - Count_t-1) \pmod2^32 to survive rollovers and logging exact millisecond cycle deltas (Δ t_cycle) to separate speed drift from micro-stops.
2. Time-series storage and ERP/MES context joins
Raw PLC states have no meaning until joined with Shift Calendars (active shift vs break vs unscheduled hours) and Work Order Routing Context (active SKU and C_ideal from the MES or manufacturing ERP). We land state intervals and 1-minute counter rollups in TimescaleDB or InfluxDB, using continuous aggregates to serve shift, line, and SKU scorecards in under 100ms.
3. Retroactive operator downtime splitting
When a line stops from 10:12 to 10:34 (22 min), a technician often arrives at 10:40 to split the event: 8 minutes waiting for a forklift (Material Handling) and 14 minutes replacing a shear-pin (Mechanical Breakdown). Our ledger models downtime as mutable intervals ([10:12, 10:20) and [10:20, 10:34)) backed by an append-only audit trail that recalculates shift OEE asynchronously on edit.
When plants switch from shift-end Excel sheets to direct PLC telemetry over OPC UA, their reported OEE almost always drops by 12 to 18 percentage points on day one. Plant managers panic until they realize nothing on the floor got worse; the measurement simply stopped lying about micro-stops and changeover overruns. You cannot recover hidden capacity until your software refuses to hide it.
In our AI industrial reporting and analytics system, we built high-throughput ingestion pipelines that consolidate raw operational telemetry and shift records into verifiable performance analytics without manual spreadsheet stitching.
Four ways OEE gets gamed (and how software prevents them)
Even with automated PLC connections, OEE implementations fail when the governance rules allow subtle manipulation. Lock down four vectors in the data model:
- Padding Ideal Cycle Time (C_ideal): If a stamping press sustainably runs at 60 strokes per minute (1.0 s/part) but the ERP routing holds a padded finance standard of 42 strokes per minute (1.43 s/part), the machine can lose 25% of its shift to micro-stops and still report 107% Performance. Software fix: Separate the Finance Standard Cost Cycle Time from the Engineering OEE Ideal Cycle Time, setting C_ideal automatically to the 95th-percentile sustained speed (p5 cycle duration) demonstrated by that machine-SKU pair over the last 90 days.
- Hiding changeover overruns in Planned Downtime: If a mold changeover is budgeted for 30 minutes and takes 75 minutes, deducting all 75 minutes from Planned Production Time (T_plan) erases a 45-minute Availability loss from the scoreboard. Software fix: Keep all product changeovers inside T_plan as an Availability loss (standard JIPM TPM), or cap planned setup deductions strictly at the standard SMED allowance and charge every minute past the timer to Unplanned Setup Overrun.
- The 200-reason-code dropdown trap: Giving operators a four-level nested tree of 250 downtime reason codes guarantees they will tap the top item on the list (
Mechanical - Other) every time just to clear the prompt and restart the line. Software fix: Capture equipment fault codes automatically from the PLC first-out register and limit human HMI selection to 8 to 12 high-contrast buttons tailored to that specific work center. - Chasing OEE at the expense of Schedule Adherence: Running 50,000 units of one easy SKU inflates OEE by avoiding setups while starving manufacturing inventory software of the dozen other SKUs required for Friday customer shipments. Software fix: Pair OEE on every scorecard with Schedule Adherence, First-Pass Yield (FPY), and SMRP-standard MTBF (Mean Time Between Failures) and MTTR (Mean Time To Repair).
Standalone OEE SaaS vs integrated MES telemetry: build vs buy
Driving continuous improvement from OEE telemetry
Once honest PLC-driven OEE runs for four weeks, the loss Pareto tells process engineering exactly where to act:
- Digital SMED for setups: Compare timestamped changeover phases across shifts and display live internal vs external setup countdowns on overhead Andon boards, routinely cutting setup losses by 30% to 50% within one quarter.
- Micro-stop Pareto hunting: Rank minor stops by cumulative weekly minutes lost rather than single-event length; a feeder track that pauses for 18 seconds forty times a shift costs 12 hours of bottleneck capacity per week and is often solved by a simple guide-rail adjustment.
- Inline SPC quality gates: Tie dimensional gauges and vision cameras to quality management software and PLM software tolerance tables so tool wear is caught via C_pk drift before scrap fills the bin.
Whether you need edge-to-cloud OEE across brownfield machinery or a complete smart factory architecture combining custom software development and AI software development, our manufacturing software development team builds telemetry systems that both operators and executives trust.

CTO and Co-founder at Idealogic. Directing engineering, systems architecture, security, and full-stack delivery across web, mobile, and blockchain.
Frequently asked questions
Overall Equipment Effectiveness (OEE) is the standard manufacturing metric defined in ISO 22400-2 that measures the percentage of planned production time converted into defect-free output at ideal speed. It is calculated by multiplying three ratios: Availability (Actual Run Time divided by Planned Production Time), Performance (Actual Output multiplied by Ideal Cycle Time, divided by Run Time), and Quality (Good Count divided by Total Produced Count).
The three metrics differ only in the time denominator used to calculate Availability. OEE divides Run Time by Planned Production Time, excluding unscheduled shifts and planned maintenance. Overall Operations Effectiveness (OOE) divides Run Time by Total Scheduled Shift Time, including planned maintenance and changeovers inside the shift. Total Effective Equipment Performance (TEEP) divides Run Time by All Calendar Time (24 hours a day, 365 days a year), revealing hidden unscheduled capacity.
Formalized by Seiichi Nakajima at the Japan Institute of Plant Maintenance (JIPM), the Six Big Losses group equipment waste into three pairs matching the OEE factors. Unplanned breakdowns and setup/changeover adjustments reduce Availability. Idling/minor stops (micro-stops under two minutes) and reduced speed cycles reduce Performance. Startup/warmup rejects after recipe changes and steady-state in-process defects reduce Quality.
The widely cited 85% world-class OEE benchmark (90% Availability x 95% Performance x 99% Quality) originated in high-volume automotive component lines with long runs. Continuous process lines in chemicals, paper, or beverage bottling routinely exceed 90% OEE because changeovers are rare. Median discrete manufacturers score around 60%, while high-mix job shops doing four to eight setups per shift often run efficiently at 50% to 58%.
Manual clipboard and spreadsheet OEE logs typically overstate true performance by 10 to 20 percentage points. Operators do not record 15-second sensor jams or micro-stops, memory smooths rough shifts into round 15-minute blocks at the end of the day, and supervisors reclassify slow changeovers as planned downtime. Automated PLC telemetry captures every sub-second state change and cycle timestamp, exposing the true baseline.
ISA-TR88.00.02 (PackML) standardizes seventeen machine states such as Execute, Starved, Blocked, Held, Suspended, Changeover, and Aborted inside the PLC. By reading the active PackML state and first-out fault register over OPC UA, OEE software distinguishes an internal equipment breakdown from upstream material starvation or downstream conveyor blockage automatically, asking the operator for a reason code only when human context is required.
Legitimate OEE cannot exceed 100%. Availability and Quality are bounded at 100% by definition, so any reading over 100% comes from the Performance factor exceeding 1.0. This happens when the Ideal Cycle Time stored in the ERP routing is padded or slower than the machine's true fastest sustainable speed, or when batch counter bounce records phantom part pulses. A Performance score above 100% indicates a master-data calibration error.
Standalone cloud OEE trackers work well for quick visibility across 5 to 15 simple machines that only need cycle counters and an operator tablet. Building OEE into a unified manufacturing data platform or custom MES wins when you need recipe-dependent ideal cycle times from the ERP, automated PackML state correlation across multi-machine lines, zero per-machine SaaS fees across dozens of assets, and closed-loop triggers to maintenance and scheduling.
More from the journal

PLM Software: BOMs, Engineering Change, Integration
PLM software manages the product definition: CAD data, the engineering and manufacturing BOMs, and engineering change. Here is what it is, how the eBOM becomes the mBOM, how change flows through ECR-ECO-ECN, where the ERP boundary sits, and when to build instead of buy.

Manufacturing Inventory Software: WIP to Valuation
Manufacturing inventory software is not a retail stock tracker: it follows material through raw, work-in-process, and finished-goods states driven by the bill of materials. Here are the states, backflushing, traceability, valuation, and when to build instead of buy.

Manufacturing ERP: Modules, Integration, Build vs Buy
Manufacturing ERP is the system of record that ties planning, the shop floor, inventory, and costing together. Here are the modules, how it integrates with MES and machines, discrete vs process differences, and when to build instead of buy.