{
  "slug": "oee-calculator",
  "title": "OEE Calculator (Overall Equipment Effectiveness)",
  "heading": "OEE Calculator",
  "category": "other",
  "url": "https://www.revenuelab.fyi/toolbox/oee-calculator",
  "summary": "Availability × performance × quality — the real health of a machine or line.",
  "description": "OEE is the standard metric for how much of a machine's theoretical output actually becomes good parts. World-class is usually cited as 85%, typical discrete manufacturing runs 40-60%. The calculation multiplies three losses together: availability loss from downtime, performance loss from running slower than ideal cycle time, and quality loss from scrap and rework. Because the three factors multiply rather than add, a plant that looks fine on each individual number (90% availability, 90% performance, 90% quality) still only nets 73% OEE — that compounding is the whole point of tracking it this way instead of one blended number. Feed this from your MES or a shift log: planned production time, actual downtime minutes, ideal cycle time per part, total parts made, and good parts. Use it per machine, per shift, or per line, and track the trend weekly rather than chasing a single day's number, since changeover-heavy days will always score lower than long steady runs.",
  "formula": "Availability = Run Time ÷ Planned Production Time. Performance = (Ideal Cycle Time × Total Count) ÷ Run Time. Quality = Good Count ÷ Total Count. OEE = Availability × Performance × Quality.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=oee-calculator",
  "inputs": [
    {
      "id": "plannedMin",
      "label": "Planned production time",
      "kind": "number",
      "hint": null,
      "default": 480,
      "unit": "min",
      "min": 1,
      "max": null
    },
    {
      "id": "downtimeMin",
      "label": "Downtime (changeover, breakdown, etc.)",
      "kind": "number",
      "hint": null,
      "default": 60,
      "unit": "min",
      "min": 0,
      "max": null
    },
    {
      "id": "idealCycleSec",
      "label": "Ideal cycle time per part",
      "kind": "number",
      "hint": null,
      "default": 30,
      "unit": "sec",
      "min": 0.1,
      "max": null
    },
    {
      "id": "totalParts",
      "label": "Total parts produced",
      "kind": "number",
      "hint": null,
      "default": 700,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "goodParts",
      "label": "Good parts (no rework/scrap)",
      "kind": "number",
      "hint": null,
      "default": 665,
      "unit": null,
      "min": 0,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "oee",
      "label": "OEE",
      "format": "percent",
      "hint": null,
      "primary": true
    },
    {
      "id": "availability",
      "label": "Availability",
      "format": "percent",
      "hint": null,
      "primary": false
    },
    {
      "id": "performance",
      "label": "Performance",
      "format": "percent",
      "hint": null,
      "primary": false
    },
    {
      "id": "quality",
      "label": "Quality",
      "format": "percent",
      "hint": null,
      "primary": false
    },
    {
      "id": "runTime",
      "label": "Actual run time",
      "format": "number",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Planned production time: 480 min",
      "Downtime (changeover, breakdown, etc.): 60 min",
      "Ideal cycle time per part: 30 sec",
      "Total parts produced: 700",
      "Good parts (no rework/scrap): 665"
    ],
    "outputs": [
      "OEE: 69.3%",
      "Availability: 87.5%",
      "Performance: 83.3%",
      "Quality: 95.0%",
      "Actual run time: 420"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter planned production time (min).",
      "Enter downtime (changeover, breakdown, etc.) (min).",
      "Enter ideal cycle time per part (sec).",
      "Enter total parts produced.",
      "Enter good parts (no rework/scrap).",
      "Read your oee on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "plannedMin": 290,
        "downtimeMin": 35,
        "idealCycleSec": 18,
        "totalParts": 420,
        "goodParts": 400
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "plannedMin": 480,
        "downtimeMin": 60,
        "idealCycleSec": 30,
        "totalParts": 700,
        "goodParts": 670
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "plannedMin": 770,
        "downtimeMin": 95,
        "idealCycleSec": 48,
        "totalParts": 1120,
        "goodParts": 1060
      }
    }
  ],
  "limitations": [
    "Estimates assume standard, average conditions — local rules, pricing, and materials vary.",
    "Results are rounded for readability; add a buffer before ordering, booking, or committing.",
    "Double-check anything with a real cost attached against a local quote."
  ],
  "faq": [
    {
      "q": "What counts as a 'good' OEE score?",
      "a": "85% is the textbook world-class benchmark, but that figure comes from discrete assembly with mature TPM programs. Most job shops and CNC operations run 45-65% and that's normal. Track your own trend rather than chasing 85% blindly — a 10-point improvement from 50% to 60% is worth more than obsessing over the last 5 points near the top."
    },
    {
      "q": "Why does performance sometimes exceed 100%?",
      "a": "If your ideal cycle time is outdated or conservative, actual output can beat it, pushing performance over 100%. This calculator caps it at 150% to avoid absurd OEE numbers, but the real fix is updating the ideal cycle time to reflect current tooling and speeds."
    },
    {
      "q": "Should changeover time count as downtime?",
      "a": "Yes, unless you're tracking a separate changeover-specific metric. Changeover is real time the machine isn't cutting good parts, and hiding it inflates availability artificially. Some plants track OEE with and without planned changeovers to separate the two loss types."
    },
    {
      "q": "How is OEE different from utilization?",
      "a": "Utilization only measures whether the machine was scheduled to run versus idle. OEE goes further and asks whether the scheduled time was used at full speed making good parts. A machine can have 95% utilization and 55% OEE if it's running slow and scrapping parts."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/takt-time-calculator",
    "https://www.revenuelab.fyi/toolbox/capacity-vs-shifts",
    "https://www.revenuelab.fyi/toolbox/cycle-time-vs-demand"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — OEE Calculator (Overall Equipment Effectiveness) (https://www.revenuelab.fyi/toolbox/oee-calculator)"
}