Mph to km/h converter
Turn a speed in miles per hour into kilometers per hour with the exact factor: 1 mph is 1.609344 km/h, fixed by the legal length of the mile, so road limits and wind gusts convert without the drift of the rough 1.6 rule. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Mph
- 1
- Result
- 1.609344 km/h
- Converted
- 1.609344
- Kmh
- 1.609344
- From unit
- mph
A miles-per-hour-to-kilometres-per-hour converter turns a statute road-speed reading into the metric unit used by most international dashboards, weather products, and SI-facing reports. Approximate mental shortcuts such as multiply by one point six are rejected in favour of the defined constant, so homework checks and vehicle app exports match engineering tables.
Why miles per hour and kilometres per hour still meet at 1.609344
Miles per hour remain the default road-speed unit in the United States, the United Kingdom in many everyday contexts, and large parts of transport media that quote vehicle limits, wind gusts, or pacing in mph. One mile per hour is one statute mile of travel in one hour.
The international statute mile has been fixed at exactly one thousand six hundred nine point three four four metres since the 1959 yard and pound agreement, which makes one mile per hour equal to exactly one point six zero nine three four four kilometres per hour after dividing by one thousand metres per kilometre. Kilometres per hour are the SI-derived unit most continental European road signs, metric dashboards, school science problems, and international product copy expect.
The bridge between them is therefore a single exact multiplication, kilometres per hour equals miles per hour times one point six zero nine three four four, not a survey approximation or a memory of “about one point six.” Teachers and drivers often still teach a rough rule of thumb, but that introduces a scale error that shows up immediately on a sixty-mile-per-hour highway limit or a hundred-mile-per-hour storm gust.
Practical tips, checks, and related searches
Prefer sending bare numbers when you control the client; string numbers are accepted only when they match a strict finite numeric pattern without units, thousand separators, or currency symbols. Round-trip sanity checks are easy: convert one mile per hour and confirm you receive exactly one point six zero nine three four four kilometres per hour after rounding, or convert sixty miles per hour and confirm ninety-six point five six zero six four kilometres per hour.
When teaching, pair the exact path with a rough mental shortcut so students see the drift on higher speeds. Stay inside the absolute range so the multiplication cannot overflow into a non-finite result the solver must reject. This landing targets people searching for mph to kmh, convert miles per hour to kilometers per hour, or an exact one point six zero nine three four four calculator; it is not a general multi-unit speed hub, not a km/h-to-mph primary form, not a knots tool, and not a Beaufort scale force converter.
Prefer this capability when the input is already in statute miles per hour and you only need kilometres per hour; if you must convert among many speed units in one call, use a broader speed converter instead.
What you can do with it
Road and travel speed displays
Turn US or UK mph speed limits and odometer readings into km/h for metric dashboards, rental-car apps, and cross-border trip planning with the same exact factor every row.
Weather and sports briefings
Convert wind, cycling, and race speeds quoted in mph into kilometres per hour for SI reports, coaching notes, and international media packages.
FAQ
Is 1.609344 exact or approximate?
Exact. This tool uses the international statute mile definition (1959 yard and pound agreement), not a rough “about 1.6” estimate.
Can I convert km/h back to mph?
This capability is mph → km/h only. Divide km/h by 1.609344 on your side, or use a bidirectional speed converter for other units.
Is the mph to km/h converter free?
The browser tool is free and runs locally.
Why not just multiply by 1.6?
Because 1.6 is a rounded rule of thumb. The exact factor is 1.609344, and the gap grows with speed, so a 60 mph highway limit or a 100 mph storm gust already comes out noticeably off.
Where does the 1.609344 factor come from?
Since the 1959 yard and pound agreement, a statute mile measures exactly 1609.344 meters. Dividing by the 1000 meters in a kilometer gives exactly 1.609344 km/h for every mile per hour.
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/conv/mph-to-kmh \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mph":60}'const res = await fetch("https://api.kit.forhosting.com/conv/mph-to-kmh", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mph": 60
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/conv/mph-to-kmh",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mph": 60
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/conv/mph-to-kmh", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mph":60}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mph":60}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/conv/mph-to-kmh", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"mph": 60
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "conv.mph_to_kmh",
"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
Invalid or missing input fails with a clear invalid_input error instead of inventing a number.
How to call the API and what comes back
Absolute values must stay within the published limit of one trillion. Send a JSON body with one required finite number field named mph. Aliases mi_h, mi_per_h, miles_per_hour, value, speed, mph_value, and mi_per_hour are accepted so SDK clients and form posts can use the name that fits the product. On success the response echoes rounded mph, sets kmh, result, and converted to the same rounded kilometres-per-hour magnitude, unit to the token km/h, from_unit to mph and to_unit to km/h, factor and kmh_per_mph to the exact constant one point six zero nine three four four after fixed rounding, metres_per_mile to one thousand six hundred nine point three four four, formula to the string km/h equals mph times one point six zero nine three four four, message to a short English summary, and steps to an ordered array of substitution lines. Failed validation—missing fields, non-finite numbers, bare plus or minus signs, non-numeric strings, values outside absolute limits, or a non-finite converted result—returns invalid_input and is never charged. Pricing is a flat $0.002 per successful request with unit item and zero marginal unit price.
Practical tips, checks, and related searches
Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when learners deliberately omit mph or pass text.
Integration use cases
Homework and unit-test fixtures
Students and engineers convert classroom mph readings to km/h and pin golden JSON so browser and API arithmetic never drift.
Technical questions
What formula converts mph to km/h?
km/h = mph × 1.609344. One international statute mile is defined as exactly 1609.344 metres, and one kilometre is 1000 metres, so 1 mph = 1.609344 km/h exactly.
What happens on missing or non-numeric input?
The API returns invalid_input naming the problem (for example a missing mph field). Failed tasks are not charged.