Wind chill calculator
This wind chill calculator converts an air temperature in degrees Fahrenheit and a wind speed in miles per hour into the corresponding feels-like temperature.
Run — free
It uses the standard National Weather Service equation intended for cold, windy conditions. Enter a temperature at or below 50°F and wind above 3 mph to receive a deterministic result rounded to one decimal place. The calculation is useful for planning time outdoors, comparing forecast conditions, and communicating cold exposure more clearly than air temperature alone.
What wind chill tells you
Wind chill describes how cold exposed skin is expected to feel when moving air accelerates heat loss. It does not mean that an inanimate object will cool below the measured air temperature, and it does not replace the thermometer reading. Instead, it combines temperature and wind into a single equivalent value that helps people interpret exposure. A calm 30°F day and a windy 30°F day have the same air temperature, but the windy day removes heat from uncovered skin more quickly. The calculated wind chill expresses that difference as a colder familiar temperature. This makes the result useful when selecting outdoor clothing, setting work or practice breaks, explaining a forecast, or comparing conditions across several hours. Treat the number as an exposure guide, not a personalized medical prediction. Sun, moisture, clothing, activity, shelter, age, and individual health can all affect a person's actual experience. For safety decisions, consider those factors together with official local weather guidance and warnings.
How the NWS calculation works
The calculator applies the standard National Weather Service formula in Fahrenheit and miles per hour: 35.74 + 0.6215T − 35.75V^0.16 + 0.4275TV^0.16, where T is air temperature in degrees Fahrenheit and V is wind speed in miles per hour. The fractional wind-speed exponent models the nonlinear relationship between moving air and heat loss, so doubling the wind does not simply double its chilling effect. The result is rounded to one decimal place only after the complete expression has been evaluated. Keeping full precision until that final step avoids accumulating unnecessary rounding differences. This capability performs pure arithmetic and does not request a forecast, infer a location, or look up current observations. Therefore, the values you submit should come from a reliable thermometer, weather station, or forecast for the place and time you care about. Given the same numeric inputs, the browser and API return the same deterministic result every time.
Use the formula only within its valid range
The NWS equation is designed for air temperatures at or below 50°F and wind speeds above 3 mph. This calculator enforces both boundaries rather than presenting a precise-looking number outside the model's intended range. A wind speed of exactly 3 mph is not accepted because the stated domain requires wind above 3 mph. Negative wind speed is physically invalid and produces an input error, as do missing, nonnumeric, or non-finite values. If the temperature is warmer than 50°F, use the measured temperature or a suitable heat-related index instead of extending this cold-weather equation. Choose a representative sustained wind speed unless your source specifically recommends using gusts; a brief gust can produce a more severe number that does not describe the entire period. Also remember that forecasts may report wind at a standard observation height while a sheltered sidewalk, valley, or building entrance experiences different airflow. The output is only as representative as the two measurements supplied.
What you can do with it
Plan outdoor work
Convert a cold forecast and expected wind into one exposure value before scheduling breaks and reviewing protective clothing.
Prepare for winter exercise
Compare feels-like temperatures across possible training times when wind makes the thermometer reading incomplete.
Explain a weather forecast
Add a reproducible wind chill value to a report, dashboard, alert, or educational example.
FAQ
What formula does this calculator use?
It uses the standard NWS Fahrenheit and miles-per-hour wind chill formula: 35.74 + 0.6215T − 35.75V^0.16 + 0.4275TV^0.16.
When is the wind chill formula valid?
Use it when air temperature is at or below 50°F and wind speed is above 3 mph. Inputs outside that range return an error.
Can wind chill make objects colder than the air?
No. Wind can make objects cool toward the air temperature more quickly, but wind chill does not lower them below the actual air temperature.
How is the result rounded?
The full equation is evaluated first, then the wind chill in degrees Fahrenheit is rounded to one decimal place.
What does the API calculation cost?
Each API request costs $0.002. The same deterministic calculation can also run in the browser.
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/weather/wind-chill-calculate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"air_temperature_f":30,"wind_speed_mph":10}'const res = await fetch("https://api.kit.forhosting.com/weather/wind-chill-calculate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"air_temperature_f": 30,
"wind_speed_mph": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/weather/wind-chill-calculate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"air_temperature_f": 30,
"wind_speed_mph": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/weather/wind-chill-calculate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"air_temperature_f":30,"wind_speed_mph":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"air_temperature_f":30,"wind_speed_mph":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/weather/wind-chill-calculate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"air_temperature_f": 30,
"wind_speed_mph": 10
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "weather.wind_chill_calculate",
"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. |