============================================================ */ (function(){ 'use strict'; function init(){ var root = document.getElementById('zssb'); if(!root) return; /* ── State ──────────────────────────────────────── */ var s1Type = 'sleeper'; // 'sleeper' or 'offduty' var s2Type = 'sleeper'; /* ── Toggle button setup ────────────────────────── */ function setupToggle(slpId, offId, callback){ var slpBtn = document.getElementById(slpId); var offBtn = document.getElementById(offId); if(!slpBtn || !offBtn) return; slpBtn.addEventListener('click', function(){ slpBtn.classList.add('active'); offBtn.classList.remove('active'); callback('sleeper'); }); offBtn.addEventListener('click', function(){ offBtn.classList.add('active'); slpBtn.classList.remove('active'); callback('offduty'); }); } setupToggle('zssb-s1-sleeper', 'zssb-s1-offduty', function(t){ s1Type = t; }); setupToggle('zssb-s2-sleeper', 'zssb-s2-offduty', function(t){ s2Type = t; }); /* ── Format decimal hours → "Xh Ym" ─────────────── */ function fmtHrs(h){ if(isNaN(h) || h < 0) return '0h 0m'; var hh = Math.floor(h); var mm = Math.round((h - hh) * 60); if(mm === 60){ hh++; mm = 0; } if(hh === 0 && mm === 0) return '0h 0m'; if(hh === 0) return mm + 'm'; if(mm === 0) return hh + 'h'; return hh + 'h ' + mm + 'm'; } /* ── Add decimal hours to a time string ─────────── */ function addHrs(timeStr, hrs){ if(!timeStr || timeStr === '') return null; var parts = timeStr.split(':'); if(parts.length < 2) return null; var totalMins = parseInt(parts[0], 10) * 60 + parseInt(parts[1], 10) + Math.round(hrs * 60); totalMins = ((totalMins % 1440) + 1440) % 1440; var h = Math.floor(totalMins / 60); var m = totalMins % 60; return (h < 10 ? '0' : '') + h + ':' + (m < 10 ? '0' : '') + m; } /* ── Convert 24hr "HH:MM" → 12hr "H:MM AM/PM" ─── */ function to12hr(t24){ if(!t24) return null; var p = t24.split(':'); var h = parseInt(p[0], 10); var m = p[1]; var ampm = h >= 12 ? 'PM' : 'AM'; h = h % 12; if(h === 0) h = 12; return h + ':' + m + ' ' + ampm; } /* ── Warning helpers ─────────────────────────────── */ function showWarn(msg){ var w = document.getElementById('zssb-warn'); var wm = document.getElementById('zssb-wmsg'); if(w && wm){ wm.textContent = msg; w.classList.add('show'); } } function hideWarn(){ var w = document.getElementById('zssb-warn'); if(w) w.classList.remove('show'); } /* ── Status bar progress ─────────────────────────── */ function setStatus(step){ var pills = ['zssb-pill-1', 'zssb-pill-2', 'zssb-pill-3']; for(var i = 0; i < pills.length; i++){ var el = document.getElementById(pills[i]); if(el){ el.classList[i < step ? 'add' : 'remove']('active'); } } } /* ════════════════════════════════════════════════ MAIN CALCULATION — FMCSA 49 CFR §395.1(g) ════════════════════════════════════════════════ */ function calc(){ hideWarn(); setStatus(2); /* Read inputs */ var drivenBefore = parseFloat(document.getElementById('zssb-driven').value) || 0; var drivenBetween = parseFloat(document.getElementById('zssb-driven-between').value) || 0; var s1h = parseFloat(document.getElementById('zssb-s1-hrs').value) || 0; var s1m = parseFloat(document.getElementById('zssb-s1-min').value) || 0; var s2h = parseFloat(document.getElementById('zssb-s2-hrs').value) || 0; var s2m = parseFloat(document.getElementById('zssb-s2-min').value) || 0; var s1Start = document.getElementById('zssb-s1-start').value; var s2Start = document.getElementById('zssb-s2-start').value; /* Convert to decimal hours */ var split1 = s1h + (s1m / 60); var split2 = s2h + (s2m / 60); /* ── Validation ────────────────────────────────── */ if(split1 <= 0 && split2 <= 0){ showWarn('Please enter the duration for at least one split rest period.'); return; } if(split1 < 0 || split2 < 0){ showWarn('Rest period durations cannot be negative.'); return; } if(drivenBefore < 0 || drivenBetween < 0){ showWarn('Driving hours cannot be negative.'); return; } var totalDriven = drivenBefore + drivenBetween; if(totalDriven > 11){ showWarn('Total hours driven (' + totalDriven.toFixed(2) + ' hrs) exceeds the 11-hour driving limit.'); return; } /* ── FMCSA Split Sleeper Berth Logic ───────────── RULE 1: Combined rest >= 10 hours RULE 2: The longer period must be >= 7 hrs AND in sleeper berth RULE 3: The shorter period must be >= 2 hrs (sleeper or off-duty) ─────────────────────────────────────────────────── */ var totalRest = split1 + split2; var combinedOk = totalRest >= 10; var longSplit = Math.max(split1, split2); var shortSplit = Math.min(split1, split2); var longIsS1 = split1 >= split2; var longType = longIsS1 ? s1Type : s2Type; /* Long split: must be >= 7 hrs AND sleeper berth */ var longOk = (longSplit >= 7) && (longType === 'sleeper'); /* Short split: must be >= 2 hrs (any type) */ var shortOk = (shortSplit >= 2); /* Single-split detection (only one period entered) */ var oneSplit = (split1 > 0 && split2 === 0) || (split1 === 0 && split2 > 0); var isCompliant = false; var reason = ''; if(oneSplit){ isCompliant = false; reason = 'Only one split period entered. Please enter both Split 1 and Split 2 durations to check full FMCSA compliance.'; } else { var failReasons = []; if(!longOk){ if(longSplit < 7){ failReasons.push('Longer split (' + fmtHrs(longSplit) + ') is under the required 7-hour minimum.'); } else { failReasons.push('Longer split (' + fmtHrs(longSplit) + ') must be in the sleeper berth, not off-duty.'); } } if(!shortOk){ failReasons.push('Shorter split (' + fmtHrs(shortSplit) + ') is under the required 2-hour minimum.'); } if(!combinedOk){ failReasons.push('Combined rest (' + fmtHrs(totalRest) + ') is under the 10-hour minimum required.'); } isCompliant = longOk && shortOk && combinedOk; if(isCompliant){ reason = 'Both splits meet FMCSA requirements. Your 14-hour clock is paused during both rest periods and restarts at the end of Split 2.'; } else { reason = failReasons.join(' '); } } /* ── Remaining drive time ───────────────────────── */ var driveRemaining = Math.max(0, 11 - totalDriven); /* ── Timeline data (if start times provided) ──── */ var timelineData = null; if(s1Start && s1Start !== ''){ var s1End = addHrs(s1Start, split1); var midDrive = s2Start && s2Start !== '' ? s2Start : (s1End ? addHrs(s1End, drivenBetween) : null); var s2End = midDrive ? addHrs(midDrive, split2) : null; timelineData = { s1Start: to12hr(s1Start), s1End: to12hr(s1End), s2Start: s2Start && s2Start !== '' ? to12hr(s2Start) : (midDrive ? to12hr(midDrive) : null), s2End: to12hr(s2End), resumeTime: s2End ? to12hr(s2End) : null }; } /* ── Render results ──────────────────────────────── */ renderResults(isCompliant, reason, { split1: split1, split2: split2, totalRest: totalRest, longSplit: longSplit, shortSplit: shortSplit, longOk: longOk, shortOk: shortOk, combinedOk: combinedOk, longType: longType, drivenBefore: drivenBefore, drivenBetween: drivenBetween, totalDriven: totalDriven, driveRemaining:driveRemaining, s1Type: s1Type, s2Type: s2Type, oneSplit: oneSplit }, timelineData); setStatus(3); } /* ════════════════════════════════════════════════ RENDER RESULTS ════════════════════════════════════════════════ */ function renderResults(isCompliant, reason, d, tl){ /* Element refs */ var resEl = document.getElementById('zssb-res'); var banner = document.getElementById('zssb-banner'); var bannerStatus= document.getElementById('zssb-banner-status'); var bannerReason= document.getElementById('zssb-banner-reason'); var bannerSvg = document.getElementById('zssb-banner-svg'); var cardsEl = document.getElementById('zssb-cards'); var breakdownEl = document.getElementById('zssb-breakdown'); var timelineEl = document.getElementById('zssb-timeline'); var tlWrap = document.getElementById('zssb-timeline-wrap'); /* ── Compliance Banner ──────────────────────────── */ if(d.oneSplit){ banner.className = 'compliance-banner non-compliant'; bannerStatus.textContent = 'Incomplete — Enter Both Splits'; bannerSvg.innerHTML = ''; } else if(isCompliant){ banner.className = 'compliance-banner compliant'; bannerStatus.textContent = '✅ FMCSA Compliant — Valid Split'; bannerSvg.innerHTML = ''; } else { banner.className = 'compliance-banner non-compliant'; bannerStatus.textContent = '❌ Non-Compliant — Invalid Split'; bannerSvg.innerHTML = ''; } bannerReason.textContent = reason; /* ── Summary Cards ──────────────────────────────── */ var cards = []; if(!d.oneSplit){ cards.push({ v: fmtHrs(d.split1), u: d.s1Type === 'sleeper' ? 'SLEEPER' : 'OFF-DUTY', n: 'Split 1 Duration', cls: d.s1Type === 'sleeper' ? 'blue' : 'orange' }); cards.push({ v: fmtHrs(d.split2), u: d.s2Type === 'sleeper' ? 'SLEEPER' : 'OFF-DUTY', n: 'Split 2 Duration', cls: d.s2Type === 'sleeper' ? 'blue' : 'orange' }); cards.push({ v: fmtHrs(d.totalRest), u: 'TOTAL REST', n: 'Combined Off-Duty', cls: d.combinedOk ? 'green' : 'red' }); cards.push({ v: fmtHrs(d.driveRemaining), u: 'REMAINING', n: 'Drive Time Left', cls: d.driveRemaining > 4 ? 'green' : (d.driveRemaining > 2 ? 'orange' : 'red') }); } cardsEl.innerHTML = cards.map(function(c){ return '
' + '
' + c.v + '
' + '
' + c.u + '
' + '
' + c.n + '
' + '
'; }).join(''); /* ── Breakdown Table ────────────────────────────── */ var rows = []; if(!d.oneSplit){ rows.push({lbl: 'Split 1 (' + (d.s1Type === 'sleeper' ? 'Sleeper Berth' : 'Off-Duty') + ')', val: fmtHrs(d.split1), cls: ''}); rows.push({lbl: 'Split 2 (' + (d.s2Type === 'sleeper' ? 'Sleeper Berth' : 'Off-Duty') + ')', val: fmtHrs(d.split2), cls: ''}); rows.push({lbl: 'Combined Rest Total', val: fmtHrs(d.totalRest) + (d.totalRest >= 10 ? ' ✓' : ' ✗ (Need ≥10h)'), cls: d.combinedOk ? 'ok' : 'fail'}); rows.push({lbl: 'Longer Split ≥7 hrs in Sleeper Berth', val: d.longOk ? '✓ Pass' : '✗ Fail', cls: d.longOk ? 'ok' : 'fail'}); rows.push({lbl: 'Shorter Split ≥2 hrs (any type)', val: d.shortOk ? '✓ Pass' : '✗ Fail', cls: d.shortOk ? 'ok' : 'fail'}); rows.push({lbl: 'Hours Driven Before Split 1', val: fmtHrs(d.drivenBefore), cls: 'info'}); rows.push({lbl: 'Hours Driven Between Splits', val: fmtHrs(d.drivenBetween), cls: 'info'}); rows.push({lbl: 'Total Hours Driven', val: fmtHrs(d.totalDriven) + ' / 11 hrs max', cls: d.totalDriven < 11 ? 'ok' : 'fail'}); rows.push({lbl: 'Drive Time Remaining After Splits', val: fmtHrs(d.driveRemaining), cls: d.driveRemaining > 0 ? 'ok' : 'fail'}); rows.push({lbl: '14-Hour Clock Paused During Splits', val: isCompliant ? 'Yes — Both periods excluded' : 'Not applicable (fix issues above)', cls: isCompliant ? 'ok' : 'fail'}); } breakdownEl.innerHTML = rows.map(function(r){ return '
' + '' + r.lbl + '' + '' + r.val + '' + '
'; }).join(''); /* ── Timeline ───────────────────────────────────── */ if(!d.oneSplit){ tlWrap.style.display = 'block'; var items = []; items.push({ dot: 'drive', label: 'Started Driving', desc: 'Drove ' + fmtHrs(d.drivenBefore) + ' before first rest period.' }); items.push({ dot: 'sleep', label: 'Split 1 Begins' + (tl && tl.s1Start ? ' at ' + tl.s1Start : ''), desc: fmtHrs(d.split1) + ' ' + (d.s1Type === 'sleeper' ? 'in Sleeper Berth' : 'Off-Duty') + (tl && tl.s1End ? ' → Ends: ' + tl.s1End : '') }); if(d.drivenBetween > 0){ items.push({ dot: 'drive', label: 'Resumed Driving Between Splits', desc: 'Drove ' + fmtHrs(d.drivenBetween) + ' between the two rest periods.' }); } items.push({ dot: 'sleep', label: 'Split 2 Begins' + (tl && tl.s2Start ? ' at ' + tl.s2Start : ''), desc: fmtHrs(d.split2) + ' ' + (d.s2Type === 'sleeper' ? 'in Sleeper Berth' : 'Off-Duty') + (tl && tl.s2End ? ' → Ends: ' + tl.s2End : '') }); if(isCompliant){ items.push({ dot: 'done', label: '14-Hour Clock Restarts' + (tl && tl.resumeTime ? ' at ' + tl.resumeTime : ''), desc: 'Both splits complete. ' + fmtHrs(d.driveRemaining) + ' drive time remaining.' }); } else { items.push({ dot: 'off', label: 'Non-Compliant — Cannot Resume', desc: 'Fix the split issues above before resuming driving.' }); } timelineEl.innerHTML = items.map(function(it){ return '
' + '
' + '
' + '
' + it.label + '
' + '
' + it.desc + '
' + '
'; }).join(''); } else { tlWrap.style.display = 'none'; } /* ── Show results panel ─────────────────────────── */ resEl.classList.add('show'); setTimeout(function(){ resEl.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }, 100); } /* ════════════════════════════════════════════════ RESET ════════════════════════════════════════════════ */ function resetAll(){ /* Clear number inputs */ var numIds = ['zssb-driven', 'zssb-driven-between', 'zssb-s1-hrs', 'zssb-s1-min', 'zssb-s2-hrs', 'zssb-s2-min']; numIds.forEach(function(id){ var el = document.getElementById(id); if(el) el.value = ''; }); /* Clear time inputs */ ['zssb-s1-start', 'zssb-s2-start'].forEach(function(id){ var el = document.getElementById(id); if(el) el.value = ''; }); /* Reset toggle states */ s1Type = 'sleeper'; s2Type = 'sleeper'; ['zssb-s1-sleeper', 'zssb-s2-sleeper'].forEach(function(id){ var el = document.getElementById(id); if(el) el.classList.add('active'); }); ['zssb-s1-offduty', 'zssb-s2-offduty'].forEach(function(id){ var el = document.getElementById(id); if(el) el.classList.remove('active'); }); /* Hide warning and results */ hideWarn(); var resEl = document.getElementById('zssb-res'); if(resEl) resEl.classList.remove('show'); setStatus(1); } /* ── Event Listeners ──────────────────────────────── */ var calcBtn = document.getElementById('zssb-btn'); if(calcBtn) calcBtn.addEventListener('click', calc); var rstBtn = document.getElementById('zssb-reset'); if(rstBtn) rstBtn.addEventListener('click', resetAll); /* Enter key triggers calculation */ var numFields = ['zssb-driven', 'zssb-driven-between', 'zssb-s1-hrs', 'zssb-s1-min', 'zssb-s2-hrs', 'zssb-s2-min']; numFields.forEach(function(id){ var el = document.getElementById(id); if(el) el.addEventListener('keydown', function(e){ if(e.key === 'Enter') calc(); }); }); } /* end init() */ /* ── Safe DOM-ready execution ───────────────────────── */ if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', init); } else { init(); } })();
Bearing Life Calculation Calculator
ISO 281 L10 formula — get rated bearing life in hours & millions of revolutions instantly.
Step 1 — Bearing Type
Bearing Type
Load Unit
Step 2 — Load & Speed Inputs
Basic Dynamic Load Rating (C)
From bearing datasheet / catalog
Equivalent Dynamic Load (P)
Radial + axial combined load
Operating Speed (n)
Shaft rotational speed
i
C and P must be in the same unit. Both are automatically converted based on the unit selected above. Make sure P < C for meaningful results — if P ≥ C, L10 life will be ≤ 1 million revolutions.
!
Please fill in all fields with valid positive values.
Results — ISO 281 L10 Bearing Life
L10 Life Reference Chart — Industry Benchmarks
Application Category L10h Life (Hours) Typical Examples
Household / Short-Life300 – 3,000Power tools, small motors
Intermittent / Periodic Use3,000 – 8,000Agriculture, conveyors
8-Hour Daily Industrial8,000 – 12,000General factory machinery
24-Hour Continuous12,000 – 30,000Pumps, compressors, HVAC
High-Reliability Critical40,000 – 60,000Wind turbines, power plants
Extreme Reliability100,000+Aerospace, rail axle bearings

* Planning targets only. Actual life depends on lubrication, alignment, temperature, and contamination conditions.

Formula Reference & Notes (ISO 281)
  • L10 life formula: L10 = (C / P) ^ p — result in millions of revolutions
  • Convert to hours: L10h = (L10 × 10&sup6;) / (60 × n)
  • Ball bearings: p = 3  |  Roller / cylindrical bearings: p = 10/3 ≈ 3.333
  • C = Basic dynamic load rating (from manufacturer datasheet)
  • P = Dynamic equivalent bearing load (combined radial + axial force)
  • L10 = Life at which 90% of identical bearings will still be running
  • This calculator uses Basic L10 life only. It does not apply modified ISO 281:2007 adjustment factors (a₁ reliability factor or aISO lubrication/contamination factor).
  • For critical designs, validate with manufacturer software and full ISO 281 analysis.
  • Sources: ISO 281:2007, SKF Group Technical Documentation

Bearing Life Calculation Calculator: Find Your Bearing's Lifespan Instantly

A bearing life calculation tells you exactly how many hours a rolling element bearing is expected to operate before fatigue failure occurs under a given load. Whether you are a mechanical engineer designing industrial machinery or a maintenance technician planning replacement schedules, this free tool on Zo Calculator gives you a precise L10 bearing life estimate in seconds — no spreadsheets or manual math required.


What This Calculator Tells You

Enter your bearing's basic load rating, applied load, and speed, and the tool instantly returns:

  • L10 rated bearing life — the number of revolutions (or operating hours) that 90% of identical bearings will survive
  • Basic dynamic load rating (C) — the reference load capacity of your specific bearing
  • Applied dynamic equivalent load (P) — the actual combined radial and axial force the bearing experiences
  • Life exponent (p) — 3 for ball bearings, 10/3 for roller bearings
  • Operating speed (RPM) — used to convert revolution-based life into hours
  • Adjusted life expectancy in hours — the most practical output for maintenance planning

How the Calculator Works (The Formula & Logic)

The standard method for calculating bearing life is defined by ISO 281 and is the same underlying logic used by every major manufacturer, including the well-known SKF bearing life calculator methodology. The core formula is:

L10 = (C / P) ^ p

Where:

  • L10 = Basic rating life (in millions of revolutions) — the life at which 90% of bearings will still be running
  • C = Basic dynamic load rating of the bearing (in kN or lbf, found on the manufacturer's datasheet)
  • P = Dynamic equivalent bearing load (in the same units as C)
  • p = Life exponent — 3 for ball bearings, 3.33 (10/3) for roller/cylindrical bearings

To convert revolutions into operating hours, the formula extends to:

L10h = (L10 × 10⁶) / (60 × n)

Where:

  • L10h = Bearing life in hours
  • n = Rotational speed in RPM

This is the universal foundation behind all bearing life calculation methods — from quick manual checks to detailed bearing life calculation PDF reports used in engineering documentation.


Standard Ratings & Classifications (Bearing Life Reference Chart)

The table below provides general industry reference ranges for expected L10 life. These benchmarks are widely used when specifying bearings for different duty classes.

Application CategoryRecommended L10h Life (Hours)Typical Examples
Household / Short-Life Equipment300 – 3,000 hrsPower tools, small motors
Intermittent or Periodic Use3,000 – 8,000 hrsAgriculture equipment, conveyors
8-Hour Daily Industrial Use8,000 – 12,000 hrsGeneral factory machinery
24-Hour Continuous Operation12,000 – 30,000 hrsPumps, compressors, HVAC
High-Reliability Critical Systems40,000 – 60,000 hrsWind turbines, power plants
Extreme Reliability (Safety-Critical)100,000+ hrsAerospace, rail axle bearings

Note: These are planning targets, not manufacturer guarantees. Actual life depends on lubrication, alignment, temperature, and contamination.


Step-by-Step Practical Example

Let's walk through a real life of bearing calculation for a standard deep groove ball bearing used in an electric motor.

Given:

  • Basic dynamic load rating: C = 25 kN
  • Applied equivalent dynamic load: P = 10 kN
  • Rotational speed: n = 1,500 RPM
  • Bearing type: Ball bearing (p = 3)

Step 1 — Calculate L10 in millions of revolutions:

L10 = (C / P) ^ p
L10 = (25 / 10) ^ 3
L10 = (2.5) ^ 3
L10 = 15.625 million revolutions

Step 2 — Convert to operating hours:

L10h = (L10 × 1,000,000) / (60 × n)
L10h = (15,625,000) / (60 × 1,500)
L10h = 15,625,000 / 90,000
L10h ≈ 173.6 hours

Step 3 — Interpret the result:

This ball bearing has a rated L10 life of approximately 174 operating hours at the stated load and speed. If the load were reduced or the speed lowered, the life would increase significantly due to the cubic relationship in the formula. This is why calculating bearing life accurately during the design phase is so critical to avoiding unexpected downtime.


How to Use Zo Calculator's Bearing Life Calculation Tool

Using the tool at ZoCalculator.com takes under a minute. Here's exactly what to do:

  1. Select your bearing type — choose "Ball Bearing" (exponent = 3) or "Roller Bearing" (exponent = 3.33) from the dropdown.
  2. Enter the Basic Dynamic Load Rating (C) — find this value in your bearing's datasheet or product catalog. Input it in kilonewtons (kN).
  3. Enter the Applied Equivalent Load (P) — this is the combined radial and axial force your bearing actually carries during operation.
  4. Enter the Operating Speed (RPM) — the rotational speed of your shaft at normal running conditions.
  5. Click "Calculate" — the Zo Calculator instantly displays your L10 life in millions of revolutions and operating hours.
  6. Read your result — compare the output against the reference chart above to judge whether your bearing selection is appropriate for your application's duty requirements.

Practical Applications and Real-World Uses

Bearing life calculation is a foundational task across dozens of industries. Here are the most impactful real-world use cases:

  • Mechanical & Design Engineers use bearing life calculators during the initial design phase to select the right bearing size and ensure the product meets its intended service life without over-engineering.
  • Maintenance & Reliability Teams use L10h results to build proactive replacement schedules, eliminating costly unplanned breakdowns in production lines.
  • OEM Manufacturers (Motors, Pumps, Gearboxes) rely on documented bearing life calculation PDF reports as part of product compliance and quality certification files.
  • HVAC & Rotating Equipment Technicians calculate bearing life to match bearing selection with continuous 24/7 duty cycles in fans, blowers, and compressors.
  • Wind Energy & Power Generation engineers perform detailed life calculations to meet long maintenance intervals (often 20+ years), where bearing failure in a turbine nacelle is extremely expensive to address.
  • Academic & Vocational Training — students in mechanical engineering programs use tools like this to understand the ISO 281 standard and practice calculating bearing life for coursework and exams.

Important Notes & Technical Limitations

This tool is designed for educational reference and preliminary engineering planning. Before finalizing any bearing specification, be aware of the following:

  1. This calculates Basic L10 Life only. It does not apply the modified ISO 281:2007 life adjustment factors (a₁ for reliability, a_ISO for lubrication and contamination). For critical designs, consult a modified rating life (Lnm) calculation.
  2. Load input must be the dynamic equivalent load (P). If your application has combined radial and axial loads, you must first calculate P using the appropriate bearing-specific X and Y factors from the manufacturer datasheet before entering it here.
  3. Lubrication, contamination, and misalignment are not modeled. Real-world bearing life can be dramatically lower than the L10 result if the bearing runs in poor lubrication conditions, elevated temperatures, or with shaft misalignment.
  4. This tool is not a substitute for manufacturer software. For critical applications, always validate results using official tools from the bearing manufacturer and reference the ISO 281 standard or manufacturer technical documentation.

Helpful References & Sources

  • ISO 281:2007Rolling bearings — Dynamic load ratings and rating life — the international standard governing bearing life calculation methodology. Available via iso.org
  • SKF Group Technical Documentation — comprehensive engineering guides on calculating bearing life, lubrication factors, and modified life theory. Available at skf.com
  • Wikipedia — Bearing Life — a solid overview of the L10 life concept, the Lundberg-Palmgren theory, and historical development of bearing fatigue models. Available at en.wikipedia.org

🙋 Frequently Asked Questions (FAQs)

What is bearing life calculation?

Bearing life calculation is the process of estimating how long a rolling element bearing will operate reliably before at least 10% of a large sample of identical bearings experience fatigue failure. The standard method, defined by ISO 281, uses the L10 formula: L10 = (C/P)^p, where C is the dynamic load rating, P is the applied load, and p is the life exponent. The result is expressed in millions of revolutions or converted to hours using the operating speed.

What does L10 bearing life mean?

L10 bearing life is the number of operating hours or revolutions at which 90% of a group of identical bearings, running under identical conditions, will still be functioning without fatigue failure. In practical terms, it means only 10% of bearings are expected to fail before reaching the L10 figure. It is the global industry standard for specifying and comparing bearing service life across different applications.

What is the difference between a ball bearing and a roller bearing in the life formula?

The only difference in the core life of bearing calculation formula between the two types is the life exponent (p). For ball bearings, p = 3, which means life is very sensitive to load changes — doubling the load reduces life by a factor of 8. For roller and cylindrical bearings, p = 10/3 (approximately 3.33), making life slightly less sensitive to load but still dramatically affected by overloading. Always select the correct bearing type in the calculator to get an accurate result.

How do I find the basic dynamic load rating (C) for my bearing?

The basic dynamic load rating (C) is a property of the specific bearing model and is always listed in the manufacturer's product catalog or datasheet. You can find it by searching your bearing's part number (e.g., 6205, 22210) on the manufacturer's website — whether that's SKF, NSK, FAG, NTN, or another brand. It is typically listed in kilonewtons (kN) in the technical specifications table alongside the static load rating (C₀).

Is this the same method used by the SKF bearing life calculator?

Yes, the fundamental formula is identical. The SKF bearing life calculator and all major manufacturer tools are built on the same ISO 281 standard that this tool implements. The difference is that advanced manufacturer tools also apply modified life adjustment factors (aISO) that account for lubrication viscosity, contamination level, and reliability levels beyond 90%. For quick selection and preliminary engineering work, the standard L10 formula used here gives consistent, comparable results.

Can I use this calculator for tapered roller bearings?

Yes. For tapered roller bearings, select "Roller Bearing" in the calculator to apply the correct life exponent of p = 10/3. However, you must first calculate the correct dynamic equivalent load (P) for tapered roller bearings, as they carry both radial and axial (thrust) loads simultaneously. The P value for combined loading uses the formula P = XFr + YFa, where X and Y are load factors specific to your bearing's contact angle — these values are found in the bearing's manufacturer datasheet.

What is a bearing life calculation PDF, and do I need one?

A bearing life calculation PDF is a formal, documented engineering report that records the full life calculation process — inputs, formula, assumptions, results, and references — for use in product design files, compliance documentation, or maintenance planning systems. You would typically need one when submitting designs for regulatory review, ISO audits, or OEM product approval. For quick day-to-day checks, an online calculator is sufficient, but for formal engineering records, the PDF export or manual documentation should reference the ISO 281 standard.

What factors reduce actual bearing life below the calculated L10 value?

Several real-world factors can cause a bearing to fail well before its calculated L10 life. Poor lubrication is the most common cause, as inadequate viscosity creates metal-to-metal contact. Other major factors include shaft misalignment (which creates uneven load distribution), contamination from dust or moisture, excessive operating temperature, improper installation (press fits, impact mounting), and vibration from imbalanced rotating components. The calculated L10 life assumes ideal operating conditions — proper lubrication, correct mounting, and operating within rated load and speed limits.

How does operating speed (RPM) affect bearing life in hours?

Operating speed does not change the L10 life in revolutions — that is purely a function of load versus rated capacity. However, speed directly determines how quickly those revolutions accumulate, and therefore how many hours the bearing lasts. A bearing running at 3,000 RPM will exhaust its life in half the hours compared to the same bearing running at 1,500 RPM under identical loads. This is why calculating bearing life in operating hours, not just revolutions, is essential for practical maintenance scheduling.

What is the most accurate way to calculate bearing life for a critical application?

For critical applications — such as those in aerospace, power generation, or medical equipment — the standard L10 calculation is only the starting point. The most accurate approach is to use the modified rating life (Lnm) calculation from ISO 281:2007, which multiplies L10 by a reliability factor (a₁) and a system-specific adjustment factor (a_ISO). The a_ISO factor accounts for lubrication film thickness, contamination class, and bearing fatigue load limit. This analysis requires detailed knowledge of operating conditions and is typically performed using manufacturer software or detailed engineering calculations cross-referenced against the full ISO 281 standard.


Explore Related Calculators on Zo Calculator