{
  "slug": "preventive-maintenance-vs-downtime",
  "title": "Preventive Maintenance vs. Downtime Cost Calculator",
  "heading": "Preventive Maintenance vs. Breakdown Cost Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/preventive-maintenance-vs-downtime",
  "summary": "Compare the cost of a PM program against the expected cost of unplanned downtime.",
  "description": "Preventive maintenance has a real, predictable cost — parts, labor, and planned production time lost to scheduled service. Skipping it doesn't eliminate that cost, it just converts it into unplanned downtime risk, which is usually more expensive per hour because it happens at random times, often causes secondary damage, and stops production without warning instead of during a scheduled window. This calculator compares annual PM program cost against the expected annual cost of breakdowns without it, using your estimated failure rate reduction from the PM program and the cost per hour of unplanned downtime (which should include lost production value, not just repair cost, since lost throughput is usually the bigger number). The output shows the net financial case for maintaining or increasing your PM investment, which is often the easiest capital argument to win in a plant because the payback is direct and immediate.",
  "formula": "Expected Annual Breakdown Cost = Failures per Year × (Repair Cost + Downtime Hours × Downtime Cost per Hour). Net PM Benefit = Baseline Breakdown Cost − (PM Program Cost + Reduced Breakdown Cost).",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=preventive-maintenance-vs-downtime",
  "inputs": [
    {
      "id": "failuresNoPM",
      "label": "Unplanned failures per year (no PM)",
      "kind": "number",
      "hint": null,
      "default": 8,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "repairCost",
      "label": "Average repair cost per failure",
      "kind": "number",
      "hint": null,
      "default": 2200,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "downtimeHours",
      "label": "Average downtime per failure",
      "kind": "number",
      "hint": null,
      "default": 6,
      "unit": "hrs",
      "min": 0,
      "max": null
    },
    {
      "id": "downtimeCostHr",
      "label": "Cost of downtime per hour (lost production+repair)",
      "kind": "number",
      "hint": null,
      "default": 850,
      "unit": "$/hr",
      "min": 0,
      "max": null
    },
    {
      "id": "pmProgramCost",
      "label": "Annual PM program cost",
      "kind": "number",
      "hint": null,
      "default": 14000,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "failureReduction",
      "label": "Failure reduction from PM program",
      "kind": "number",
      "hint": null,
      "default": 65,
      "unit": "%",
      "min": 0,
      "max": 100
    }
  ],
  "outputs": [
    {
      "id": "netBenefit",
      "label": "Net annual benefit of PM program",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "baselineAnnualCost",
      "label": "Expected annual cost without PM",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "totalCostWithPM",
      "label": "Total annual cost with PM program",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "remainingBreakdownCost",
      "label": "Residual breakdown cost even with PM",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Unplanned failures per year (no PM): 8",
      "Average repair cost per failure: 2200 $",
      "Average downtime per failure: 6 hrs",
      "Cost of downtime per hour (lost production+repair): 850 $/hr",
      "Annual PM program cost: 14000 $",
      "Failure reduction from PM program: 65 %"
    ],
    "outputs": [
      "Net annual benefit of PM program: $23,960",
      "Expected annual cost without PM: $58,400",
      "Total annual cost with PM program: $34,440",
      "Residual breakdown cost even with PM: $20,440"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter unplanned failures per year (no pm).",
      "Enter average repair cost per failure ($).",
      "Enter average downtime per failure (hrs).",
      "Enter cost of downtime per hour (lost production+repair) ($/hr).",
      "Enter annual pm program cost ($).",
      "Enter failure reduction from pm program (%).",
      "Read your net annual benefit of pm program 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": {
        "failuresNoPM": 5,
        "repairCost": 1300,
        "downtimeHours": 3.5999999999999996,
        "downtimeCostHr": 500,
        "pmProgramCost": 8500,
        "failureReduction": 40
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "failuresNoPM": 8,
        "repairCost": 2200,
        "downtimeHours": 6,
        "downtimeCostHr": 850,
        "pmProgramCost": 14000,
        "failureReduction": 65
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "failuresNoPM": 13,
        "repairCost": 3500,
        "downtimeHours": 9.600000000000001,
        "downtimeCostHr": 1350,
        "pmProgramCost": 22500,
        "failureReduction": 100
      }
    }
  ],
  "limitations": [
    "Results are estimates before tax, fees, and inflation unless an input explicitly covers them.",
    "Rates are treated as fixed for the whole period — variable-rate products will drift from this projection.",
    "This is educational maths, not financial advice. Check anything contractual with the lender or your accountant."
  ],
  "faq": [
    {
      "q": "How do I estimate downtime cost per hour?",
      "a": "Use lost production value (units per hour that would have been made, times contribution margin per unit) plus any expedited repair, overtime, or rush shipping costs incurred. Most plants find this number is far higher than they initially assume once lost throughput on a bottleneck machine is properly counted, not just the mechanic's labor bill."
    },
    {
      "q": "What failure reduction percentage is realistic for a new PM program?",
      "a": "Well-implemented PM programs on equipment that previously had little to no scheduled maintenance commonly cut unplanned failures 40-70%. Equipment that's already well maintained will see smaller incremental gains from adding more PM, and past a certain point additional PM spend has diminishing returns."
    },
    {
      "q": "Does this account for the value of avoiding secondary damage?",
      "a": "Only indirectly, through your repair cost input. Breakdown failures often cascade into secondary damage (a bearing failure that scores a shaft, for example) that a caught-early PM inspection would have avoided at a fraction of the cost — if that's a known risk for your equipment, weight your repair cost input higher to reflect it."
    },
    {
      "q": "What if the net benefit comes out negative?",
      "a": "That suggests either your PM program cost is too high for the risk profile of that particular asset, or the failure reduction assumption is optimistic. Low-criticality equipment with cheap, fast repairs sometimes genuinely doesn't justify an intensive PM program — run-to-failure can be the economically correct choice for non-critical assets."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/spare-parts-stocking",
    "https://www.revenuelab.fyi/toolbox/oee-calculator"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Preventive Maintenance vs. Downtime Cost Calculator (https://www.revenuelab.fyi/toolbox/preventive-maintenance-vs-downtime)"
}