{
  "schemaVersion": 1,
  "slug": "brake-pad-life-calculator",
  "category": "automotive",
  "kind": "implementation",
  "independentValidation": false,
  "implementationHash": "9ce2489de4f3d03425802260972ec0942583e126152ff5b032631491adcb3094",
  "provenance": "Generated from the calculation contract used by the published page. Publication is not external validation.",
  "sourceFiles": [
    "data/calculators/brake-pad-life-calculator.json",
    "src/engine.js"
  ],
  "runtimeSource": "/sources/engine.txt",
  "runtimeHash": "5c888d8898afbdee36267bb9977829e1e2ac568f6677c8ee87469c139864645c",
  "scope": "The compute function records implemented equations, constants, lookup tables and custom rules. Inputs record defaults and allowed values; outputs record precision and units. Defaults are examples, not recommendations. General background references are not evidence for this specific algorithm.",
  "publishedFormula": {
    "formula": "L_adj = L·f_d·f_a; days = L_adj/M; months = days/30.44",
    "vars": [
      [
        "L",
        "Rated pad life (miles)"
      ],
      [
        "f_d",
        "Driving factor (1.3/1/0.7/0.5)"
      ],
      [
        "f_a",
        "Axle factor (front 1, rear 1.6)"
      ],
      [
        "M",
        "Miles driven per day"
      ],
      [
        "L_adj",
        "Adjusted pad life (miles)"
      ],
      [
        "days",
        "Adjusted pad life in days"
      ],
      [
        "months",
        "Adjusted pad life in months"
      ]
    ],
    "note": "A broad estimate from entered pad-life mileage and fixed driving/axle multipliers. It does not measure wear or set a safe replacement date."
  },
  "externalEvidence": {
    "reviewedAt": "2026-10-12",
    "sources": [
      {
        "name": "Brembo — Brake pad replacement and wear inspection",
        "url": "https://www.brembo.com/en/solutions/for-your-car/xtra-pads"
      }
    ],
    "referenceRole": "context",
    "implementationHash": "9ce2489de4f3d03425802260972ec0942583e126152ff5b032631491adcb3094",
    "basis": "L_adj = L·f_d·f_a; days = L_adj/M; months = days/30.44",
    "limitations": "The references provide context and limitations. They do not validate this page’s illustrative multipliers, lookup values or predictions."
  },
  "contract": {
    "compute": "const D={highway:1.3,mixed:1,city:0.7,mountain:0.5},axleFactor=axle==='front'?1:1.6,adjustedLife=padLifeMiles*(D[driving]||1)*axleFactor,days=milesPerDay>0?adjustedLife/milesPerDay:null;return{adjustedLife,daysUntilChange:days,monthsUntilChange:days===null?null:days/30.44,note:'This estimate is not a wear measurement. Follow vehicle service guidance and arrange an inspection if braking changes or warning signs appear.'};",
    "inputs": [
      {
        "name": "milesPerDay",
        "type": "number",
        "default": 35,
        "min": 0,
        "max": 1000,
        "step": 1,
        "slider": true
      },
      {
        "name": "padLifeMiles",
        "type": "number",
        "default": 45000,
        "min": 5000,
        "max": 150000,
        "step": 1000,
        "slider": true
      },
      {
        "name": "driving",
        "type": "select",
        "default": "mixed",
        "options": [
          {
            "value": "highway"
          },
          {
            "value": "mixed"
          },
          {
            "value": "city"
          },
          {
            "value": "mountain"
          }
        ]
      },
      {
        "name": "axle",
        "type": "select",
        "default": "front",
        "options": [
          {
            "value": "front"
          },
          {
            "value": "rear"
          }
        ]
      }
    ],
    "outputs": [
      {
        "name": "adjustedLife",
        "precision": 0,
        "unit": "mi"
      },
      {
        "name": "daysUntilChange",
        "precision": 0,
        "unit": "days",
        "optional": true
      },
      {
        "name": "monthsUntilChange",
        "precision": 1,
        "unit": "months",
        "optional": true
      },
      {
        "name": "note",
        "precision": 0,
        "unit": "",
        "type": "text"
      }
    ],
    "interpret": null
  }
}
