Room Ventilation Calculator: CO₂, Humidity and Airing Time
Estimate window airing time from CO₂ and moisture balances. Compare cold-surface humidity, sensible heat loss and mechanical heat recovery, with animated room-air curves.
Estimate how long to air a room to reduce carbon dioxide and humidity, and see what happens at a cold wall or window reveal. This room ventilation calculator is for engineers, students, building owners and anyone comparing a short window airing with a measured ventilation rate.
Airing time depends on the room volume, opening, wind, temperature difference and ongoing indoor sources. Seasonal minute tables cannot capture all of these. If you are searching for “Stoßlüften wie lange”, start with your own room measurements and treat the window result as an estimate rather than a timer that guarantees good air.
Enter the room volume, indoor temperature, initial CO₂ and relative humidity. Then enter outdoor conditions. For one fully open window on one wall, provide the clear opening area, vertical height and exposed reference wind speed. The Warren–Parkins approach estimates wind and buoyancy exchange and takes the larger contribution. It does not add them. For tilted windows, cross-ventilation or a known ventilation system, select an outdoor air-change rate instead. Recirculated air and filter equivalent air changes do not remove CO₂ or water vapour.
Set how many people remain during airing and their approximate CO₂ generation. Enter the total continuing water-vapour source separately, including people and other activities. The default moisture source is an illustrative assumption. An empty room can use zero for both sources. Choose your CO₂ and room-humidity targets and the airing duration.
The results give the first time each target is reached and the earliest time both are satisfied together. “Not reachable” means the selected airflow and continuing sources cannot achieve the requested combination. A target time can exceed the plotted interval; extend the duration to inspect it. Press ▶ to watch the room state and the elapsed portions of the CO₂ and humidity curves. End-of-airing cards always refer to the selected duration.
Cold outdoor air can have high relative humidity while containing little water. Warm humid outdoor air can increase indoor moisture even as it lowers CO₂. The balance therefore uses humidity ratio, not a direct average of relative humidity readings. Humidity is evaluated at a constant room temperature: it describes maintained or restored room temperature, not the brief temperature dip beside an open window.
Use the mould humidity calculator screen with a measured cold-surface temperature. Persistent surface RH around 80% merits attention; 100% indicates possible condensation. This is not a prediction of mould growth time. Sensible heating loss covers replacement air, with optional mechanical heat recovery. It excludes latent heat, fan electricity and cooling demand.
Airflow estimates, moisture buffering and surface temperatures can dominate the uncertainty. The dilute-CO₂ model is limited to 10,000 ppm throughout the selected interval; higher predictions block the results. This modelling cutoff is not a health limit. The tool does not diagnose leaks, thermal bridges, existing mould or pollutant exposure. Check the result against CO₂ and humidity measurements. Ventilation installation work belongs to a qualified person.
How it is calculated
The single-zone balances are derived here from conservation. With and a constant concentration source , . For , ; with zero flow, . CO₂ uses volume ppm and .
Moisture uses (kg water/kg dry air). The reference dry-air inventory is , and . Volumetric flow is interpreted at the room reference state. Vapour pressure is recovered from , so RH at room temperature follows from .
Saturation pressure uses the Alduchov–Eskridge Magnus expression Pa, with in °C; Silicon Labs AN607 Rev. 2.0, Appendix B, PDF p. 26. Its inverse gives dew point. The ideal-gas constants are and J/(kg·K).
For one full rectangular aperture on one wall, and . Use , as tabulated and experimentally assessed by Gough et al. (2020), Table 1, PDF p. 2. is absolute temperature. This is one-way exchanged flow; do not double it for the outward stream.
Target times are found by inverting the exponential. A target at the asymptote is not reached in finite time. Initially satisfied targets receive time zero. The candidate maximum of individual entry times is checked against both concentrations, preventing a false combined time when one concentration rises while the other falls.
Surface saturation demand is at a fixed surface temperature. Values above 100% indicate condensation potential before any condensate removal; values around 80% are only a persistent-moisture screen (SMGV guidance, PDF p. 15).
Sensible heating loss is . Integrate over the chosen duration. Engineering approximations , J/(kg·K) are constant. Only mechanical mode applies heat recovery; neither CO₂ nor moisture is recovered.
Assumptions
- One well-mixed room, with constant volume, pressure, indoor temperature, outdoor conditions, airflow and sources. No exchange with adjacent rooms.
- Moisture is a dilute ideal-gas mixture with constant reference dry-air density. Material absorption, liquid water, condensation sinks and thermal storage are omitted. Predictions after bulk air reaches saturation are outside the model.
- Room RH means RH after maintaining or restoring the entered indoor temperature. The model does not calculate room or wall cooling during airing.
- A fully open, unobstructed rectangular aperture is assumed for window mode. The default discharge coefficient 0.6 is an engineering assumption. Wind direction, shelter and interactions with buoyancy are not resolved.
- The editable 0.0052 L/s adult CO₂ rate is the historical ASHRAE/ASTM example discussed by Persily and de Jonge (2017), PDF p. 3; it is not a universal physiological rate. Rates must use room conditions. The paper discusses substantial variation and limitations of older estimates.
- The default total moisture source of 100 g/h is a scenario assumption, independent of the people counter. Adjust it when occupancy or activities change.
- Mechanical recovery is sensible only, without moisture transfer, leakage, frost dynamics or fan power. Set effective recovery to the actual operating value. Heating energy is zero when outdoor air is warmer; cooling and latent loads are not calculated.
- CO₂ is treated as a dilute tracer. Results require an interval maximum no greater than 10,000 ppm; concentrated-gas displacement and non-dilute mixture effects are not modelled.
Where it applies
Suitable for preliminary comparisons and short, approximately steady airing events. Input limits are product limits, not a claimed experimental validation envelope. The Magnus water correlation is used within −20 to +40 °C for outdoor air, +5 to +35 °C indoors and 0 to +35 °C at the surface; enhancement factors and ice-surface saturation are omitted. Dew points below −40 °C are extrapolations.
Natural airflow can differ substantially from the estimate, especially in sheltered, leeward, gusty or partly obstructed openings. Use measured outdoor air changes for decisions needing accuracy. At zero wind and equal temperatures the selected correlation gives zero exchange; real turbulence or leakage may still ventilate the room.
The adjustable 1000 ppm default is an operating target, not a health or regulatory limit. CO₂ does not describe all pollutants. The 80% surface screen concerns persistence, substrate and temperature; a short excursion neither proves nor rules out mould. No standard-compliance, exposure or mould-remediation claim is made. Ventilation installation work belongs to a qualified person.
The dilute-CO₂ calculation is limited to 10,000 ppm (1% by volume) throughout the selected interval. This is a conservative modelling cutoff chosen for this tool, not a health or regulatory limit. Because the constant-source transient is monotonic, its maximum is exactly the larger of the initial and final values. Results are blocked if this maximum exceeds the cutoff.
References
- Persily, A. and de Jonge, L. (2017). Carbon dioxide generation rates for building occupants. Indoor Air 27, 868–879. DOI: https://doi.org/10.1111/ina.12383 — open NIST copy: https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=920870
- Gough, H. L. et al. (2020). Evaluating single-sided natural ventilation models against full-scale idealised measurements: Impact of wind direction and turbulence. Building and Environment 170, 106556. https://doi.org/10.1016/j.buildenv.2019.106556 — open copy: https://eprints.whiterose.ac.uk/id/eprint/161783/1/1-s2.0-S0360132319307681-main.pdf
- Allen, J. et al., Harvard Healthy Buildings (2020). 5-step guide to checking ventilation rates in classrooms, PDF p. 38 (printed 37), CO₂ decay worked measurement. https://healthybuildings.hsph.harvard.edu/wp-content/uploads/2024/09/Harvard-Healthy-Buildings-program.How-to-assess-classroom-ventilation.11-17-2020.pdf
- SMGV (2009). Schimmelpilzsanierungen, appendix Table 4, PDF p. 15. Published dew points, absolute humidity and surface-moisture guidance. Hosted by the Swiss Federal Office of Public Health: https://www.bag.admin.ch/dam/de/sd-web/yFr-Xnwhvqun/merkblatt-schimmelpilzsanierungen.pdf
- Silicon Laboratories. AN607, Rev. 2.0 (2016), Si70xx Humidity and Temperature Sensor Designer’s Guide, Appendix B, PDF p. 26. Magnus coefficients after Alduchov and Eskridge (1996). https://www.silabs.com/documents/public/application-notes/AN607.pdf
Inputs
| Input | Symbol | Unit | Default |
|---|---|---|---|
| Room air volume Usable air volume: floor area × room height, less large enclosed volumes. | V_room | m^3 | 60 |
| Room temperature Held constant during the balance; humidity means humidity at this temperature. | T_in | °C | 20 |
| Initial room relative humidity Measure away from windows, radiators and external walls. | RH_in | % | 65 |
| Initial room CO₂ Use a calibrated CO₂ reading. ppm is volume parts per million. | C_in | ppm | 1800 |
| Outdoor temperature Constant during the airing interval. | T_out | °C | 5 |
| Outdoor relative humidity Relative to liquid water, including below 0 °C; compare moisture content, not just RH. | RH_out | % | 80 |
| Outdoor CO₂ Measure locally where possible; 430 ppm is an illustrative background. | C_out | ppm | 430 |
| Atmospheric pressure Absolute pressure. Lower pressures change the dry-air mass in the room. | p_air | kPa | 101.325 |
| Outdoor airflow method Window estimate is single-sided. For cross-ventilation, tilted windows or a ventilation unit, enter measured outdoor ACH. | flow_mode | One fully open window — estimate | |
| Clear window opening area Full unobstructed aperture area, not half of it. Screens and tilt openings need measured airflow. | A_open | m^2 | 0.8 |
| Vertical opening height Bottom-to-top height of the same rectangular opening. | H_open | m | 1.2 |
| Reference wind speed Exposed reference wind, not the local jet velocity at the opening. Shelter and wind direction cause large uncertainty. | u_ref | m/s | 2 |
| Opening discharge coefficient 0.6 is a common engineering assumption for a sharp-edged open aperture; adjust if independently known. | C_d | 0.6 | |
| Outdoor air changes per hour Outdoor air only: recirculation and air-cleaner equivalent ACH do not remove CO₂ or water vapour. | n_meas | h^-1 | 6 |
| Sensible heat recovery Use 0 for measured natural airflow. For a balanced mechanical unit enter effective sensible recovery, including bypass/defrost. No moisture recovery is modelled. | eta_hr | % | 80 |
| People remaining in the room Set zero if everyone leaves. CO₂ production stays constant. | people | 2 | |
| CO₂ generation per person Illustrative sedentary adult value discussed by Persily and de Jonge (2017), p. 870. Enter volume at room temperature and pressure; individual activity and body size matter. | g_person | L/s | 0.0052 |
| Total water-vapour generation Total for people, plants, cooking and drying. 100 g/h is an editable scenario assumption for two adults, not a universal occupant rate. Set zero for an empty dry room. | G_water | g/h | 100 |
| Coldest inside surface temperature Measured or separately calculated surface temperature, held fixed. This is a moisture-risk screen, not a wall heat-transfer calculation. | T_surface | °C | 14 |
| CO₂ target An adjustable operating target, not a health limit or a complete indoor-air-quality criterion. | C_target | ppm | 1000 |
| Room humidity target Target at the selected room temperature. The cold-surface screen is reported separately. | RH_target | % | 55 |
| Airing / plot duration All end-of-airing results refer to this duration. Airflow and sources stay constant. | duration | min | 10 |
| Elapsed time ▶ Play the transient or move the slider. End-of-airing results stay tied to the duration. | t_play | min | 8 |
Results
With the default inputs above, the calc gives:
| Result | Value |
|---|---|
| Earliest time to both room-air targets | 7.72 min |
| First time to CO₂ target | 7.72 min |
| First time to room RH target | 2.8 min |
| At the selected airing duration | Both room targets met |
| CO₂ at end of airing | 879 ppm |
| Room RH at end of airing | 40.8 % |
| Surface saturation demand at end | 59.7 % |
| End-of-airing surface screen | Below 80% surface RH |
| Outdoor airflow | 453 m³/h |
| Outdoor air changes | 7.55 h⁻¹ |
| Sensible heating energy lost | 0.382 kWh |
| Sensible heating energy recovered | 0 kWh |
| Net decrease of water stored in room air | 252 g |
Checked against sources
Each case below was calculated by this calc and agrees with the value from its source (within the tolerance where one is shown).
Harvard measured classroom CO₂ decay
Source: Harvard Healthy Buildings, 5-step classroom guide (2020), PDF p. 38 (printed 37). Measured start 1794 ppm, outdoor 400 ppm, end 475 ppm after 26 min 20 s; published ACH 6.7 is rounded. Using 6.7 predicts 473.65 ppm, so allow 2 ppm and 0.2 min for that rounding.
Inputs: Outdoor airflow method = Measured natural air changes; Outdoor air changes per hour = 6.7 h⁻¹; People remaining in the room = 0; Total water-vapour generation = 0 g/h; Initial room CO₂ = 1,794 ppm; Outdoor CO₂ = 400 ppm; CO₂ target = 475 ppm; Airing / plot duration = 26.333 min; Elapsed time ▶ = 26.333 min; the others as above.
| Result | Source | This calc |
|---|---|---|
| CO₂ at end of airing | 475 ± 2 ppm | 473.7 ppm |
| First time to CO₂ target | 26.333 ± 0.2 min | 26.171 min |
Published table: 20 °C and 50% RH
Source: SMGV Schimmelpilzsanierungen, appendix Table 4, PDF p. 15, 20 °C / 50% RH columns: dew point 9.27 °C and vapour 8.64 g/m³. The 20 °C / 40% entry 5.76 g/m³ appears erroneous (it is below the 19 °C value); it is not used.
Inputs: Initial room relative humidity = 50 %; Elapsed time ▶ = 0 min; the others as above.
| Result | Source | This calc |
|---|---|---|
| Initial room dew point | 9.27 ± 0.06 °C | 9.261 °C |
| Initial absolute water-vapour content | 8.64 ± 0.03 g/m³ | 8.624 g/m³ |
Published table: 22 °C and 60% RH
Source: SMGV Schimmelpilzsanierungen, appendix Table 4, PDF p. 15: independent tabulated dew point and absolute water content, rounded. Small differences reflect the Magnus approximation and rounding.
Inputs: Room temperature = 22 °C; Initial room relative humidity = 60 %; Elapsed time ▶ = 0 min; the others as above.
| Result | Source | This calc |
|---|---|---|
| Initial room dew point | 13.88 ± 0.07 °C | 13.88 °C |
| Initial absolute water-vapour content | 11.64 ± 0.04 g/m³ | 11.622 g/m³ |
Reviewer edge case: reject non-dilute CO₂
Source: Independent reviewer counterexample supplied with this task: 5 m³, 0.1 h⁻¹, 30 people at 0.03 L/s each for 180 min produces about 1,680,940 ppm. This is a domain-rejection regression, not a physical reference validating the extrapolated concentration. A 10,000 ppm (1% volume) model cutoff must reject it.
Inputs: Outdoor airflow method = Measured natural air changes; Room air volume = 5 m³; Outdoor air changes per hour = 0.1 h⁻¹; People remaining in the room = 30; CO₂ generation per person = 0.03 L/s; Total water-vapour generation = 0 g/h; Airing / plot duration = 180 min; the others as above.
| Result | Source | This calc |
|---|---|---|
| CO₂ dilute-model validity flag | 0 | 0 |
Dilute-model boundary includes the initial state
Source: Domain regression at the tool's explicitly chosen 10,000 ppm boundary, not an additional experimental reference. With no source and lower outdoor CO₂, the well-mixed concentration falls; its exact interval maximum is the independently specified initial value.
Inputs: Outdoor airflow method = Measured natural air changes; People remaining in the room = 0; Total water-vapour generation = 0 g/h; Initial room CO₂ = 10,000 ppm; the others as above.
| Result | Source | This calc |
|---|---|---|
| Maximum CO₂ over the selected interval | 10,000 ppm | 10,000 ppm |
| CO₂ dilute-model validity flag | 1 | 1 |
Reject CO₂ rising immediately beyond the dilute limit
Source: Domain regression, not an experimental reference: an initial state at 10,000 ppm with a positive source and zero exchange must exceed the tool's limit at any positive duration, so results must be blocked.
Inputs: Outdoor airflow method = Measured natural air changes; Outdoor air changes per hour = 0 h⁻¹; Total water-vapour generation = 0 g/h; Initial room CO₂ = 10,000 ppm; Airing / plot duration = 1 min; the others as above.
| Result | Source | This calc |
|---|---|---|
| CO₂ dilute-model validity flag | 0 | 0 |







Responses