CO2 sensors compared: SCD40 vs SCD41 vs MH-Z19 vs SenseAir S8

CO2 is the best single number for "should I open a window" — it tracks occupancy, stuffiness and (roughly) how much everyone's exhaled air you're re-breathing. But it's also the sensor category with the most ways to buy wrong: estimators sold as sensors, clones that read low, and an auto-calibration default that quietly ruins the one room you care about. Four sensors measure real CO2 at hobby prices; here's the honest comparison.

Rule zero: if the listing says eCO2 (ENS160, SGP30, CCS811, BME680), it estimates CO2 from VOCs and will sleep through a room full of sleeping people. Details in the fake-sensor exposé. Everything below is real NDIR/photoacoustic measurement.

SCD41SCD40MH-Z19B/CSenseAir S8
Range400–5000 ppm400–2000 ppm400–5000 ppm400–2000 ppm
TechPhotoacoustic NDIRPhotoacoustic NDIROptical NDIROptical NDIR, long-life emitter
Extras+ temp/RH · single-shot low power+ temp/RHPWM out
InterfaceI2C @ 0x62I2C @ 0x62UART 9600 (5 V)UART Modbus (5 V)
ESPHomenative (scd4x)native (scd4x)native (mhz19)native (senseair)
Clone risklowlowhigh (black-PCB fakes read low)medium (OEM surplus grading)
Battery-viableYes (single-shot)NoNoNo
Street price$9–16$8–13$10–14$12–20
VerdictThe 2026 defaultFine if cheaper that dayLegacy; clone minefieldThe decade-accuracy pick (it's what AirGradient ships)

The calibration trap (this is the part nobody reads until it's too late)

Every affordable CO2 sensor self-calibrates by assuming it sees fresh air (~400 ppm) about once a week — the lowest weekly reading gets redefined as the 400 ppm baseline. In a living room with open windows, that works. In a bedroom, a cellar or any room that never fully airs out, the sensor gradually decides that "stuffy" is the new fresh, and your readings drift optimistic — the exact opposite of what a bedroom CO2 sensor is for.

The fix is one line of ESPHome config plus a habit: disable automatic calibration (SCD4x: automatic_self_calibration: false · MH-Z19: automatic_baseline_calibration: false), then force-calibrate outdoors or at an open window for 10 minutes every few months. Both components expose a calibration action/button you can put straight on your dashboard.

Which one, in one paragraph each

As an Amazon Associate and an affiliate we may earn from qualifying purchases. Prices and availability are set by the retailer.

Placement, briefly

Breathing height, away from faces, windows and vents: a CO2 sensor next to your pillow reads your exhalations, one on a windowsill reads the garden. Give any new sensor a day to settle, then do one outdoor calibration and enjoy the least-glamorous, most actionable number in your smart home — most people are genuinely surprised how fast a closed bedroom passes 1500 ppm.

All sensors, all specs: the comparison table · VOC instead? SGP41 · Worried about fakes? The exposé.

← All sensors