What is OEE and how do you calculate it in a CNC shop?
The three components of OEE, a step-by-step calculation for an 8-hour shift, typical values in CNC machine shops and common mistakes that distort the number.
- Published:
- Author:
- Spindeo team
- 8 min read

OEE (Overall Equipment Effectiveness) tells you in a single number how much of its planned time a machine actually spends creating value. It makes visible the gap between "the machine is running" and "the machine is making good parts." In this article we cover the definition, its three components and a step-by-step calculation for an 8-hour shift, and we finish with the measurement mistakes we see most often in shops.
The three components of OEE
OEE is the product of three ratios:
OEE = Availability x Performance x Quality
Each is a number between 0 and 1 (or a percentage), and each measures a different type of loss.
| Component | Question | Loss it measures |
|---|---|---|
| Availability | For how much of the planned time did the machine run? | Breakdowns, setup, tool changes, waiting for material |
| Performance | While running, was it at the speed it should be? | Slow cycles, minor stops, reduced feed |
| Quality | How many of the parts it made were good the first time? | Scrap, rework |
Seeing the three separately is worth more than the total. A 60% OEE can be caused by the machine sitting idle for a third of the day, or by scrap; the fixes for the two are completely different.
Getting the terms straight
Before calculating, you need to separate four time concepts, because this is where shops get confused most often.
- Calendar time: The whole shift. In an 8-hour shift, 480 minutes.
- Planned production time: Calendar time minus planned breaks and planned stops. Lunch, the start-of-shift meeting and planned maintenance go here. OEE is calculated on this time; charging a planned break to the machine as a loss is unfair.
- Run time: Planned time minus unplanned stops. Breakdowns, setup, broken tools, waiting for material, no operator.
- Net run time: Within run time, the time that corresponds to the number of parts that could be made at the standard cycle time. If the machine is running but the cycle is 20% over standard, that 20% is lost here.
An 8-hour shift example
Take a shift on a vertical machining center producing a single part. The numbers are realistic and rounded.
Data:
- Shift: 480 minutes
- Planned breaks: 30 minutes lunch + 2 x 10 minutes tea break = 50 minutes
- Unplanned stops: 45 minutes setup, 20 minutes broken tool, 15 minutes waiting for material = 80 minutes
- Standard cycle time: 2.5 minutes/part
- Total parts produced: 120
- Scrap and rework: 6 parts
Step 1: Planned production time
480 - 50 = 430 minutes
Step 2: Availability
Run time = 430 - 80 = 350 minutes
Availability = 350 / 430 = 0.814 (81.4%)
Step 3: Performance
Parts that could be made at standard speed in 350 minutes: 350 / 2.5 = 140 parts. Actually produced: 120.
Performance = (120 x 2.5) / 350 = 300 / 350 = 0.857 (85.7%)
You reach the same result with "produced / possible": 120 / 140 = 0.857. The 50-minute gap here is the sum of minor stops, slow feeds and the extra seconds the operator spends loading parts. None of them is recorded as a stop on its own, but they add up.
Step 4: Quality
Good parts = 120 - 6 = 114
Quality = 114 / 120 = 0.95 (95%)
Step 5: OEE
OEE = 0.814 x 0.857 x 0.95 = 0.663 (66.3%)
So this machine spent only 66% of its 430 minutes of planned time running at standard speed and making good parts. The remaining 34% breaks down like this:
| Loss | Minutes | Share |
|---|---|---|
| Unplanned stops | 80 | 18.6% |
| Speed loss | 50 | 11.6% |
| Quality loss (6 parts x 2.5 min) | 15 | 3.5% |
| Total loss | 145 | 33.7% |
This table is the real value of OEE. The single number "66%" tells you nothing; the table tells you "look at setup time first."
Typical values in CNC shops
The widely quoted reference value is 85% OEE (90% availability, 95% performance, 99.9% quality). That is a meaningful target for high-volume production lines; it is not realistic for a machine shop running batches of 5 to 500 parts and doing several setups a day.
For job shops, the ranges commonly cited in the industry are roughly as follows (a direction, not hard thresholds):
- 40% to 55%: A shop that has never measured usually lands here on its first measurement. Surprising, but normal.
- 55% to 70%: Shops that record downtime and plan setups.
- Above 70%: A stable product mix, ready-made fixtures, automatic pallet changers or long runs.
Don't let a low first measurement discourage you. OEE is not a report card but a map; what matters is not the first number but the difference between it and the number three months later.
Common mistakes
Recording planned breaks as unplanned stops
When lunch is entered as an availability loss, the machine drops 6 to 7 points every day for no reason. Worse, no improvement will ever close that loss, and over time the team stops believing the number.
Inflating the standard cycle time
Performance is calculated against the standard time. If the standard time is entered 30% high "to give the operator some slack," performance goes above 100% and speed loss becomes invisible. The standard time should be the real time the machine takes to make that part under trouble-free conditions; the calculated time from the CAM program is a good starting point.
Not recording the reason for a stop
"Stopped for 45 minutes" is useless on its own. Was it setup, a breakdown, material? Without a reason there is no improvement priority. A downtime record needs at least three fields: start, end, reason.
Trying to remember scrap at the end of the shift
The quality rate needs the scrap count, and that count is not reliable when it is entered at the end of the shift as "5 or 6, if I remember right." Scrap should be recorded the moment it happens, with the work order and the reason.
Thinking you are measuring the operator, not the machine
OEE is the machine's number. A low value is not the operator's fault; usually it comes from things outside the operator's control, such as setup planning, tool preparation, material flow and program quality. In shops where OEE is used as a punishment tool, the data quickly starts looking good and becomes meaningless.
Reducing all machines to one number
"Shop OEE is 62%" sounds nice to a manager but says nothing about which machine is waiting and why. Calculate per machine; take the shop average only after that, and only for information.
How to start measuring
The math is not hard; collecting the data consistently is. A practical starting sequence:
- Define the planned shift time and planned breaks once for each machine.
- Have operators record each stop with a start, an end and a reason. Keep the reason list short: setup, breakdown, tool, material, no operator, other.
- Have the production record capture good parts and scrap separately.
- Link each part's standard cycle time to the work order or the part record.
- In the first month, only measure; don't set targets. In the second month, focus on the biggest loss.
You can start with a paper form, but calculating by hand costs half an hour per machine every week and gets dropped by the second month. A tool that keeps these four data sets (shift plan, downtime, production and scrap, standard time) in one place gives you the number automatically, daily and per machine.
Related articles: Job costing and profitability in a CNC machine shop, 7 ways to reduce scrap rate in a CNC machine shop, Operator terminal: production tracking on a shop tablet.
Frequently asked questions
Can OEE be 100%?
In theory yes, in practice no. 100% means no stops at all in the planned time, every cycle exactly at standard time and zero scrap. In high-volume production 85% is considered "world class"; in machining job shops, 70% is a very good value.
Should setup time count as an availability loss?
Yes, in the standard approach setup counts as an availability loss like an unplanned stop, because the machine creates no value meanwhile. Some shops track setup separately so it doesn't drag OEE down "unfairly" on jobs with frequent part changes. Both are acceptable; what matters is deciding once and sticking to it, otherwise months cannot be compared.
How do you calculate performance for a shift that runs more than one part?
For each part, calculate (quantity produced x that part's standard time), add them all up and divide by run time. For example, if 60 parts at 2 minutes and 40 parts at 4 minutes were produced, the numerator is 60 x 2 + 40 x 4 = 280 minutes. If standard times are linked to the work order, this total comes out by itself.
Should OEE be tracked daily or weekly?
Calculate it daily, interpret it weekly and monthly. A single day's number is easily skewed by one breakdown; the weekly trend shows real change. Without daily data there is no weekly trend either.
The reports in Spindeo's Pro package calculate per-machine OEE from the entered production and downtime records, using the steps in this article.