EV efficiency converter
Read any EV efficiency figure in the unit you know: 250 Wh/mi from a US dashboard is 4 mi/kWh or 25 kWh/100mi, and you see all six units at once, worked out with the exact 1.609344 km mile. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Value
- 250
- From
- Wh mi
- To
- Wh km
- Result
- 155.342798059
- From label
- watt-hours per mile
- To label
- watt-hours per kilometer
- Wh per mi
- 250
Electric vehicle efficiency is reported in conflicting units: watt-hours per mile on US dashboards, watt-hours per kilometer or kilowatt-hours per 100 kilometers in Europe and Asia, and miles per kilowatt-hour in many owner communities. Comparing a sticker figure, a trip computer, a brochure, or a forum post usually means flipping distance and energy scales by hand—and it is easy to invert a reciprocal unit or use an approximate mile.
Supported units and the Wh/km conversion bridge
Consumption units (Wh/mi, Wh/km, kWh/100mi, kWh/100km) measure energy used per distance—lower is better. Efficiency units (mi/kWh, km/kWh) measure distance per energy—higher is better—and are exact reciprocals of the corresponding Wh-per-distance figures after accounting for the 1000 watt-hours in one kilowatt-hour. Because there is a single bridge, converting A to B and B to A is consistent up to the published twelve-significant-digit rounding, and there is no pairwise factor matrix that can drift out of sync.
EPA miles-per-gallon-equivalent (MPGe) is intentionally out of scope: MPGe embeds a fixed gasoline energy content and is not a pure electrical efficiency figure, so it belongs to a different product surface than this unit converter.
For stickers, trip logs and fleet reports
Use the free in-browser EV efficiency converter when you need a quick Wh/mi to Wh/km, mi/kWh to kWh/100km, or brochure kWh/100km to dashboard mi/kWh check while reading a window sticker, trip log, owner manual, or comparison table. Open the page, enter the number and units, and copy the full six-unit table without installing a spreadsheet or a unit library. Source inputs follow the same retention rules as other KIT parse items, and results are safe to cache because the algorithm is fully deterministic.
Authors shipping mobile apps or chatbots can map the result and formula fields directly into cards that show both the primary conversion and the full unit table drivers and engineers expect when markets mix imperial and metric reporting.
What you can do with it
Compare US and metric EV stickers
Convert brochure kWh/100km or Wh/km figures into Wh/mi and mi/kWh so US buyers can rank vehicles against dashboard and EPA-style electrical efficiency labels.
Fleet telematics normalization
Normalize mixed trip-computer units (Wh/mi, mi/kWh, kWh/100km) into one canonical table before rolling up fleet energy use in reports and APIs.
Charging and range product pipelines
Feed a deterministic efficiency conversion into range and trip-cost tools without hand-written factor tables or spreadsheet drift across locales.
FAQ
How do I convert 250 Wh/mi to Wh/km?
The result is 250 ÷ 1.609344 Wh/km, plus the full six-unit table and a readable formula.
What is the relationship between mi/kWh and Wh/mi?
The converter applies that identity through the Wh/km bridge.
What happens if I send an unknown unit?
The message names the field and lists supported units. Validation failures are not charged.
Is the EV efficiency converter free?
The browser tool runs free on your device.
Is a lower or a higher EV efficiency number better?
It depends on the unit. Wh/mi, Wh/km, kWh/100mi and kWh/100km measure energy used per distance, so lower is better. Mi/kWh and km/kWh measure distance per energy, so there higher is better.
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/ev-efficiency \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":250,"from":"wh_mi","to":"wh_km"}'const res = await fetch("https://api.kit.forhosting.com/conv/ev-efficiency", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": 250,
"from": "wh_mi",
"to": "wh_km"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/conv/ev-efficiency",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": 250,
"from": "wh_mi",
"to": "wh_km"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/conv/ev-efficiency", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":250,"from":"wh_mi","to":"wh_km"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":250,"from":"wh_mi","to":"wh_km"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/conv/ev-efficiency", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"value": 250,
"from": "wh_mi",
"to": "wh_km"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "conv.ev_efficiency",
"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 EV efficiency converter accepts a positive number plus a source unit and a target unit, bridges everything through watt-hours per kilometer with the exact international mile of 1.609344 kilometers, and returns a deterministic JSON table of all six supported units.
Supported units and the Wh/km conversion bridge
The converter understands six first-class electric-vehicle efficiency labels under stable canonical codes: wh_mi for watt-hours per mile, wh_km for watt-hours per kilometer, mi_kwh for miles per kilowatt-hour, km_kwh for kilometers per kilowatt-hour, kwh_100mi for kilowatt-hours per one hundred miles, and kwh_100km for kilowatt-hours per one hundred kilometers. Everyday aliases such as Wh/mi, Wh/km, mi/kWh, km/kWh, kWh/100mi, kWh/100km, watt-hours per mile, miles per kilowatt-hour, and kilowatt-hours per 100 kilometers are normalized case-insensitively so forms, spreadsheets, and APIs can pass either short codes or human labels. Every request converts the input into an intermediate watt-hours-per-kilometer value using the exact international statute mile of 1.609344 kilometers, then projects that intermediate into the requested target and into all six unit fields.
Request shape, response fields, and unknown-unit errors
The error message names the bad field and, for unknown units, lists the supported set so clients can correct forms without guessing. Send a JSON body with three required fields: value as a finite positive number, from as the source unit string, and to as the target unit string. Aliases amount and quantity are accepted for value; unit_from and source for from; unit_to and target for to. On success the response echoes the cleaned value, canonical from and to codes, human-readable from_label and to_label strings, the converted result in the target unit, the same figure expressed as wh_per_mi, wh_per_km, mi_per_kwh, km_per_kwh, kwh_per_100mi, and kwh_per_100km, the exact mile_km factor 1.609344, a short formula line suitable for UI display, the method tag wh_km_bridge, and the fixed list of units_supported. Missing value, non-finite numbers such as NaN or Infinity, zero or negative values, missing unit fields, and any token that does not map to a supported unit fail with invalid_input and are not charged after the engine rejects the request. Identical inputs always yield identical JSON because the path is pure arithmetic with no randomness, no remote lookup, and no dependence on the wall clock, which makes the endpoint safe to pin in continuous-integration goldens and SDK contract tests. Extreme but finite magnitudes remain well-defined as long as IEEE double precision can represent the intermediate Wh/km product.
Browser use, API pricing, and everyday EV workflows
Switch to the prepaid API when a fleet telematics app, charging-cost calculator, vehicle marketplace, range estimator, or homework checker must normalize efficiency labels at scale under a stable KIT contract at $0.002 per successful item; validation failures that raise invalid_input do not consume balance after rejection. Pair this endpoint with travel.ev_range when you already know battery kilowatt-hours and need distance remaining, or with travel.ev_trip_cost when the next step is currency for a planned route—those capabilities answer different search intents and stay separate landings.
Technical questions
Which EV efficiency units does this converter support?
Wh/mi (wh_mi), Wh/km (wh_km), mi/kWh (mi_kwh), km/kWh (km_kwh), kWh/100mi (kwh_100mi), and kWh/100km (kwh_100km). Full names and common slash aliases are accepted; unknown units raise invalid_input.