Bradford factor calculator
Three separate absences adding up to 10 days give a Bradford factor of 90, because the number of spells is squared before multiplying by the days. Enter the spells and days from your recording window to see the score. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Spells
- 3
- Days
- 10
- Score
- 90
The Bradford factor, also called the Bradford formula or Bradford absence score, is a human-resources metric that weights frequent short absences more heavily than a single long spell of the same total duration. HR business partners, line managers, occupational-health teams, and payroll analysts use it on a defined recording window—commonly a rolling fifty-two weeks—to flag disruption from unplanned absence rather than to diagnose illness or to decide a sanction. This Bradford factor calculator takes two counts from that window: the number of separate absence spells S and the total days absent D. It returns the score B = S squared times D. Zero is allowed and yields a score of zero.
What the Bradford factor measures and why S is squared
The Bradford factor answers a workforce question that a raw day count cannot: how disruptive is this person's absence pattern, given how often they went off, not only how many days they lost? UK and Commonwealth HR practice packs that idea into one identity: B equals S squared times D, where S is the number of separate absence spells (instances) in a period and D is the total number of days absent in the same period. Squaring S is the entire design.
One continuous ten-day absence is one spell of ten days, so B equals one times ten equals ten. Ten isolated one-day absences are ten spells totaling ten days, so B equals one hundred times ten equals one thousand. The calendar days lost are identical; the score is not, because frequent short interruptions tend to wreck rotas, cover, and customer service more than a single planned block.
A spell is a contiguous recorded absence that starts when the person is first marked off and ends when they return; two Monday-only absences a fortnight apart are two spells. Days are the summed working-time units your policy treats as absent—whole days, or half-days if your scheme records them. This calculator does not choose the window, does not exclude pregnancy-related or disability-related absences, does not apply trigger points, and does not tell you to issue a warning.
Those are local policy. The original School of Management work at Bradford University popularized the square-the-spells form; employers later invented their own bands. The identity itself is only multiplication.
The two counts you enter and the score
Zero spells or zero days is allowed and yields a Bradford factor of zero. On success the body echoes rounded spells and days, returns score as S squared times D, a formula string you can print next to the numbers, a short English message, and ordered substitution steps. Example: three spells totaling ten days yield a score of ninety, because three squared is nine and nine times ten is ninety.
Prefer bare numbers over formatted strings; percent signs, thousands separators, and unit labels are not parsed. Fractional days such as half-days are accepted; the identity is arithmetic, not a requirement that every count be a whole number. The calculator does not enforce days greater than or equal to spells, because a same-day return or a half-day scheme can make those two counts look mismatched.
Where a Bradford factor calculator earns its keep
People-ops teams need a reproducible Bradford factor so a plant, a store, or a remote team can be compared without each manager inventing a slightly different definition of a spell. A publisher ranking for Bradford factor calculator is targeting people who already have a spell count and a day total and want the score, not a full attendance policy, not a fit-note taxonomy, and not a dismissal decision.
Line managers who sit in monthly absence reviews need the same number the HRIS printed, so they can see why ten one-day absences look worse than one ten-day block even when the lost-day total matches. Classroom and CIPD-style courses that teach absence metrics need an oracle that rejects a negative count and still returns zero when both inputs are zero, because those two cases are how students confuse the formula with a simple day sum.
Typical trigger bands such as fifty, two hundred, or four hundred are employer-specific conventions, not part of the formula and not returned here; use the score against your own policy. Failed validation does not consume balance. Keep requests small, pin the score in tests, and you get stable absence arithmetic for widgets, case files, and edge workers without standing up a full HRIS of your own.
What you can do with it
Monthly absence scorecards
Enter spell count and total days absent to publish a comparable Bradford factor across plants, stores, or teams without each manager choosing a different formula.
Line-manager case files
Show why ten one-day absences score far above one ten-day block so a review conversation sits on the same number the HRIS printed.
FAQ
How do I calculate the Bradford factor?
Send spells (S) and days (D). The Bradford factor is B = S squared times D. Example: 3 spells and 10 days give 3 × 3 × 10 = 90.
What happens if spells or days is negative?
An absence count cannot be below zero, so a negative spell count or a negative day count is rejected and is not billed.
Why does ten one-day absences score so much higher than one ten-day absence?
The formula squares the spell count. Ten spells totaling ten days is 10 × 10 × 10 = 1000. One spell of ten days is 1 × 1 × 10 = 10. Same days lost; much more disruption from frequency.
Does this apply official trigger bands such as 50, 200, or 400?
No. Those bands are employer policy, not part of the Bradford identity. The calculator returns the score only; compare it with your own policy.
What counts as a separate absence spell?
A spell is one continuous absence, from the day the person is first marked off until they return. Two Monday-only absences a fortnight apart are two spells, even though each lasts a single day.
Related tools
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/fin/bradford-factor \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"spells":3,"days":10}'const res = await fetch("https://api.kit.forhosting.com/fin/bradford-factor", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"spells": 3,
"days": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/bradford-factor",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"spells": 3,
"days": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/bradford-factor", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"spells":3,"days":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"spells":3,"days":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/bradford-factor", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"spells": 3,
"days": 10
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.bradford_factor",
"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.
Limits
max_abs | 1000000000000 |
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. |
Technical notes
Negative spell or day counts are rejected with invalid_input because a count cannot go below zero. Successful calls are billed at $0.002; invalid input is not charged.
Input contract, response shape, and validation
POST a JSON body with two required finite numbers. spells is the count of separate absence instances in the period; aliases s, instances, absences, absence_spells, number_of_spells, and spells_of_absence are accepted so an HRIS export does not need a rename step. days is the total number of days absent in the same period; aliases d, total_days, days_absent, total_days_absent, and absence_days are accepted. Each field may arrive as a JSON number or as a numeric string that matches a strict finite decimal pattern. Absolute values must stay within one trillion so intermediate products remain finite in IEEE double precision on the Worker and in the browser. Missing fields, empty strings, non-finite values, a negative spell count, a negative day count, or a value outside those limits fail with invalid_input naming the field and are not billed. Pricing for a successful item is a flat $0.002.
Where a Bradford factor calculator earns its keep
Engineers writing payroll and people-analytics tests pin known-good pairs—three spells and ten days as ninety, ten spells and ten days as one thousand, and a negative day count as invalid_input—so a reporting library cannot silently treat Bradford as if it were total days only.
Integration use cases
Absence-metrics homework and tests
Students and QA pin three-spells-and-ten-days as ninety and a negative count as invalid_input, matching the textbook identity exactly.
Technical questions
What does the Bradford factor calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.