OEE (Overall Equipment Effectiveness) is calculated as Availability × Performance × Quality. Availability is run time divided by planned production time; Performance is actual output divided by what the run time should have produced at ideal speed; Quality is good units divided by total units. The result is the percentage of planned time that was truly productive.
OEE is easy to define and easy to get wrong. The formula takes five inputs, and every one of them has a common failure mode, the wrong time base, a flattering "ideal" speed, rework counted as good. This guide walks the calculation step by step, works a complete example with made-up numbers you can check by hand, and lists the mistakes that make OEE numbers lie. If you want the arithmetic done for you, the free OEE calculator the ROI calculator runs this exact method.
What is the OEE formula?
OEE = Availability × Performance × Quality, where each factor is a ratio between 0 and 1:
- Availability = Run time ÷ Planned production time. It captures time losses: breakdowns, changeovers, and other stops during time you intended to produce. This is where your downtime log feeds in.
- Performance = (Total count × Ideal cycle time) ÷ Run time. It captures speed losses: running slower than the machine's true best rate, plus the micro-stops too short to log.
- Quality = Good count ÷ Total count. It captures defect losses: scrap and anything that needed rework. Only units that pass the first time count as good, the same logic as first pass yield.
Multiplying them matters. A line that is 90% available, at 90% speed, with 90% quality is not "about 90%", it is 0.9 × 0.9 × 0.9 = 72.9%. Losses compound, which is exactly why OEE is a harsher and more honest number than any of its parts.
Where does the time base come from?
The time base comes from a waterfall that starts with all time and removes what you deliberately excluded, then what you lost. Getting this waterfall straight, and keeping it consistent, is most of the battle:
- Calendar time: all 24 hours, every day.
- Scheduled time: calendar time minus shifts you don't run. (OEE ignores this exclusion; TEEP does not.)
- Planned production time: scheduled time minus planned non-production events, breaks, planned maintenance windows, meetings. This is OEE's denominator.
- Run time: planned production time minus unplanned stops and changeovers. Availability lives here.
- Net run time: run time discounted for speed losses. Performance lives here.
- Fully productive time: net run time discounted for defects. What is left after Quality, and OEE is simply fully productive time ÷ planned production time.
How do you calculate OEE step by step?
Collect five numbers for the period, then run six divisions. Here is the procedure:
- Fix the period and the planned production time. Take the shift length and subtract planned non-production time (breaks, scheduled meetings). Write the exclusion rules down once and never vary them shift to shift.
- Total all downtime and changeover minutes. Everything unplanned, plus changeovers, counts against Availability. Subtract from planned production time to get run time.
- Establish the ideal cycle time. The machine's true best repeatable speed for that product, nameplate or best demonstrated rate, not the budgeted or "standard" rate.
- Count total units and good units. Good means right the first time; rework and scrap are not good, even if rework is later saved.
- Compute the three factors. Availability = run ÷ planned. Performance = (total count × ideal cycle time) ÷ run time. Quality = good ÷ total.
- Multiply and sanity-check. OEE = A × P × Q. Cross-check: good count × ideal cycle time ÷ planned production time should give the same answer. If it doesn't, an input is wrong.
A worked example, start to finish
The following numbers are hypothetical a made-up packaging line, invented for arithmetic you can verify by hand.
| Input | Value |
|---|---|
| Shift length | 480 min |
| Planned breaks | 30 min |
| Planned production time | 450 min |
| Downtime + changeovers | 63 min |
| Run time | 387 min |
| Ideal cycle time | 1.0 sec/unit (60/min) |
| Total count | 19,800 units |
| Good count (first pass) | 19,206 units |
Now the three factors:
- Availability = 387 ÷ 450 = 86.0%
- Performance = 19,800 ÷ (387 min × 60 units/min) = 19,800 ÷ 23,220 = 85.3%
- Quality = 19,206 ÷ 19,800 = 97.0%
- OEE = 0.860 × 0.853 × 0.970 = 71.1%
Cross-check with the shortcut: 19,206 good units × 1 second each = 320.1 minutes of fully productive time, and 320.1 ÷ 450 = 71.1%. The numbers agree, so the inputs are consistent. Punch the same inputs into the OEE calculator and you should see the identical result.
How should you collect the five inputs?
Collect them as close to the machine as possible, at the highest frequency you can afford. The calculation is only as honest as its inputs, and the inputs degrade fast when they travel through memory and paper:
- Planned production time comes from the schedule and the written exclusion rules. This one is easy; just keep it stable.
- Downtime minutes are the input most plants get wrong. End-of-shift recollection reliably undercounts: a supervisor remembers the 40-minute breakdown and forgets the six 3-minute jams. Stops need to be logged as they happen, by the operator at the station, or automatically from machine signals with the operator adding the reason code.
- Counts should come from the machine or a counter wherever possible. Manual tallies drift, and the gap between total and good count is precisely the signal Quality needs.
- Ideal cycle time is set per product, once, from nameplate or best demonstrated performance, then defended. Every request to "adjust the standard" to make Performance look better should be treated as what it is.
Frequency matters as much as accuracy. A monthly OEE number is an autopsy; a per-shift number is a scoreboard; a live number is a tool the crew can respond to while it still counts. This is the practical argument for wiring the calculation to the source instead of a spreadsheet, it is the difference between reviewing last month and acting on this hour.
Should you calculate OEE per machine or per line?
Calculate it at the constraint. OEE of a whole line is governed by its bottleneck; measuring the bottleneck machine gives you the number that actually limits output. Measuring every machine on the line produces a wall of percentages where upstream and downstream machines show poor Availability simply because they are starved or blocked by the constraint, that is the line's design, not their failure.
A sensible pattern: rigorous OEE at the constraint, simple downtime tracking everywhere else. If the constraint moves when the product mix changes, track the two or three machines that take turns being the constraint. And resist rolling machines up into a single plant OEE, the average of a bottling line and a machining cell is not a number anyone can act on.
What are the most common OEE calculation mistakes?
The most common mistakes are input choices that flatter the number. Seven show up constantly:
- Wrong time base. Using scheduled time in one report and planned production time in another. Pick the waterfall definitions once; changing the denominator changes OEE without anything on the floor changing.
- Excluding changeovers from downtime. Changeovers are time the line was planned to produce and didn't. Excluding them hides one of the six big losses often the most improvable one.
- Soft ideal cycle time. Using the budgeted or historical-average rate instead of true best speed inflates Performance, sometimes past 100%. Performance persistently over 100% means the ideal cycle time is wrong, not that the machine broke physics.
- Counting rework as good. If a unit needed a second pass, first-pass Quality already lost it. Counting it as good double-counts the recovery and hides the defect problem.
- Invisible micro-stops. Manual logs miss stops under a couple of minutes, so the loss silently migrates into Performance where nobody can act on it. Automatic counting from the machine fixes this.
- Averaging OEE across lines. A plant-wide average of unlike lines is a number nobody can act on, and comparing lines against each other mostly measures how honest each line's inputs are, more on that in what counts as a good OEE score.
- Gaming the schedule. Shrinking planned production time to make Availability look better raises OEE while output falls. If OEE rises and units shipped doesn't, check the denominator.
What should you benchmark against?
Benchmark against your own line's history, not against folklore. Two context numbers are worth knowing, with their provenance stated plainly:
- The 85% "world-class" OEE figure (roughly 90% Availability × 95% Performance × 99% Quality) is commonly cited tracing to Seiichi Nakajima's original TPM work in the 1980s. It is a useful reference point, not an audited industry statistic, no standards body certifies OEE benchmarks.
- For macro context, the Federal Reserve's G.17 release put U.S. manufacturing capacity utilization at 75.7% in May 2026 about 2.5 points below its 1972–2025 average. Capacity utilization is a different metric than OEE but it is a reminder that real plants run well below theoretical maximums, measured by any method.
The honest use of OEE is trend and decomposition: is this line's OEE rising, and which factor moved? A stable calculation you trust beats a flattering one every time. That trust is also why measurement method matters, OEE computed from machine signals at the source, the way Harmony computes true OEE from PLCs and sensors rather than end-of-shift estimates (see the platform), removes the input games entirely. For a deeper dive on the loss categories behind each factor, start with the six big losses then put your own numbers through the calculator.