How to Calculate OEE: Formula, Worked Example, and PLC Data Sources
How to calculate OEE step by step — the Availability x Performance x Quality formula, a fully worked example, world-class benchmarks, and how to pull OEE from PLC data.
OEE = Availability × Performance × Quality
That single equation captures the productive efficiency of any piece of equipment. Each factor is a ratio between 0 and 1 (or 0% and 100%), so an OEE of 1.0 means the machine ran at full speed, for the full available time, producing only good parts — a theoretical ceiling almost no real production environment reaches. Everything below 1.0 represents recoverable loss.
What Is OEE and Why Does It Matter?
Overall Equipment Effectiveness (OEE) is the gold-standard manufacturing KPI for measuring how efficiently equipment is used relative to its full potential. Developed within the Total Productive Maintenance (TPM) framework by Seiichi Nakajima in the 1980s, OEE has become the universal language of production efficiency because it simultaneously captures three distinct categories of loss — downtime, speed reduction, and quality defects — in one normalized score.
For a deeper background on the metric itself, see our article on what is OEE before working through the calculation steps below.
OEE matters at every level of the plant:
- Operators use it to see the immediate impact of a machine stop or a speed reduction.
- Maintenance teams use it to justify TPM investments and track improvement over time.
- Plant managers use it to compare performance across lines or shifts.
- Finance teams use it to translate production losses into lost revenue.
A one-point improvement in OEE on a high-throughput line can represent hundreds of thousands of dollars in recovered capacity annually — without spending a cent on capital equipment.
Try it: skip the spreadsheet — the free OEE Calculator computes Availability, Performance, Quality, and your OEE score instantly.
The OEE Formula
The full OEE formula is:
OEE = Availability × Performance × Quality
Each factor is calculated independently, then the three are multiplied together.
| Factor | Numerator | Denominator |
|---|---|---|
| Availability | Run Time | Planned Production Time |
| Performance | Ideal Cycle Time × Total Count | Run Time |
| Quality | Good Count | Total Count |
All three factors must use consistent time units. Mixing minutes and hours will produce incorrect results.
Calculating Availability
Availability measures the percentage of planned production time during which the equipment was actually running.
Formula:
Availability = Run Time ÷ Planned Production Time
Key terms:
- Planned Production Time — The total scheduled time minus planned stops (scheduled maintenance, breaks, shift changeovers, and any other planned downtime that is excluded from the OEE calculation by your facility's policy).
- Stop Time — Unplanned downtime: equipment failures, material shortages, unplanned changeovers, and other unscheduled stops.
- Run Time — Planned Production Time minus Stop Time.
Example:
A shift is 8 hours (480 minutes). Planned breaks total 30 minutes, so Planned Production Time = 450 minutes. During the shift the line suffered two unplanned stops totaling 60 minutes. Therefore:
- Run Time = 450 − 60 = 390 minutes
- Availability = 390 ÷ 450 = 0.867 (86.7%)
Note: Scheduled breaks and planned maintenance are excluded from Planned Production Time in most OEE implementations — they are not losses OEE is meant to measure. Only unplanned downtime reduces Availability.
Calculating Performance
Performance measures whether the equipment ran at its designed speed during the time it was actually running.
Formula:
Performance = (Ideal Cycle Time × Total Count) ÷ Run Time
Alternatively, using production rate:
Performance = (Total Count ÷ Run Time) ÷ Ideal Run Rate
Key terms:
- Ideal Cycle Time — The theoretical minimum time required to produce one unit at full speed (nameplate speed). This is a design specification, not an observed average.
- Total Count — All units produced during Run Time, both good and defective.
- Run Time — Same value used in the Availability calculation.
Example (continuing from above):
The machine's nameplate rate is 60 units per minute (Ideal Cycle Time = 1/60 min per unit = 0.01667 min/unit). During the 390 minutes of Run Time, 20,000 units were produced.
- Numerator: 0.01667 × 20,000 = 333.3 minutes
- Performance = 333.3 ÷ 390 = 0.855 (85.5%)
A Performance below 100% means the machine ran slower than its ideal rate for at least part of the run — caused by minor stops, reduced speed settings, or operator adjustments.
Important: Performance can technically exceed 100% if the machine runs faster than its nameplate speed. Most OEE implementations cap Performance at 100% to prevent artificially inflated scores.
Calculating Quality
Quality measures the proportion of total parts produced that meet specification on the first pass.
Formula:
Quality = Good Count ÷ Total Count
Key terms:
- Good Count — Units that pass inspection on first pass, with no rework required.
- Total Count — All units produced, including defects and units requiring rework.
- Reject Count — Total Count minus Good Count (defects + rework).
Example (continuing from above):
Of the 20,000 units produced, 500 were rejected (defects or rework).
- Good Count = 20,000 − 500 = 19,500
- Quality = 19,500 ÷ 20,000 = 0.975 (97.5%)
Fully Worked OEE Calculation Example
Pulling all three factors together:
| Parameter | Value |
|---|---|
| Shift duration | 480 min |
| Planned breaks | 30 min |
| Planned Production Time | 450 min |
| Unplanned downtime | 60 min |
| Run Time | 390 min |
| Ideal Cycle Time | 0.01667 min/unit |
| Total Count | 20,000 units |
| Reject Count | 500 units |
| Good Count | 19,500 units |
Step 1 — Availability: 390 ÷ 450 = 0.867
Step 2 — Performance: (0.01667 × 20,000) ÷ 390 = 333.3 ÷ 390 = 0.855
Step 3 — Quality: 19,500 ÷ 20,000 = 0.975
OEE = 0.867 × 0.855 × 0.975 = 0.723 (72.3%)
This result is solidly above the typical average for discrete manufacturing (around 40-60%) and approaching — but not yet at — world-class level.
What Is a Good OEE Score?
OEE benchmarks are well established across industry, though the right target depends on your process type, product mix, and maturity level.
| OEE Score | Classification | What It Means |
|---|---|---|
| Below 40% | Poor | Significant losses across one or more factors; immediate improvement opportunity |
| 40–60% | Typical | Common starting point for plants new to OEE measurement |
| 60–75% | Fair | Meaningful improvement underway; one or two factors still dragging the score |
| 75–85% | Good | Consistent performance; approaching world-class in many industries |
| 85%+ | World-Class | Industry benchmark set by JIPM (Japan Institute of Plant Maintenance); sustained at this level only with mature TPM programs |
85% is the widely cited world-class target, but it was originally defined for high-volume discrete manufacturing with low product mix. For high-mix, low-volume environments or batch processes, a realistic world-class target may be lower — some process industries cite 65% as excellent.
Context matters:
- A facility achieving 60% OEE and improving consistently is outperforming one that reports 80% but has stalled.
- OEE is most valuable as a trend line, not a snapshot.
- Benchmarking against your own historical baseline is more actionable than benchmarking against industry averages.
The Six Big Losses
The OEE framework maps directly onto six categories of production loss known as the Six Big Losses. Understanding which category is driving your OEE reduction points directly to the right countermeasure.
Availability Losses
-
Unplanned Stops (Equipment Failures) — Breakdowns, faults, and unscheduled maintenance events. The most visible and often largest single loss. Addressed through preventive and predictive maintenance from PLC data.
-
Setup and Adjustment — Time lost to changeovers, product transitions, tooling changes, and equipment warm-up. Addressed through SMED (Single-Minute Exchange of Die) methodology.
Performance Losses
-
Minor Stops — Brief interruptions (typically under 5 minutes) that do not trigger a full maintenance call: jams, misfeeds, sensor faults, operator interventions. Cumulatively significant — often larger than major breakdowns over a full shift.
-
Reduced Speed — Equipment running below its ideal (nameplate) rate due to operator adjustments, material variation, wear, or deliberate de-rating. Difficult to detect without automated cycle-time monitoring.
Quality Losses
-
Process Defects — Scrap and rework produced during stable production. Directly reduces the Quality factor.
-
Startup Rejects — Defective parts produced during warmup, changeover, or after an equipment stop before stable production is re-established.
Tracking which of these six categories contributes most to your OEE loss is essential for prioritizing improvement efforts. Integrating this data into a manufacturing execution system enables loss categorization at the shift or event level.
Calculate OEE from PLC Data
This is the section most OEE resources skip — and it is where automation engineers can add the most value.
Manual OEE collection (paper logs, operator entry) introduces reporting lag, subjective categorization, and systematic under-reporting of minor stops. Pulling the three OEE factors directly from PLC tags eliminates these problems and enables real-time OEE dashboards.
Here is how each factor maps to the automation layer.
Availability from Machine-State Bits
Most PLCs maintain a machine state — a word or set of bits indicating whether the equipment is running, faulted, in changeover, or idle. On Allen-Bradley ControlLogix systems these are typically stored as DINT or BOOL tags; on Siemens S7 systems they appear as data block variables.
Tag mapping for Availability:
| PLC Tag | Description | OEE Use |
|---|---|---|
Machine.Running (BOOL) |
TRUE when production is active | Accumulate into Run Time |
Machine.Faulted (BOOL) |
TRUE when an unplanned stop is active | Accumulate into Stop Time |
Machine.PlannedStop (BOOL) |
TRUE during scheduled breaks/maintenance | Exclude from Planned Production Time |
Shift.PlannedTime_min (DINT) |
Configured planned production time per shift | Denominator for Availability |
A simple ladder logic or structured text accumulator samples Machine.Running on a 1-second scan and increments a RunTime_Accum counter. At shift end:
Availability = RunTime_Accum / Shift.PlannedTime_min
For IIoT-connected systems, these tags are typically published over OPC UA or MQTT to a historian or edge gateway that computes OEE in real time.
Performance from a Counter and Cycle-Time Tag
Performance requires two data sources: a unit counter and either an ideal cycle time constant or a measured cycle time tag.
Tag mapping for Performance:
| PLC Tag | Description | OEE Use |
|---|---|---|
Production.TotalCount (DINT) |
Rising-edge count of completed units | Total Count in Performance formula |
Machine.IdealCycleTime_s (REAL) |
Nameplate cycle time in seconds (constant) | Ideal Cycle Time |
Production.LastCycleTime_s (REAL) |
Measured time for most recent cycle | Trend analysis, not OEE formula |
The Production counter increments on the rising edge of a part-present or part-ejected sensor. Machine.IdealCycleTime_s is a constant entered during commissioning — it should reflect the machine's rated capacity, not the observed average.
Performance = (IdealCycleTime_s × TotalCount) / (RunTime_Accum × 60)
Minor stops show up automatically: if the machine stalls for two minutes between cycles, TotalCount stops incrementing while RunTime_Accum keeps growing, pulling Performance down without any manual entry.
Quality from a Reject Counter
Quality is the simplest factor to pull from PLC data, provided a reject-detection mechanism exists on the line.
Tag mapping for Quality:
| PLC Tag | Description | OEE Use |
|---|---|---|
Production.TotalCount (DINT) |
All units produced | Total Count |
Production.RejectCount (DINT) |
Units rejected by inline inspection | Reject Count |
Production.GoodCount (DINT) |
TotalCount − RejectCount (computed) | Good Count |
Reject signals typically come from:
- Vision systems outputting a FAIL bit to the PLC
- Checkweighers outputting an out-of-tolerance bit
- Operator reject buttons wired to a digital input
Quality = (TotalCount - RejectCount) / TotalCount
If your line lacks inline rejection, Quality must be entered manually from end-of-line inspection records — a common gap in older facilities that manufacturing automation upgrades can address.
Assembling Real-Time OEE
With all three tag groups wired up, the OEE calculation runs continuously in the PLC, in an edge device, or in an OPC UA server subscription:
OEE = Availability × Performance × Quality
= (RunTime / PlannedTime)
× ((IdealCycleTime × TotalCount) / RunTime)
× ((TotalCount - RejectCount) / TotalCount)
This data can feed a live OEE dashboard through an OPC UA client, MQTT broker, or direct database write — making OEE visible to operators at the machine HMI and to plant managers in a web dashboard simultaneously. See the IIoT and PLC integration guide for connectivity architecture options.
Common OEE Calculation Mistakes
Even experienced engineers make these errors when implementing OEE for the first time.
1. Including planned downtime in Stop Time Scheduled breaks, planned maintenance windows, and shift changeovers that are planned in advance should be subtracted from the shift duration to arrive at Planned Production Time — they should not count as unplanned downtime that reduces Availability. Misclassifying these inflates Stop Time and makes Availability look worse than it is.
2. Using average cycle time instead of ideal cycle time Performance must be calculated against the machine's design (nameplate) rate, not the observed average. Using observed average cycle time will always yield a Performance of close to 100%, masking real speed losses.
3. Counting reworked parts as good A part that required rework is not a first-pass good part. It should remain in the Reject Count for Quality purposes, even if it eventually ships to the customer. Counting rework as good inflates the Quality factor.
4. Inconsistent time boundaries All three factors must cover exactly the same time window. If Availability uses shift start/end timestamps but Performance uses a counter that resets at midnight, the factors will not be consistent.
5. Capping Performance above 100% If the machine runs faster than its nameplate rate (perhaps because the nameplate rate is conservative), Performance can theoretically exceed 1.0, which would inflate OEE above the product of the other two factors. Cap Performance at 1.0 (100%) in your calculation logic.
6. Ignoring startup rejects Parts produced during startup after a fault or changeover are often automatically excluded from reject tracking because operators "know" they will be bad. These startup rejects are a real quality loss and belong in the Quality factor.
Frequently Asked Questions
How do you calculate OEE?
Multiply three ratios together: Availability × Performance × Quality. Availability is Run Time divided by Planned Production Time. Performance is (Ideal Cycle Time × Total Count) divided by Run Time. Quality is Good Count divided by Total Count. All three factors are expressed as decimals between 0 and 1, and their product gives the OEE score (multiply by 100 for a percentage).
What is the OEE formula?
The OEE formula is:
OEE = (Run Time / Planned Production Time) × ((Ideal Cycle Time × Total Count) / Run Time) × (Good Count / Total Count)
This simplifies algebraically to:
OEE = (Ideal Cycle Time × Good Count) / Planned Production Time
The simplified form is mathematically equivalent and useful for quick checks, but the three-factor form is preferred because it breaks the result into actionable components.
What is a good OEE score?
85% is the internationally recognized world-class benchmark, originally established by the Japan Institute of Plant Maintenance for high-volume discrete manufacturing. The industry average for most manufacturing plants is between 40% and 60%. A score of 65-75% is considered good for most facilities. The most important measure is consistent improvement from your own baseline rather than hitting a specific absolute number.
What are the Six Big Losses?
The Six Big Losses classify all production losses into six categories across the three OEE factors:
- Availability losses: (1) Unplanned stops / equipment failures; (2) Setup and adjustment / changeover time
- Performance losses: (3) Minor stops and idling; (4) Reduced speed
- Quality losses: (5) Process defects (scrap and rework during stable production); (6) Startup rejects (defects produced during warmup or after a stop)
Identifying which of these six categories is the primary driver of OEE loss points directly to the right improvement action.


