Coefficient of restitution calculator
A ball that approaches at 10 m/s and separates at 6 m/s has a coefficient of restitution of 0.6. Enter both relative speeds in the same unit to see how bouncy the impact was, with the substituted equation and each step. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Approach speed
- 10
- Separation speed
- 6
- V approach
- 10
- V app
- 10
- V separation
- 6
- V sep
- 6
A coefficient of restitution calculator turns the elementary impact-mechanics ratio into a practical tool for homework, lab books, and quick engineering checks. Enter the relative speed of approach before a collision and the relative speed of separation after it in the same speed unit system, and the tool returns the dimensionless coefficient e equals separation speed divided by approach speed, together with a substituted equation, a short physics message, and ordered step strings you can paste into worksheets or automated tests. Missing either speed, non-finite values, and out-of-range magnitudes are likewise rejected before any ratio is published.
What the bounce ratio means and its zero-speed limit
The coefficient of restitution is defined as the ratio of the relative speed of separation after a collision to the relative speed of approach before the collision. The result is dimensionless when both speeds share the same unit—metres per second over metres per second, feet per second over feet per second, or any other consistent speed pair—so you never convert the answer into a speed unit after the division.
Positive approach and separation speeds are the usual textbook case of relative magnitudes along the line of impact; signed relative components are still accepted if your free-body or kinematics diagram orients the normal axis opposite to convention, because the algebra is still a single division.
Many classroom problems expect zero less than or equal to e less than or equal to one for ordinary bounces, with e equals one for a perfectly elastic collision and e equals zero for a perfectly plastic sticking impact; this tool does not clamp the ratio, so super-elastic or signed intermediate values pass through if your inputs produce them.
It also does not solve two-body final velocities from masses and an assumed e, look up rubber-on-steel handbook tables, or integrate multi-contact three-dimensional impacts—reduce those problems to a single effective separation and approach speed pair before calling the solver.
Practical tips, limits, and related searches
Use one consistent speed unit end to end—for example both speeds in metres per second—before calling; this landing does not perform unit conversion between SI and imperial. When teaching collinear impact, treat this tool as the ratio step only: if the source problem gives component velocities of two bodies before and after impact, form the relative approach and separation speeds yourself, then pass those magnitudes here.
This page targets people searching for a coefficient of restitution calculator, e from separation and approach speed, or bounce coefficient online; it is not a material handbook lookup for sports balls, not a full two-body velocity solver with masses, and not a unit converter. Prefer this capability when you already know both relative speeds and only need the dimensionless ratio; if your lab reports rebound and impact speeds along the contact normal, this is the one-line check before you write e into a report.
Round-trip checks are easy: recompute separation divided by approach by hand and confirm it equals the published e within the same twelve-decimal rounding used in the response.
What you can do with it
Lab pre-check before material tables
Pipelines validate measured rebound speed over measured impact approach first, then compare the experimental e against handbook ranges for the surface pair only after the ratio check matches the lab notes.
FAQ
What formula does the coefficient of restitution calculator use?
The result is dimensionless when both speeds use the same unit.
What happens if the approach speed is zero?
Division by zero is rejected because the coefficient of restitution is undefined when the approach speed is zero.
Is the coefficient of restitution calculator free?
The browser tool is free and runs locally.
What does a coefficient of 1 or 0 mean?
A value of 1 is a perfectly elastic collision, where the bodies separate as fast as they approached. A value of 0 is a perfectly plastic impact, where they stick together. Ordinary bounces fall between the two.
Can the result be greater than 1?
Yes, if your speeds produce it. The tool does not cap the ratio, so a super-elastic value or a signed result passes through unchanged. Check the inputs if you expected an ordinary bounce.
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/mech/coefficient-of-restitution \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"approach_speed":10,"separation_speed":6}'const res = await fetch("https://api.kit.forhosting.com/mech/coefficient-of-restitution", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"approach_speed": 10,
"separation_speed": 6
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/mech/coefficient-of-restitution",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"approach_speed": 10,
"separation_speed": 6
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/mech/coefficient-of-restitution", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"approach_speed":10,"separation_speed":6}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"approach_speed":10,"separation_speed":6}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/mech/coefficient-of-restitution", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"approach_speed": 10,
"separation_speed": 6
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "mech.coefficient_of_restitution",
"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
If the approach speed is zero, validation fails with a clear invalid_input error so singular forms never silently invent infinity or NaN. Pricing is a flat $0.002 per successful API request; failed validation is never charged.
What e = v_sep / v_app means and when approach speed must not be zero
In symbols, e equals v_sep over v_app. Physically, a zero approach speed means the bodies were not approaching along the contact normal, so the classical restitution ratio is undefined and this calculator rejects approach speed equal to zero with invalid_input 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 approach_speed (aliases v_approach, approach, v_app, u_rel, approach_velocity, and relative_approach) and separation_speed (aliases v_separation, separation, v_sep, v_rel, separation_velocity, and relative_separation). Absolute values must stay within the published limit of one trillion, and approach_speed must not be zero within a tiny numerical epsilon used to catch exact and near-zero singular cases. Failed validation—missing speed, non-finite numbers, values outside absolute limits, or zero approach speed—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.
Practical tips, limits, and related searches
Keep both speeds inside the published absolute range so the quotient remains finite in IEEE double precision on the Worker and in the browser. Pair classroom examples deliberately: approach ten and separation six yields e equals zero point six; approach five and separation five yields e equals one for a perfectly elastic relative bounce; and approach equal to zero demonstrates the hard invalid_input path required by the product brief. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when learners deliberately set approach speed to zero.
Integration use cases
Homework checks for e = v_sep / v_app
Students enter relative approach and separation speeds from textbook collision problems and compare the dimensionless coefficient and substitution steps against a deterministic result before submitting.
Unit tests for game and sim bounce helpers
Generate known-good speed pairs and deliberate zero-approach rejections for coding kata expected values in physics engines and collision response stubs.
Technical questions
Do I need the same units for both speeds?
Yes. Keep approach_speed and separation_speed in one consistent speed unit (for example both m/s). The calculator does not convert units.
What does e = 0 or e = 1 mean?
e = 0 is a perfectly plastic (no rebound) impact; e = 1 is a perfectly elastic relative bounce. Values between zero and one are ordinary dissipative collisions. This tool reports the ratio of the speeds you supply without clamping.