Overall equipment effectiveness (OEE) is one number that tells you how much of your line’s potential you actually turned into good product. Knowing how to calculate OEE is easy. Getting a number you can trust on a food or beverage line, with sanitation, allergen changeovers and a steady trickle of small jams, takes more care. This guide covers the formula, two worked examples, and the downtime data that decides whether your OEE tells the truth.
What OEE actually measures
OEE compares what your line produced with what it could have produced if it ran the whole planned time, at its ideal speed, with no defects. It breaks that gap into three factors:
- Availability: was the line running when it was supposed to be?
- Performance: while it was running, was it running at its ideal speed?
- Quality: of what it made, how much was good the first time?
Multiply the three together and you get OEE. The single number is handy for a dashboard, but the real value is in the three factors. They tell you where the lost capacity went, and that is where your next improvement project should start.
How to calculate OEE: the formula, step by step
Here’s the standard OEE formula and the inputs you need for each part.
- Planned production time = shift length minus planned stops (breaks, scheduled meetings, planned sanitation if you choose to exclude it, more on that below).
- Run time = planned production time minus unplanned downtime (breakdowns, jams, material shortages, unplanned changeover overruns).
- Availability = run time ÷ planned production time.
- Performance = (ideal cycle time × total count) ÷ run time. You can also write this as total count ÷ (run time × ideal rate).
- Quality = good count ÷ total count.
- OEE = availability × performance × quality.
There’s also a shortcut that is useful for checking your work: OEE = (good count × ideal cycle time) ÷ planned production time. If your three-factor result and your shortcut result don’t match, one of your inputs is off.
A note on “ideal cycle time”
Ideal cycle time is the fastest the line can reliably run a given product. That is usually the rated speed of the bottleneck machine for that SKU, not the average speed you hit last month. If you set it too low, performance will look great and hide real losses. On lines that run several SKUs at different speeds, use the ideal rate for each product and total the results across the shift.
Worked example 1: a bottling line over one shift
Let’s walk through a hypothetical beverage line. All numbers are made up for illustration.
- Shift length: 8 hours = 480 minutes
- Planned breaks: two 15-minute breaks = 30 minutes
- Unplanned downtime: 45 minutes (a 25-minute changeover overrun, a 12-minute capper jam and 8 minutes waiting on labels)
- Ideal rate: 60 bottles per minute (ideal cycle time = 1 second per bottle)
- Total bottles produced: 21,870
- Rejects (underfills, bad caps, crooked labels): 438
Planned production time = 480 − 30 = 450 minutes.
Run time = 450 − 45 = 405 minutes.
Availability = 405 ÷ 450 = 0.900, or 90.0%.
Performance = 21,870 ÷ (405 × 60) = 21,870 ÷ 24,300 = 0.900, or 90.0%.
Quality = (21,870 − 438) ÷ 21,870 = 21,432 ÷ 21,870 ≈ 0.980, or 98.0%.
OEE = 0.900 × 0.900 × 0.980 ≈ 0.794, or about 79.4%.
Shortcut check: good count × ideal cycle time = 21,432 × (1/60 minute) ≈ 357.2 minutes of “perfect” production. Divide by 450 planned minutes and you get about 0.794. The numbers match, so the inputs hold together.
What does this tell the team? Quality is in decent shape. The losses are split evenly between stops (availability) and running slower than ideal (performance). The next move is to look at which stops and why the line runs slow, and that only works if your downtime data is good.
Worked example 2: the same shift, logged badly
Now picture the same shift, but operators only log stops longer than 10 minutes. The 8-minute label wait never gets recorded. Let’s say a string of short micro-stops (another 12 minutes or so in total) also goes unlogged. Assume 20 minutes of real downtime is invisible.
- Recorded downtime: 25 minutes, so run time = 450 − 25 = 425 minutes
- Availability = 425 ÷ 450 ≈ 94.4%
- Performance = 21,870 ÷ (425 × 60) = 21,870 ÷ 25,500 ≈ 85.8%
- Quality = still about 98.0%
- OEE ≈ 0.944 × 0.858 × 0.980 ≈ 79.4%
Same OEE, different story. Here’s the trap. The headline number didn’t move, but the diagnosis did. With bad logging, availability looks healthy and performance looks like the problem. The team might spend a month tuning conveyor speeds when the real issue is a label supply process that keeps starving the line. OEE is only as good as the downtime data underneath it.
How downtime data feeds OEE
Availability comes straight from your downtime log, and performance is worked out from run time. So every minute of downtime that gets missed, rounded or put in the wrong category skews two of your three factors. To get reliable downtime tracking, you need:
- Accurate start and stop times. Handwritten sheets filled in at the end of the shift tend to round to the nearest five or ten minutes, and short stops disappear. Timestamps captured when the stop happens, from a PLC signal or a quick tap on a tablet at the line, are far more reliable.
- A short, clear list of reason codes. Too many codes and operators pick whatever is at the top. Too few and everything ends up as “other.” Group them by type (mechanical, material, changeover, quality hold, staffing) with a handful of specific causes under each.
- A planned vs. unplanned flag. Every stop should be clearly one or the other so it lands in the right part of the formula.
- A place for micro-stops. Stops too short to log one by one still add up. If you can’t capture them individually, performance loss is where they’ll show up. Know that and read your numbers accordingly.
- Consistent units and definitions across shifts. If second shift logs changeovers from last good unit to first good unit and first shift logs from line stop to line start, comparing the two is meaningless.
We’ve built production-line downtime tracking software for a food manufacturer. The lesson that keeps coming back is simple: make logging a stop faster than ignoring it. When operators can record a reason in a couple of taps, the data gets better, and the OEE numbers start pointing at real problems.
Food and beverage wrinkles to decide up front
Food and beverage manufacturing has quirks that generic OEE guides skip. Decide how you’ll handle each one, write it down, and apply it the same way everywhere.
Sanitation and clean-in-place
Scheduled sanitation is required, so some plants treat it as a planned stop and leave it out of planned production time. Others count it against availability so that faster sanitation shows up as an improvement. Both approaches work. What matters is being consistent, and maybe tracking sanitation time as its own metric either way.
Allergen and flavor changeovers
Changeovers are usually the biggest availability loss on multi-SKU lines. Log the planned changeover time and any overrun separately. The overrun is where most of the improvement opportunity sits.
Rework, holds and give-away
Standard OEE quality counts only first-pass good units, so reworked product doesn’t count as good. Product placed on QA hold is trickier: count it against quality if it’s later rejected, and have a clear rule for adjusting the record. Also remember that OEE doesn’t capture overfill give-away at all. A line can post a high quality score while giving away product in every container, so keep an eye on fill weights separately.
Turning OEE into action
A number on a screen doesn’t improve anything by itself. A few habits help OEE earn its keep:
- Compare a line to its own baseline, not to a generic industry figure. Lines, products and packaging formats differ too much for outside comparisons to mean much.
- Review the biggest losses, not the average. A simple Pareto of downtime reasons by total minutes usually shows where to focus.
- Look at OEE by shift and by SKU. Plant-wide averages hide the patterns that matter.
- Close the loop. When a fix goes in, note the date so you can check whether the matching loss actually shrank.
If spreadsheets and clipboards are where your OEE data lives today, it may be time for a purpose-built tool. Our manufacturing software page shows how we approach plant-floor systems, and our custom software engineering team builds tools that fit your line, your reason codes and your reporting needs.
Frequently asked questions
What’s the simplest way to calculate OEE?
Multiply your good count by the ideal cycle time, then divide by planned production time. This gives you the same result as availability × performance × quality. The three-factor version is still worth calculating, though, because it shows where the losses came from.
Should changeovers count as downtime in OEE?
In most setups, yes. Changeovers reduce availability because the line isn’t making product. Some plants exclude a standard planned changeover and count only the overrun. Either way can work, as long as the rule is written down and applied consistently across lines and shifts.
Can OEE be over 100%?
Not if the inputs are right. A result over 100% nearly always means the ideal cycle time is set too slow, or downtime was recorded that didn’t actually happen. Treat it as a sign to recheck your ideal rates for each SKU.
Need a hand?
If your OEE numbers don’t match what you see on the floor, the problem is usually the data feeding them. We build downtime tracking and production reporting tools with U.S.-based engineers you work with directly, and we can also review an existing system through our engineering consulting service. When you’re ready to get your line data under control, talk to an engineer.