CO2 in your meeting room / office
Want to know what level of CO2 you have in your meeting room or office-space? Want to know when you need to start ventilating air to stay productive? Here’s a simple calculator that works out how much CO2 people produce (when they’re not overly active), and what level of CO2 that produces in a closed space.
Simple calculator
Results
- Initial CO2 ppm: 415.0
- CO2 ppm/hr produced: 698.0
- CO2 ppm after 1 hour: 1113.0
- CO2 ppm after 2 hours: 1811.0
- CO2 ppm after 4 hours: 3207.1
- CO2 ppm after 8 hours: 5999.2
Recommendations
From https://www.kane.co.uk/knowledge-centre/what-are-safe-levels-of-co-and-co2-in-rooms:
- 250-400ppm - Normal background concentration in outdoor ambient air
- 400-1,000ppm - Concentrations typical of occupied indoor spaces with good air exchange
- 1,000-2,000ppm - Complaints of drowsiness and poor air.
- 2,000-5,000 ppm - Headaches, sleepiness and stagnant, stale, stuffy air. Poor concentration, loss of attention, increased heart rate and slight nausea may also be present.
- 5,000 ppm - Workplace exposure limit (as 8-hour TWA) in most jurisdictions.
- >40,000 ppm - Exposure may lead to serious oxygen deprivation resulting in permanent brain damage, coma, even death.
Assumptions
Air volume at room temperature / sea level:
Vm = 0.024 # m3/mol
Weight CO2:
Mm = 44.01 # g/mol CO2
Initial PPM CO2
In normal atmosphere at ground level, from https://en.wikipedia.org/wiki/Atmosphere_of_Earth#Composition
initial_ppm = 415 # ppm CO2
CO2 Production / person
Without activity (not doing sports), 1 person. From https://www.researchgate.net/post/How-much-will-be-the-human-breathing-CO2-emission-factor
co2_produced_per_minute = 0.48 # g/min
Formulas used:
air_particles_in_room = room_volume / Vm;
total_co2_start = (initial_ppm / 1e6) * room_volume / Vm; // in mol
new_co2_per_min = num_people * co2_produced_per_minute / Mm; // in mol
additional_co2_ppm_1_hr = 60 * new_co2_per_min * 1e6 / air_particles_in_room; // ppm/hr
Somewhat unrelated, I’m pretty stoked that embedding JavaScript like this works in Hugo.
And related, these numbers match pretty closely what I see with CO2 measurement devices.
Anecdotal tests

2 people, room ca 2.5 x 3 x 2.5m, 1 hour: from ca 700ppm to 3000ppm (+2300ppm) vs modeled ca +2000ppm

1 person, same room, 2 hours: from ca 600ppm to 2600ppm (+2000ppm) vs modeled ca +2000ppm
Seems +/- correct. Or maybe the sensor just accidentally roughly matches :-).
Comments / questions
There's currently no commenting functionality here. If you'd like to comment, please use Bluesky and mention me there: @johnmu.com. Thanks!