Friction coefficient calculator
Divide the friction force by the normal force and get the coefficient μ: 20 N of friction against 50 N of normal force gives 0.4. Label the result kinetic for steady sliding or static for the peak just before slip. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Friction force
- 20
- Normal force
- 50
- Kind
- Kinetic
- Mu
- 0.4
- Friction coefficient
- 0.4
- Mu k
- 0.4
- Equation
- mu_k = 20 / 50 = 0.4
The friction coefficient is the dimensionless ratio of the force that resists sliding to the force that presses two surfaces together. This calculator accepts a friction force and a normal force in any consistent force unit, lets you label the result as kinetic or static, and returns mu equal to friction force divided by normal force. Missing forces, non-finite values, and out-of-range magnitudes are rejected before any division.
What kinetic and static friction coefficients mean
The kinetic friction coefficient and the static friction coefficient are both defined as a force ratio, not as a material constant looked up from a handbook inside this tool. Rearranged, mu equals friction force divided by normal force. That identity is dimensionless when both forces use the same unit: newtons over newtons, pounds-force over pounds-force, or any other consistent pair.
This landing therefore asks for two numbers and a regime label. Choose kinetic when the friction force you measured or computed from a free-body diagram is the force during steady sliding; choose static when it is the peak force just before slip. The calculator does not infer the regime from speed, roughness, temperature, or a table of rubber-on-concrete values.
Signed components are accepted if your axis convention makes the normal or the surface force negative; many classroom problems simply pass positive magnitudes so that mu comes out non-negative. The tool does not integrate multi-body contacts, deforming surfaces, lubrication films, or velocity-dependent friction laws. Reduce those problems to a single effective force pair and an explicit kinetic-or-static choice before calling the solver, then interpret the dimensionless number in the context of your experiment.
Practical tips, limits, and related searches
Use one consistent force unit end to end — for example both forces in newtons — before calling; this landing does not convert between SI and imperial. When a textbook gives mass and local g instead of a normal force, compute N equals m g yourself, then pass that value here. This page targets people searching for a friction coefficient calculator, kinetic mu from sliding force, static mu at impending slip, or Ff over N online.
It is not a material handbook, not a full contact-mechanics solver, and not a unit converter. Prefer this capability when you already know both force magnitudes and only need the dimensionless ratio with a kinetic or static label. Round-trip checks are easy: recompute friction force divided by normal force by hand and confirm it equals the published mu within the same twelve-decimal rounding used in the response.
If your lab later compares the experimental coefficient against a published range for a surface pair, do that comparison after this ratio check matches the lab notes, not instead of it. Related landings that start from mu and N to recover a friction force are a different search intent and a different tool.
What you can do with it
Homework checks for μ_k and μ_s
Students enter friction force, normal force, and a kinetic or static label from textbook contact problems and compare the dimensionless coefficient and substitution steps against a deterministic result before submitting.
FAQ
How is the friction coefficient calculated?
Choose kind kinetic for μ_k during sliding or kind static for μ_s at the verge of slip. The result is dimensionless when both forces use the same unit.
What is the difference between kinetic and static here?
The tool does not look up materials or infer speed.
What happens if the normal force is zero?
Division by zero is rejected because the friction coefficient is undefined when the normal force is zero.
Is the friction coefficient calculator free?
The browser tool is free and runs locally.
What if my problem gives a mass instead of a normal force?
Work out the normal force first by multiplying the mass by the local value of g, then enter that result next to the friction force. The calculator only divides two forces; it does not take masses.
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/phys/friction-coefficient \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"friction_force":20,"normal_force":50}'const res = await fetch("https://api.kit.forhosting.com/phys/friction-coefficient", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"friction_force": 20,
"normal_force": 50
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/phys/friction-coefficient",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"friction_force": 20,
"normal_force": 50
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/phys/friction-coefficient", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"friction_force":20,"normal_force":50}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"friction_force":20,"normal_force":50}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/phys/friction-coefficient", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"friction_force": 20,
"normal_force": 50
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "phys.friction_coefficient",
"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
When the surfaces are already sliding, that ratio is the kinetic coefficient mu_k; when they sit at the verge of motion, the same division is the static coefficient mu_s. If the normal force is zero there is no contact pressure and the ratio is undefined, so the task fails with invalid_input instead of inventing infinity. Successful API calls are billed at $0.002 per request; failed validation is never charged.
What kinetic and static friction coefficients mean
Coulomb friction says that the magnitude of the friction force along a contact is at most mu_s times the normal force while the interface is still, and equals mu_k times the normal force once sliding has begun. A zero normal force means there is no contact pressure, so the classical ratio is undefined and the request is rejected rather than returning Infinity or a quiet NaN.
How to call the API and what comes back
Send a JSON body with the required finite fields friction_force (aliases Ff, friction, F_f, ff, and f_friction) and normal_force (aliases N, normal, Fn, F_n, and fn). Optional kind (aliases regime and friction_kind) must be kinetic or static; when omitted, the solver labels the ratio as kinetic. Absolute values must stay within the published limit of one trillion, and normal_force must not be zero within a tiny numerical epsilon used to catch exact and near-zero singular cases. Failed validation — missing force, non-finite numbers, values outside absolute limits, an unknown kind, or zero normal force — returns invalid_input and is never charged. Pricing is a flat $0.002 per successful request with unit item. Prefer JSON numbers when you control the client; string numbers are accepted only when they match a strict finite numeric pattern for homework-form paste paths. Pair classroom examples deliberately: friction_force twenty and normal_force fifty with kind kinetic yields mu_k equal to zero point four.
Practical tips, limits, and related searches
Keep both forces inside the published absolute range so the quotient remains finite in IEEE double precision on the Worker and in the browser. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when learners deliberately set the normal force to zero.
Integration use cases
Lab reduction of sliding and limiting trials
Pipelines turn measured sliding force or peak breakaway force over measured normal load into mu_k or mu_s first, then compare the experimental coefficient against handbook ranges only after the ratio check matches the notes.
Unit tests for game and sim friction helpers
Generate known-good force pairs, kinetic versus static labels, and deliberate zero-normal rejections for coding kata expected values in physics engines and sliding contact stubs.
Technical questions
Do I need the same units for both forces?
Yes. Keep friction_force and normal_force in one consistent force unit (for example both newtons). The calculator does not convert units.