Enter the following values for your production period.
Your OEE Score
Overall Equipment Effectiveness:
—
What is OEE?
Overall Equipment Effectiveness (OEE) is a key performance indicator (KPI) used in manufacturing to measure how effectively a piece of equipment or a production line is utilized. It's a critical metric for identifying areas of improvement and optimizing production processes. OEE is calculated by considering three primary factors: Availability, Performance, and Quality.
The OEE Formula
The OEE score is calculated as the product of these three factors:
OEE = Availability × Performance × Quality
Calculating the Components:
Availability: Measures losses due to downtime (planned or unplanned).
Availability = (Planned Production Time - Total Downtime) / Planned Production Time
Note: Planned production time is the total scheduled operating time. Downtime includes stops due to equipment failure, setup, adjustments, etc.
Performance: Measures losses due to slow cycles or minor stops.
Performance = (Total Units Produced × Ideal Cycle Time) / (Planned Production Time - Total Downtime)
Note: The denominator here is the Actual Run Time (Planned Production Time – Total Downtime). Ideal Cycle Time is the theoretical fastest time to produce one unit.
Quality: Measures losses due to defective parts or rework.
Quality = (Total Units Produced - Defective Units) / Total Units Produced
Note: This calculates the percentage of good units produced out of the total units.
Why Use OEE?
Tracking OEE helps manufacturers:
Identify and quantify waste in the production process.
Benchmark performance against industry standards or historical data.
Focus improvement efforts on the areas with the biggest impact (e.g., reducing downtime, speeding up cycle times, improving quality).
Drive a culture of continuous improvement.
A world-class OEE score is typically considered to be 85% or higher. However, even modest improvements can lead to significant gains in productivity and profitability.
function calculateOEE() {
var plannedProductionTime = parseFloat(document.getElementById("plannedProductionTime").value);
var downtimeMinutes = parseFloat(document.getElementById("downtimeMinutes").value);
var idealCycleTime = parseFloat(document.getElementById("idealCycleTime").value);
var totalUnitsProduced = parseFloat(document.getElementById("totalUnitsProduced").value);
var defectiveUnits = parseFloat(document.getElementById("defectiveUnits").value);
// Basic validation for non-negative numbers
if (isNaN(plannedProductionTime) || plannedProductionTime < 0 ||
isNaN(downtimeMinutes) || downtimeMinutes < 0 ||
isNaN(idealCycleTime) || idealCycleTime < 0 ||
isNaN(totalUnitsProduced) || totalUnitsProduced < 0 ||
isNaN(defectiveUnits) || defectiveUnits plannedProductionTime) {
alert("Total Downtime cannot be greater than Planned Production Time.");
return;
}
// Ensure defective units do not exceed total units produced
if (defectiveUnits > totalUnitsProduced) {
alert("Defective Units cannot be greater than Total Units Produced.");
return;
}
// Calculate components
var availability = 0;
if (plannedProductionTime > 0) {
availability = (plannedProductionTime – downtimeMinutes) / plannedProductionTime;
}
var actualRunTimeMinutes = plannedProductionTime – downtimeMinutes;
var performance = 0;
if (actualRunTimeMinutes > 0 && idealCycleTime > 0) {
// Convert ideal cycle time from seconds to minutes for consistent units
var idealCycleTimeMinutes = idealCycleTime / 60;
performance = (totalUnitsProduced * idealCycleTimeMinutes) / actualRunTimeMinutes;
} else if (totalUnitsProduced > 0 && idealCycleTime > 0) {
// If actualRunTime is 0 but units were produced (implies perfect run but 0 planned time or full downtime)
// This scenario is tricky for performance. If actualRunTime is 0, performance tends to infinity if units are produced.
// For practical OEE, if actualRunTime is 0, performance is effectively 0 unless units produced is also 0.
if (actualRunTimeMinutes === 0 && totalUnitsProduced > 0) {
performance = 0; // Or handle as an error/special case if desired
} else if (actualRunTimeMinutes === 0 && totalUnitsProduced === 0) {
performance = 1; // If no units to produce and no run time, it's technically perfect according to formula
}
}
var quality = 0;
if (totalUnitsProduced > 0) {
quality = (totalUnitsProduced – defectiveUnits) / totalUnitsProduced;
} else if (totalUnitsProduced === 0 && defectiveUnits === 0) {
quality = 1; // If no units produced and no defective units, quality is perfect
}
// Ensure components are not negative due to edge cases (though validation should prevent this)
availability = Math.max(0, availability);
performance = Math.max(0, performance);
quality = Math.max(0, quality);
// Calculate OEE
var oee = availability * performance * quality;
// Format result as percentage
var oeePercentage = (oee * 100).toFixed(2);
// Display result
document.getElementById("oeeResult").textContent = oeePercentage + "%";
}