Sonntag 1990 dew point calculator from temperature and humidity
Turn a temperature and humidity reading into a dew point: 25 °C at 60 % relative humidity gives 16.701894 °C, with vapour pressures of 31.699039 and 19.019424 hPa. Works across the whole humidity range above zero. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Temperature c
- 25
- Relative humidity percent
- 60
- Dew point c
- 16.701894
- Saturation vapor pressure hpa
- 31.699039
- Actual vapor pressure hpa
- 19.019424
This calculator converts air temperature and relative humidity into a dew-point temperature using the Sonntag 1990 saturation vapor pressure coefficients for liquid water. It also reports saturation vapor pressure and actual vapor pressure, making the result useful for weather observations, environmental monitoring, building controls, storage decisions, and laboratory records. The calculation is deterministic, runs without network access, and rejects humidity values outside the physical zero-to-one-hundred-percent interval instead of quietly producing a misleading result.
What the Sonntag dew point result means
Dew point is the temperature to which air would need to cool, at unchanged water-vapor content and pressure, before becoming saturated with respect to liquid water. A dew point close to the current air temperature indicates humid air and a relatively small cooling margin before condensation can begin. A much lower dew point indicates drier air.
This calculator first evaluates the Sonntag 1990 saturation vapor pressure expression at the supplied air temperature. It multiplies that pressure by relative humidity divided by one hundred to obtain actual vapor pressure, then numerically finds the temperature whose Sonntag saturation pressure matches that value. The result describes a thermodynamic threshold, not a promise that visible droplets will form immediately.
Surface temperature, ventilation, local pressure differences, thermal inertia, contaminants, and nucleation conditions can all affect when and where condensation actually appears. Use the value as a clear quantitative boundary and combine it with measurements from the surface or process you are evaluating.
How to provide temperature and relative humidity
Relative humidity must be greater than zero and no greater than one hundred. Values below zero or above one hundred are rejected because they fall outside the declared physical interval. Exactly zero percent is also rejected because it corresponds to zero vapor pressure and therefore has no finite dew-point temperature; reporting an arbitrary large negative number would disguise that mathematical limit as a measurement.
A value of one hundred percent produces a dew point equal to the supplied air temperature, apart from the displayed rounding. Use humidity and temperature observations that refer to the same air sample and time. Combining an indoor temperature with an outdoor humidity reading, or readings recorded far apart, produces a precise calculation for a state that may never have existed.
Sensor quality matters as well: humidity uncertainty becomes especially influential in dry conditions. The output pressures are expressed in hectopascals, while dew point remains in degrees Celsius.
Using the calculation in monitoring and controls
When the surface approaches the dew point, the available condensation margin shrinks; when it falls below the dew point, condensation risk becomes significant. Building operators can apply that comparison to glazing, chilled-water pipes, ventilation ducts, basement walls, or cooling coils. Storage teams can use it when checking whether moving material between spaces may expose it to condensation.
Weather stations and environmental loggers can record the computed value beside the original temperature and humidity so later reviewers can reproduce the calculation. Keep the original observations rather than storing only dew point, because recalculation may be needed after sensor calibration or a method change. For safety-critical control, add sensor validation, reasonable alarm hysteresis, equipment-specific limits, and an independent fail-safe.
This capability calculates a psychrometric indicator; it does not model heat transfer, forecast weather, calibrate instruments, or decide whether equipment should be energized.
What you can do with it
Condensation margin monitoring
Compare the calculated dew point with pipe, window, wall, or cooling-coil surface temperatures before condensation develops.
Environmental data normalization
Add a reproducible dew-point field to temperature and humidity records collected by building, agricultural, or weather sensors.
Storage and handling checks
Estimate whether goods moved into a cooler space may encounter surfaces at or below the air's dew point.
FAQ
Which equation does the calculator use?
It uses the Sonntag 1990 saturation vapor pressure coefficients for liquid water, then numerically inverts the same equation to find dew point.
Why is exactly zero percent humidity rejected?
Zero relative humidity implies zero vapor pressure and has no finite dew point. Rejecting it avoids presenting an arbitrary numerical bound as a physical result.
Why can dew point equal air temperature?
At one hundred percent relative humidity, the air is saturated, so its dew point equals its current temperature within rounding precision.
Does this result guarantee condensation?
No. It identifies the saturation threshold for the stated air conditions. Actual condensation also depends on surface temperature and local physical conditions.
Do the temperature and humidity readings have to match?
Yes. Both must describe the same air at the same moment. Pairing an indoor temperature with an outdoor humidity, or readings taken far apart, gives a precise answer for air that may never have existed.
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/earth/dew-point-sonntag \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"temperature_c":25,"relative_humidity_percent":60}'const res = await fetch("https://api.kit.forhosting.com/earth/dew-point-sonntag", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"temperature_c": 25,
"relative_humidity_percent": 60
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/earth/dew-point-sonntag",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"temperature_c": 25,
"relative_humidity_percent": 60
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/earth/dew-point-sonntag", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"temperature_c":25,"relative_humidity_percent":60}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"temperature_c":25,"relative_humidity_percent":60}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/earth/dew-point-sonntag", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"temperature_c": 25,
"relative_humidity_percent": 60
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "earth.dew_point_sonntag",
"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
What the Sonntag dew point result means
The returned dew_point_c is therefore derived from the same coefficient set in both stages, avoiding a mixture of unrelated approximations.
How to provide temperature and relative humidity
Enter temperature_c as a finite number in degrees Celsius and relative_humidity_percent as a finite percentage.
Using the calculation in monitoring and controls
In a monitoring workflow, compare dew_point_c with a measured or predicted surface temperature. The endpoint costs $0.002 per API request and performs no network lookup, so it is suitable for small deterministic processing steps.
Technical questions
What happens if humidity is outside zero to one hundred percent?
The request fails with an invalid-input error. Those values are outside the accepted relative-humidity interval.
What does an API request cost?
Each API request costs $0.002. The calculation can also run in the browser as a tier A capability.