Humidity and Dew Point Calculator

ANALife Services AuthorityNational Calculator Authority›Humidity and Dew Point Calculator

.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }

Humidity and Dew Point Calculator

Calculate relative humidity, dew point temperature, and absolute humidity from dry-bulb temperature and either a wet-bulb reading or a known relative humidity value.

### Input Method

Calculation Mode

Known Relative Humidity → Dew Point & Absolute Humidity Dry-Bulb + Wet-Bulb → Relative Humidity & Dew Point

Temperature Unit

Celsius (°C) Fahrenheit (°F)

### Temperatures

Dry-Bulb Temperature

°C

Wet-Bulb Temperature

°C

Relative Humidity

%

Elevation (for wet-bulb mode)

m

Calculate

### Results

// ── helpers ────────────────────────────────────────────────────────────────── function humToggleMode() { const mode = document.getElementById('hum_mode').value; const unit = document.getElementById('hum_unit').value; const label = unit === 'C' ? '°C' : '°F'; document.getElementById('hum_unit_tdb').textContent = label; document.getElementById('hum_unit_twb').textContent = label; document.getElementById('hum_row_twb').style.display = mode === 'wb' ? '' : 'none'; document.getElementById('hum_row_rh').style.display = mode === 'rh' ? '' : 'none'; document.getElementById('hum_row_elev').style.display = mode === 'wb' ? '' : 'none'; document.getElementById('hum_result').style.display = 'none'; document.getElementById('hum_error').style.display = 'none'; } humToggleMode(); // init

// Saturation vapour pressure (hPa) via Buck equation // es(T) = 6.1121 * exp((18.678 - T/234.5) * T / (257.14 + T)) T in °C function humEs(T_C) { return 6.1121 * Math.exp((18.678 - T_C / 234.5) * T_C / (257.14 + T_C)); }

// Dew point from actual vapour pressure e (hPa) — Magnus inversion // Td = 243.04 * ln(e/6.1121) / (17.368 - ln(e/6.1121)) function humDewPoint(e_hPa) { const lne = Math.log(e_hPa / 6.1121); return 243.04 * lne / (17.368 - lne); }

// Absolute humidity (g/m³) // AH = 216.7 * e / (273.15 + T) e in hPa, T in °C function humAbsHumidity(e_hPa, T_C) { return 216.7 * e_hPa / (273.15 + T_C); }

// Atmospheric pressure from elevation (hPa) — barometric formula // P = 1013.25 * (1 - 2.25577e-5 * h)^5.25588 function humPressure(elev_m) { return 1013.25 * Math.pow(1 - 2.25577e-5 * elev_m, 5.25588); }

// Psychrometric constant γ (hPa/°C) // γ = 0.000665 * P function humPsychrometric(P_hPa) { return 0.000665 * P_hPa; }

function humFmt(val, dec) { return val.toFixed(dec); }

function humRow(label, value, unit) { return '' + label + '' + value + '' + unit + ''; }

// ── main calculation ───────────────────────────────────────────────────────── function humCalc() { const errEl = document.getElementById('hum_error'); const resEl = document.getElementById('hum_result'); errEl.style.display = 'none'; resEl.style.display = 'none';

const mode = document.getElementById('hum_mode').value; const unit = document.getElementById('hum_unit').value;

const tdbRaw = parseFloat(document.getElementById('hum_tdb').value); if (isNaN(tdbRaw)) { humErr('Please enter a valid dry-bulb temperature.'); return; }

// Convert to °C for all calculations const tdb_C = unit === 'C' ? tdbRaw : (tdbRaw - 32) * 5 / 9;

if (tdb_C 60) { humErr('Dry-bulb temperature must be between −60 °C and 60 °C.'); return; }

let RH, e_hPa, Td_C, AH, rows = '';

if (mode === 'rh') { // ── Mode 1: RH given ────────────────────────────────────────────────── const RH_in = parseFloat(document.getElementById('hum_rh_in').value); if (isNaN(RH_in) || RH_in 100) { humErr('Relative humidity must be between 0 % and 100 %.'); return; } RH = RH_in; const es = humEs(tdb_C); // saturation vapour pressure e_hPa = (RH / 100) * es; // actual vapour pressure Td_C = humDewPoint(e_hPa); // dew point AH = humAbsHumidity(e_hPa, tdb_C);

const Td_out = unit === 'C' ? Td_C : Td_C * 9 / 5 + 32; const unitLabel = unit === 'C' ? '°C' : '°F';

rows += humRow('Dry-Bulb Temperature', humFmt(tdbRaw, 1), unitLabel); rows += humRow('Relative Humidity', humFmt(RH, 1), '%'); rows += humRow('Saturation Vapour Pressure (es)', humFmt(es, 3), 'hPa'); rows += humRow('Actual Vapour Pressure (e)', humFmt(e_hPa, 3), 'hPa'); rows += humRow('Dew Point Temperature (Td)', humFmt(Td_out, 1), unitLabel); rows += humRow('Absolute Humidity', humFmt(AH, 2), 'g/m³');

// Frost point warning if (Td_C ⚠ Dew point is below 0 °C — frost conditions possible.'; }

} else { // ── Mode 2: Wet-bulb given ──────────────────────────────────────────── const twbRaw = parseFloat(document.getElementById('hum_twb').value); if (isNaN(twbRaw)) { humErr('Please enter a valid wet-bulb temperature.'); return; } const twb_C = unit === 'C' ? twbRaw : (twbRaw - 32) * 5 / 9;

if (twb_C > tdb_C + 0.001) { humErr('Wet-bulb temperature cannot exceed dry-bulb temperature.'); return; } if (twb_C 60) { humErr('Wet-bulb temperature must be between −60 °C and 60 °C.'); return; }

const elev = parseFloat(document.getElementById('hum_elev').value) || 0; if (elev 9000) { humErr('Elevation must be between 0 and 9000 m.'); return; }

const P = humPressure(elev); // atmospheric pressure const γ = humPsychrometric(P); // psychrometric constant const es_wb = humEs(twb_C); // sat. vp at wet-bulb const es_db = humEs(tdb_C); // sat. vp at dry-bulb

// Sprung formula: e = es(Twb) - γ * P * (Tdb - Twb) // Simplified: e = es(Twb) - A * P * (Tdb - Twb) where A = 0.000665 e_hPa = es_wb - γ * (tdb_C - twb_C); if (e_hPa db)', humFmt(tdb_out, 1), unitLabel); rows += humRow('Wet-Bulb Temperature (Twb)', humFmt(twb_out, 1), unitLabel); rows += humRow('Elevation', humFmt(elev, 0), 'm'); rows += humRow('Atmospheric Pressure (P)', humFmt(P, 2), 'hPa'); rows += humRow('Psychrometric Constant (γ)', humFmt(γ, 6), 'hPa/°C'); rows += humRow('Sat. Vapour Pressure at Twb', humFmt(es_wb, 3), 'hPa'); rows += humRow('Sat. Vapour Pressure at Tdb', humFmt(es_db, 3), 'hPa'); rows += humRow('Actual Vapour Pressure (e)', humFmt(e_hPa, 3), 'hPa'); rows += humRow('Relative Humidity (RH)', humFmt(RH, 1), '%'); rows += humRow('Dew Point Temperature (Td)', humFmt(Td_out, 1), unitLabel); rows += humRow('Absolute Humidity', humFmt(AH, 2), 'g/m³');

if (Td_C ⚠ Dew point is below 0 °C — frost conditions possible.'; } }

// Comfort index let comfort = ''; if (RH ' + comfort + '';

document.getElementById('hum_result_body').innerHTML = rows; resEl.style.display = 'block'; }

function humErr(msg) { const el = document.getElementById('hum_error'); el.textContent = msg; el.style.display = 'block'; }

#### Formulas Used

1. Saturation Vapour Pressure — Buck Equation (1981)

es(T) = 6.1121 · exp[(18.678 − T/234.5) · T / (257.14 + T)]

T in °C, es in hPa. Valid from −40 °C to +60 °C.

2. Actual Vapour Pressure from RH

e = (RH / 100) · es(Tdb)

3. Actual Vapour Pressure from Wet-Bulb — Sprung Formula

e = es(Twb) − γ · (Tdb − Twb)

where γ = 0.000665 · P (psychrometric constant, hPa/°C) and P is atmospheric pressure.

4. Atmospheric Pressure from Elevation — Barometric Formula

P = 1013.25 · (1 − 2.25577×10⁻⁵ · h)5.25588

5. Dew Point — Magnus Inversion

Td = 243.04 · ln(e / 6.1121) / [17.368 − ln(e / 6.1121)]

6. Absolute Humidity

AH = 216.7 · e / (273.15 + Tdb) [g/m³]

#### Assumptions & References

More Calculators

Read Next

Building Vs Contents Coverage Allocator ANA › Life Services Authority › National Calculator Authority › Building vs Contents Coverage Allocator .calc-container {...

Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...

References