Bearing life hours calculator
A bearing catalogue often states basic rating life, or L10 life, in millions of revolutions, while maintenance plans and equipment specifications are written in operating hours.
Run — free
This calculator connects those two forms. Enter the published L10 value and the bearing's constant rotational speed in revolutions per minute to obtain life in hours and continuous-operation days. It uses the standard speed conversion directly, displays the formula, and keeps the original inputs visible so the result can be checked or recorded.
What an L10 result means
Bearing L10 life is a statistical rating, not a promise that every individual bearing will run for exactly the calculated time. Under the load and reliability assumptions used for the rating, L10 represents the life that 90 percent of a sufficiently large group of apparently identical bearings are expected to reach or exceed before classical rolling-contact fatigue develops. Catalogue calculations commonly express that life in millions of revolutions because fatigue accumulates with rolling cycles. Maintenance teams, however, schedule inspections and replacements in hours. This calculator performs only that unit-and-speed conversion. It does not recalculate dynamic load rating, equivalent bearing load, reliability adjustment factors, lubrication effects, contamination, temperature, mounting quality, or duty severity. Therefore, use the L10 input produced by the appropriate bearing-life method and conditions. Treat the hour result as the operating-time expression of that supplied rating, then apply the engineering factors, safety policy, and manufacturer guidance required for the actual machine.
How millions of revolutions become hours
The conversion begins by multiplying the entered L10 value by 1,000,000 to recover the total rated revolutions. A shaft turning at the entered RPM completes that many revolutions each minute, so dividing total revolutions by RPM gives minutes of operation. Dividing once more by 60 gives hours. Combined into one expression, L10h equals L10 in millions of revolutions multiplied by 1,000,000, divided by 60 times RPM. For example, an L10 rating of 50 million revolutions at 1,200 RPM corresponds to 694.444444 hours when six decimal places are requested. The calculator also reports continuous-operation days by dividing hours by 24; that is a convenient reference, not an assumption about a real shift schedule. Both L10 and RPM must be greater than zero. RPM is treated as constant, so the result is most appropriate for fixed-speed equipment or for a separately calculated representative speed that is valid for the specified duty cycle.
Using the answer in a maintenance plan
Start with a bearing-life value calculated for the actual bearing, load, speed regime, and required reliability. Enter that L10 value in millions of revolutions and the corresponding rotational speed, then retain the returned inputs, formula, and hour value with the calculation record. If a machine runs only part of each day, convert the operating-hour result into calendar time using expected running hours rather than the continuous-days field. If speed changes materially between operating states, do not simply enter the maximum or arithmetic-average RPM without an engineering basis. Variable load and speed require an equivalent-duty calculation because bearing damage does not necessarily accumulate in the same proportion under every state. Likewise, an L10 hour result should not automatically become the replacement interval. Planned intervals may need to be shorter because of criticality, inspection findings, lubricant life, environmental contamination, transient loads, regulatory obligations, or the consequences of failure. The value is best used as one transparent input to a broader reliability and maintenance decision.
What you can do with it
Translate a catalogue rating
Convert a supplier's L10 value in millions of revolutions into the operating-hour unit used on an equipment specification.
Support maintenance scheduling
Express a calculated fatigue life in hours before applying inspection policy, duty schedule, and safety margins.
Compare fixed-speed applications
See how the same revolution-based bearing rating translates into different hour lives at different constant shaft speeds.
FAQ
What formula does the calculator use?
It uses L10h = L10 × 1,000,000 / (60 × RPM), where L10 is entered in millions of revolutions.
Does L10 mean every bearing lasts this long?
No. L10 is a statistical basic rating life associated with 90 percent reliability under the assumptions used to calculate it.
Can I enter zero RPM?
No. Time cannot be obtained by dividing revolutions by zero speed, so RPM must be a positive finite value.
Can this handle variable-speed duty?
It converts at one constant RPM. Determine a suitable equivalent life or duty value using an appropriate engineering method before using this conversion for variable conditions.
What does the API calculation cost?
Each API request costs $0.002. The same deterministic calculation can also run free in the browser.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/eng/bearing-life-hours \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"l10_million_revolutions":50,"rpm":1200}'const res = await fetch("https://api.kit.forhosting.com/eng/bearing-life-hours", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"l10_million_revolutions": 50,
"rpm": 1200
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/eng/bearing-life-hours",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"l10_million_revolutions": 50,
"rpm": 1200
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/eng/bearing-life-hours", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"l10_million_revolutions":50,"rpm":1200}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"l10_million_revolutions":50,"rpm":1200}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/eng/bearing-life-hours", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"l10_million_revolutions": 50,
"rpm": 1200
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "eng.bearing_life_hours",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |