High-low method calculator
A high month of 10,000 units costing 25,000 and a low month of 6,000 units costing 17,000 split into a variable cost of 2 per unit and a fixed cost of 5,000. Two extreme observations, both cost figures, no regression needed. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- High activity
- 10,000
- High cost
- 25,000
- Low activity
- 6,000
- Low cost
- 17,000
- Activity spread
- 4,000
- Cost spread
- 8,000
- Variable cost per unit
- 2
- Fixed cost
- 5,000
The high-low method is the two-point mixed-cost shortcut used in managerial accounting: take the highest activity level and the lowest activity level, together with the total cost observed at each of those points, and split mixed cost into a constant fixed amount and a variable cost per unit of activity. Variable cost per unit is the change in total cost divided by the change in activity; fixed cost is then total cost at the high point minus that unit rate times high activity. Students, CMA candidates, and controllers look up a high-low method calculator when they already have the two extreme observations and do not need a full least-squares regression.
What the high-low method is and how the two extreme points become both cost figures
The high-low method is the two-observation mixed-cost split taught in every managerial-accounting course: identify the period with the highest activity level and the period with the lowest activity level, record the total cost at each of those points, and convert the pair into a constant fixed cost plus a variable cost per unit of activity. Variable cost per unit is the change in total cost divided by the change in activity, which is the slope of the line that joins the two extreme points.
Fixed cost is then recovered by substituting that slope back into either observation: total cost at the high point minus variable cost per unit times high activity, which is algebraically the same as total cost at the low point minus variable cost per unit times low activity.
The method does not use the in-between months, does not run a regression, and does not claim to be the statistically best fit; it is the exam-room identity you apply when you already have the two extremes and need both cost figures in one step. Activity is typically units produced, machine hours, labour hours, or kilometres; cost is the mixed total in currency units at that same observation.
Zero activity at the low point is allowed and simply means all of the low-point cost is treated as fixed once the slope is known. Negative activity or a negative total cost is rejected because those are not textbook activity levels or costs. Numeric outputs use half-up rounding so goldens compare byte-for-byte across runtimes.
A classic worked pair is a high month of ten thousand units at twenty-five thousand of mixed cost and a low month of six thousand units at seventeen thousand, which yields a variable cost of two per unit and a fixed cost of five thousand.
Where a high-low method calculator earns its keep
Managerial-accounting courses use a high-low method calculator so students can turn any pair of extreme observations into both the variable cost per unit and the fixed cost without mixing the identity with least-squares regression or a scattergraph they have not been asked to draw. Exam generators and LMS plugins need a deterministic oracle that rejects equal activity levels instead of inventing infinity that a buggy grader might treat as success. Failed validation does not consume balance.
Use this capability when you already have the high and low activity levels and the total costs at those two points; if you have a full series of monthly observations and want a least-squares slope, that is a different estimator and does not belong in this two-point definition. This calculator is also distinct from recovering fixed cost as total cost minus total variable cost at a single output level, which assumes you already know total variable cost rather than estimating both figures from the extremes.
What you can do with it
Classroom mixed-cost splits
Let students enter the high and low activity levels with the mixed total cost at each point and verify both the variable cost per unit and the fixed cost against textbook worked examples.
LMS and CMA exam auto-grading
Mark high-low method items with a deterministic oracle that rejects equal activity levels and never invents infinity when the activity spread is zero.
Budget and cost-estimate notebooks
Batch-convert last year's high month and low month into a comparable variable-rate and fixed-cost pair without spreadsheet formula drift.
FAQ
How does the high-low method estimate fixed cost and variable cost per unit?
A high of 10000 units at 25000 and a low of 6000 units at 17000 yield a variable cost of 2 per unit and a fixed cost of 5000.
What happens if the high and low activity levels are equal?
The high-low method divides by the activity spread, so equal activity levels would be a division by zero. Missing values, empty strings, infinities, and NaN are also rejected and are not billed.
Do I have to label the points in activity order, or can I swap high and low?
The calculator uses the values as labelled. Swapping the high and low labels still yields the same slope and intercept because both the cost spread and the activity spread change sign. What it cannot do is run when the two activity levels are equal.
Is the high-low method the same as least-squares regression or recovering fixed cost as total minus variable?
No. Least-squares uses the full series of observations. Recovering fixed cost as total cost minus total variable cost at one output level assumes you already know total variable cost.
What can I use as the activity measure?
Any driver that moves the cost: units produced, machine hours, labour hours or kilometres. Use the same driver at both points and the total cost observed in that same period. Zero activity at the low point is allowed.
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/high-low-method \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"high_activity":10000,"high_cost":25000,"low_activity":6000,"low_cost":17000}'const res = await fetch("https://api.kit.forhosting.com/fin/high-low-method", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"high_activity": 10000,
"high_cost": 25000,
"low_activity": 6000,
"low_cost": 17000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/high-low-method",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"high_activity": 10000,
"high_cost": 25000,
"low_activity": 6000,
"low_cost": 17000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/high-low-method", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"high_activity":10000,"high_cost":25000,"low_activity":6000,"low_cost":17000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"high_activity":10000,"high_cost":25000,"low_activity":6000,"low_cost":17000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/high-low-method", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"high_activity": 10000,
"high_cost": 25000,
"low_activity": 6000,
"low_cost": 17000
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.high_low_method",
"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. |
Technical notes
This endpoint accepts the four figures, applies the textbook identities, and returns both cost figures. If the high and low activity levels are equal the task fails with invalid_input, because the method would divide by zero.
What the high-low method is and how the two extreme points become both cost figures
When the two activity levels are equal there is no spread to divide by, the slope is undefined, and this calculator rejects the request with invalid_input rather than returning infinity or not-a-number.
Input contract, response shape, and error behaviour
Optional decimals is an integer from zero through twelve, default six, controlling half-up rounding on the spread fields, the variable cost per unit, and the fixed cost. Example: high activity 10000 with high cost 25000 and low activity 6000 with low cost 17000 returns a variable cost of 2 per unit and a fixed cost of 5000, because the cost spread of 8000 over the activity spread of 4000 is 2, and 25000 minus 2 times 10000 is 5000. A second textbook pair of 1000 machine hours at 8000 and 400 machine hours at 4400 returns a variable cost of 6 per hour and a fixed cost of 2000. Negative activity and negative cost are rejected the same way. Failed validation does not consume balance, which keeps exploratory scripts cheap when developers intentionally send equal activity levels to confirm the error path. POST a JSON body with four required finite non-negative numbers. high_activity (aliases high_units, high_volume, and high_level) is the activity at the highest observation, in physical units such as units produced or machine hours. high_cost (aliases high_total_cost and cost_high) is the mixed total cost at that same high observation, in currency units. low_activity (aliases low_units, low_volume, and low_level) is the activity at the lowest observation, in the same physical units. low_cost (aliases low_total_cost and cost_low) is the mixed total cost at that same low observation. On success the body echoes the four inputs, then activity_spread as high activity minus low activity, cost_spread as high cost minus low cost, variable_cost_per_unit as cost spread over activity spread, fixed_cost as high cost minus variable cost per unit times high activity, a formula string restating both identities, and a short interpretation. Missing fields, empty strings, booleans, non-numeric strings, NaN, and infinities fail with invalid_input naming the field and are not billed. Equal high_activity and low_activity fail with invalid_input because the high-low method divides by the activity spread. Prefer plain JSON numbers over strings with currency symbols or thousand separators; numeric strings are accepted only when they match a strict finite number pattern without commas or labels. Pricing is a fixed $0.002 per successful call with unit item.
Where a high-low method calculator earns its keep
Budget workbooks and cost-estimate notebooks often freeze last year's high month and low month; pinning the arithmetic in a tiny parse API keeps spreadsheet drift out of the mixed-cost line when someone later changes only the high-point total. Keep requests small, pin the rounded variable_cost_per_unit and fixed_cost fields in tests, and you get reproducible mixed-cost splits for homework, CMA drills, and edge workers without standing up a full cost-behavior engine of your own.
Technical questions
What does the high-low method calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.