Driver reaction distance calculator
Reaction distance is the ground a vehicle covers after a driver perceives a hazard but before braking begins.
Run — free
This calculator converts speed from kilometres per hour to metres per second, multiplies it by reaction time in seconds, and returns the distance in metres and feet. It isolates the human-response part of stopping distance, making it useful for road-safety lessons, driving instruction, incident review, and quick scenario comparisons. The calculation is deterministic and does not estimate braking distance, road grip, or total stopping distance.
How reaction distance is calculated
A moving vehicle continues covering ground during the interval between a driver noticing a hazard and the brakes beginning to act. Reaction distance is therefore speed multiplied by reaction time, provided both quantities use compatible units. The calculator first divides speed in kilometres per hour by 3.6 to obtain metres per second. It then multiplies that converted speed by the supplied reaction time in seconds. For example, a vehicle travelling at 90 kilometres per hour moves at 25 metres per second. With a reaction time of 1.5 seconds, it travels 37.5 metres before braking begins. The response also converts the result to feet for readers who use customary road measurements. This is a constant-speed model for the reaction interval: it assumes the vehicle maintains the entered speed until braking starts. It does not add braking distance, so the result must not be presented as the full distance needed to stop. The same pure function runs in the browser and through the API, with no network calls, random values, or clock-dependent behaviour.
Choosing realistic inputs and interpreting the result
Enter the speed shown for the vehicle immediately before the reaction interval, in kilometres per hour. Enter the elapsed time from perceiving the relevant hazard to the beginning of braking, in seconds. Both fields accept zero and reject negative, missing, non-numeric, or non-finite values. A zero speed produces zero distance because the vehicle is stationary; a zero reaction time also produces zero because braking begins immediately in the mathematical scenario. Real reaction time varies with attention, visibility, expectation, fatigue, impairment, age, and how an event is defined or measured. This calculator does not select a universal reaction-time assumption for you. Use a value supported by the lesson, policy, study, recording, or scenario you are analysing, and compare several values when uncertainty matters. The returned speed in metres per second makes the unit conversion visible, while the metre and foot results make reporting straightforward. Treat the answer as an arithmetic scenario, not a finding about what a particular driver actually perceived or when that person responded. Successful API requests cost $0.002 per item.
Reaction distance versus braking and stopping distance
Reaction distance ends where braking begins. Braking distance starts at that point and continues until the vehicle stops, while total stopping distance is commonly described as reaction distance plus braking distance. Keeping these quantities separate prevents a frequent road-safety mistake: speed affects the pre-braking distance directly, but braking distance also depends on vehicle dynamics and conditions such as tyres, brake performance, road gradient, surface friction, weather, and the way braking force develops. This capability intentionally computes only the pre-braking component from speed and time. It neither predicts a collision nor reconstructs an incident, and it should not replace measurements, engineering models, local standards, or expert analysis where legal or safety decisions depend on the answer. It is well suited to controlled comparisons. You can hold reaction time fixed to show how greater speed increases the ground covered before braking, or hold speed fixed to show the effect of a longer response. In classroom demonstrations, driver training materials, fleet briefings, and preliminary scenario tables, that narrow scope makes the output easy to explain, reproduce, and audit.
What you can do with it
Road-safety education
Show how far a vehicle travels before braking at different speeds and assumed reaction times.
Driver training scenarios
Build clear examples that separate perception and reaction travel from the later braking phase.
Preliminary incident comparisons
Create reproducible reaction-distance scenarios before applying a specialised braking or reconstruction model.
FAQ
What is driver reaction distance?
It is the distance a vehicle travels between the driver perceiving a hazard and braking beginning.
What formula does the calculator use?
It uses reaction distance in metres = (speed in km/h divided by 3.6) multiplied by reaction time in seconds.
Is reaction distance the same as stopping distance?
No. Total stopping distance also includes the distance travelled after braking begins.
Does the calculator choose a standard reaction time?
No. You provide the reaction time appropriate to your source or scenario because real response times vary.
How much does the API cost?
Each successful API request costs $0.002 per item. The browser calculation is free.
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/travel/reaction-distance \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"speed_kmh":90,"reaction_time_seconds":1.5}'const res = await fetch("https://api.kit.forhosting.com/travel/reaction-distance", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"speed_kmh": 90,
"reaction_time_seconds": 1.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/travel/reaction-distance",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"speed_kmh": 90,
"reaction_time_seconds": 1.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/travel/reaction-distance", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"speed_kmh":90,"reaction_time_seconds":1.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"speed_kmh":90,"reaction_time_seconds":1.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/travel/reaction-distance", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"speed_kmh": 90,
"reaction_time_seconds": 1.5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel.reaction_distance",
"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. |