Test your smart air quality monitor's accuracy at home
Most consumer reviews of smart air quality monitors rarely test accuracy, because reference-grade lab equipment is prohibitively expensive. This guide walks through a repeatable at-home protocol — identify the sensor, calibrate CO2, run controlled-source checks — so you can catch gross errors and drift in PM2.5, CO2, and VOC readings, with the honest limit that home testing does not certify lab-grade accuracy.
Last updated
Testing a smart home air quality monitor has an awkward starting point: most of us cannot prove true accuracy at home. A reference-grade particle instrument or gas analyzer is not something you casually borrow for a weekend, and AirGradient, a monitor maker, notes that reference equipment can cost tens of thousands of dollars while many consumer reviews focus on screens, pollutant lists, and apps instead of accuracy testing [1].
That does not make home testing useless. It just changes the claim. A kitchen-counter protocol can catch gross errors, stale calibration, bad firmware behavior, slow response, and suspicious drift. It can show whether two devices respond similarly to the same event. It can tell you whether your CO2 sensor was calibrated before you trusted it. It cannot certify that a PM2.5 number is reference-grade accurate or that a VOC reading is a true ppb concentration.

The practical standard is repeatability. If a monitor will trigger a purifier, open a window, warn you during smoke, or reassure someone that a room is fine, the useful question is not “is this lab-perfect?” It is “when I challenge it in a controlled way, does it respond, recover, and agree closely enough with another known source of information that I can trust the automation?”
Start with a verification record, not a test
A sensor check without context is almost disposable. CO2 baseline logic changes over days. PM readings can change with humidity. Firmware can alter calibration, smoothing, reporting intervals, and hub entities. If you cannot reconstruct the test later, you cannot know whether a strange graph next month is bad air, sensor drift, or an update.
Before burning a candle or exhaling into a container, record the environment that produced the result.
| Field | What to record |
|---|---|
| Verification date | Use the actual test date. If testing today, record 2026-08-25 plus your local timezone if it matters. |
| Device identity | Brand, model, hardware revision if visible, and serial or unit label if you track multiple monitors. |
| Sensor identity | The actual PM, CO2, or gas sensor module inside the product, if known. |
| Firmware/app version | Device firmware, app version, and any release note that may affect readings. |
| Hub path | Home Assistant, ESPHome, Zigbee2MQTT, Matter bridge, vendor cloud, or direct app. |
| Entities tested | The exact sensor entities or app fields used: PM2.5, CO2, VOC index, AQI, battery, diagnostic entities. |
| Calibration state | Manual CO2 calibration date, ABC enabled/disabled if known, factory reset, or unknown. |
| Status | Confirmed, Workaround, or Investigating. |
Use the status labels narrowly. Confirmed means the device passed the specific check you ran under the recorded conditions. Workaround means the monitor is usable only with a constraint, such as manual CO2 calibration before relying on automations. Investigating means the reading is not yet trustworthy enough for a control loop.
Identify the sensor inside the monitor
The model name on the front of the enclosure is not the whole instrument. For PM2.5, CO2, and VOC, the sensing module often matters more than the marketing category. Find the actual sensor by checking manufacturer documentation, asking support directly, looking for FCC internal photos where available, or reading teardown notes from people who have opened the device.
This matters most for CO2. AirGradient points to real NDIR CO2 sensors such as Senseair S8/S88/Sunrise and Sensirion SCD30/SCD4x as a different class from eCO2 estimates derived from metal-oxide gas sensors [1]. If a product reports “CO2” but is really estimating eCO2 from VOC behavior, do not test it like an NDIR instrument or use it for ventilation decisions that assume actual CO2 concentration.

The same sensor module can also appear in very different products. The Senseair S8, for example, appears in devices from AirGradient to Aranet4, but that does not make all finished monitors equivalent [1]. Enclosure airflow, firmware smoothing, calibration access, reporting interval, power management, and hub integration can all change what you see in Home Assistant or the vendor app.
For a smart-home setup, this is where hub context earns its keep. Home Assistant, ESPHome, Zigbee2MQTT, Matter bridges, and vendor clouds are not just compatibility badges; they determine whether you can see raw entities, trigger calibration, export history, or even know when firmware changed. If you are still choosing a device rather than testing one you already own, use the site’s smart air quality monitor compatibility guide for ecosystem fit, then come back to this protocol for the sensor check.
Calibrate CO2 before judging CO2
Do not start CO2 testing with the sealed-container breath check. Start outdoors, or as close to outdoor fresh air as your setup allows. CO2Meter’s calibration guidance treats calibration as central to CO2 sensor accuracy rather than an optional cleanup step [2]. AirGradient’s home testing guide similarly says CO2 sensors must be calibrated before testing and describes outdoor fresh-air calibration over roughly 5–10 minutes [1].
The reason is simple enough to miss: if the baseline is wrong, a responsive sensor can still be consistently wrong. A CO2 monitor that climbs and falls beautifully may still sit 75 ppm low across the whole graph. That is a calibration problem, not a response problem.
Manual fresh-air calibration
- Put the monitor in outdoor fresh air or by a fully open window with strong outdoor exchange. Keep it away from your breath.
- Let the reading settle for the device’s recommended period. AirGradient’s guide describes a roughly 5–10 minute outdoor fresh-air calibration window [1].
- Trigger calibration through the vendor app, device button sequence, ESPHome service call, or documented API path.
- Record the method, time, firmware, and whether automatic baseline calibration is enabled.
- Only then run a response test.
Home Assistant and ESPHome users may have a better path than app-only owners. In an AirGradient forum discussion, users noted that ESPHome exposes a Senseair S8 background-calibration trigger that can be wired into Home Assistant service calls; the same discussion includes a report of one S8 reading 65–75 ppm lower after manual outdoor calibration [3]. Treat that forum case as a case, not a frequency claim. Its value is that it shows the kind of error a calibration check can reveal.
Be careful with ABC in sealed homes
Automatic baseline calibration, often shortened to ABC, can be convenient in buildings that regularly return to outdoor CO2 levels. The weak point is the assumption. The AirGradient forum discussion describes ABC as running over a 7–14 day cycle and taking the lowest reading as the baseline; it also warns that this can fail for months in sealed, climate-controlled homes that do not regularly reach outdoor-like CO2 levels [3].
If your home is tightly sealed, occupied most of the time, or mechanically ventilated in a way that rarely lets indoor CO2 fall to outdoor levels, ABC can slowly teach the sensor the wrong baseline. In that case, the record should not say “CO2 Confirmed” just because the graph looks stable. Mark it Workaround until you know how calibration is handled and when it was last performed.
If CO2 automations are already part of a response loop, calibration belongs in the maintenance routine, not in a one-time setup note. The same discipline applies to any automation that opens windows, changes HVAC behavior, or turns on filtration; the site’s indoor air quality response loop covers the control-loop side of that problem.
Run pollutant-specific checks
A single “air quality test” is too vague. PM2.5, CO2, and VOC sensors fail in different ways, and they deserve different challenges. Keep the room conditions simple, log continuously, and avoid turning an improvised source into a fake lab instrument. A candle, incense stick, or breath tube is a stimulus. It is not a certified reference.
PM2.5: look for response, agreement, recovery, and humidity effects
For PM2.5, the at-home goal is to verify that the monitor notices a particle event, tracks roughly with another source of evidence, and recovers after ventilation or filtration. You are not proving that 38 µg/m³ is truly 38 µg/m³.

- Place the monitor and a comparison device side by side, with inlets unobstructed.
- Record at least a short clean-air baseline before the source.
- Use a small controlled source such as a candle or incense nearby, then remove or extinguish it safely.
- Watch whether both devices rise, how quickly they report the event, whether their curves have similar shape, and whether they fall after ventilation or purifier operation.
- If available, compare the timing and general direction with a nearby outdoor reference station or a known-accurate unit, but do not treat a distant station as a room-level reference.
Inter-device agreement is useful when the devices are not clones of the same flawed behavior. If two unrelated monitors both show a sharp PM2.5 rise during the candle event and both fall when the purifier runs, that supports responsiveness and precision under that scenario. If one stays flat or lags badly, mark PM2.5 Investigating and repeat with logging checked before blaming the room.
Humidity deserves a line in the test record. A 12-month Johns Hopkins evaluation of three low-cost PM2.5 monitors found that the Speck over-reported by about 2x at 40% relative humidity and about 5.5x at 70% relative humidity, with monthly filter corrections producing the highest accuracies [4]. That result is for the evaluated monitors, not every consumer PM sensor, but the warning generalizes well enough for troubleshooting: if PM looks high during humid conditions, do not skip the humidity column.
CO2: use a sealed-container breath response after calibration
Once the CO2 sensor has been fresh-air calibrated, a sealed-container breath test is a practical response check. AirGradient describes this style of test and reports that, around the 2000–3000 ppm range, some monitors stay within 50 ppm while others deviate by more than 150 ppm [1]. Because that is vendor-published testing, use it as a useful reference point rather than an independent benchmark.

- Put the calibrated CO2 monitor in a clear sealed container large enough that heat from the device does not dominate the test.
- If using a tube, seal the entry point well enough that the test does not immediately leak back to room air.
- Let the device log a baseline inside the container before adding breath.
- Exhale into the container through the tube in a controlled way, then stop and watch the rise.
- Compare the peak, response time, and recovery with another NDIR monitor if you have one.
- Vent the container and confirm the device returns toward room or outdoor levels.
Do not worry about hitting an exact target concentration. The better question is whether the graph makes physical sense: stable baseline, clear rise after breath, plausible peak, no frozen entity, no absurd jump caused by a hub parsing error, and recovery after fresh air. If two calibrated NDIR monitors disagree badly, move the status to Investigating until you repeat calibration and rule out enclosure or logging problems.
This check is especially important if the reading drives ventilation. A living-room dashboard being 100 ppm off is annoying. An automation that refuses to ventilate a crowded room because ABC drifted low is a different failure mode.
VOC: test trend behavior, not absolute concentration
VOC is where consumer dashboards most often look more certain than the sensor deserves. Bosch BME688 and Sensirion SGP4x-style outputs are commonly treated as indexes with fast rebaselining rather than stable absolute ppb measurements; AirGradient describes these VOC outputs as trend indicators, with a baseline behavior on roughly a 24-hour timescale [1].
So the home test should be modest. Use a mild, repeatable VOC source only to verify that the index responds and dilutes. Do not declare that one room has an exact formaldehyde, terpene, or solvent concentration unless you have an appropriate reference method.
- Record a stable baseline before the source.
- Introduce a small source briefly, such as opening a container of a household product at a distance, without creating a safety issue.
- Remove the source and ventilate.
- Look for directional response and recovery, not a precise ppb claim.
- Repeat on another day if the device has recently reset, updated, or been moved, because index baselines can shift.
A useful VOC status often reads differently from PM2.5 or CO2. “VOC Confirmed” should usually mean “responds to a VOC source and recovers after dilution under firmware X,” not “absolute VOC concentration is accurate.” If your automation reacts to VOC index spikes, build it around trends and persistence rather than single-sample certainty.
Use public lab data as a guardrail
After the home protocol, public performance datasets can help you decide whether your result is surprising. South Coast AQMD’s AQ-SPEC program publishes sensor evaluations with field comparison metrics against federal reference or equivalent instruments, including R² and MAE summaries for PM sensors [5]. Those numbers are valuable precisely because they are not app screenshots.
They are also easy to overuse. AQ-SPEC warns that its field results are location- and season-specific; its field deployments are not universal ratings for every house, climate, firmware, or enclosure revision [5]. If AQ-SPEC shows a device family with mediocre field agreement, that is a caution flag. If it shows strong agreement, that is not a license to skip calibration, humidity notes, or firmware context.
For example, AQ-SPEC lists IKEA Vindstyrka PM2.5 field R² values of 0.66–0.67 in its summary table, which is useful as an indicative field result, not a universal verdict on every Vindstyrka in every room [5]. A home test that shows the device missing a strong particle event would still matter. A home test that shows reasonable response would still need the date, humidity, hub path, and firmware.
The metrics also need plain-English handling. Clarity’s guide to air sensor accuracy metrics describes common tools such as mean absolute error, root mean square error, and R² for comparing sensor outputs with reference measurements [6]. At home, you usually do not have the reference measurement needed to compute true MAE or RMSE. What you can still judge is whether repeated tests produce similar behavior and whether a monitor broadly tracks a stronger source of evidence.
| Term | What it can mean in this protocol |
|---|---|
| Accuracy | Closeness to a true or reference value. At home, this usually remains unproven unless you have a trusted reference instrument. |
| Precision | Repeatability or agreement under the same conditions. This is the main thing an at-home protocol can test. |
| Responsiveness | Whether the reading rises and falls when the pollutant source changes. |
| Drift | A gradual change in baseline or behavior that is not explained by the room. |
| Gross error | A failure large enough to detect without reference-grade equipment: flatlined PM during smoke, uncalibrated CO2, VOC index that never recovers, or a hub entity reporting nonsense. |
Keep hub and integration notes in the evidence, not the verdict
Compatibility still matters, but it is not the same as sensor trust. A monitor that pairs cleanly with Home Assistant can still be badly calibrated. A monitor with an awkward cloud path can still contain a good sensor. The hub note belongs in the verification record because it tells you how the reading was captured, whether calibration was accessible, and whether an update could have changed the entity.
Integration facts age quickly. Wirecutter’s 2026 home air quality monitor guide, for example, described AirGradient One integration status as native Homey and Home Assistant support, community HomeKit, and no Alexa or Google support as of September 2025 [7]. That kind of statement is useful only when dated. Treat every hub claim the same way in your own notes.
If your immediate problem is wildfire smoke rather than general sensor verification, use the site’s smart air quality monitors for wildfire smoke guide as the smoke-specific companion. If the problem is CO2 monitor selection for a care environment, the smart CO2 monitor hub guide is the better pre-purchase path. This article is the verification ledger you run once there is an actual device and an actual reading to trust.
A compact verification template
The finished record should be boring enough to maintain. One monitor, one date, one hub path, three pollutant statuses. If the same device gets a firmware update or moves to another room, copy the record and retest only the parts that could have changed.
| Pollutant | Minimum check | Status example |
|---|---|---|
| PM2.5 | Candle or incense response; side-by-side comparison; recovery after ventilation or purifier; humidity recorded. | Confirmed if response and recovery are repeatable. Investigating if flat, delayed, or inconsistent. |
| CO2 | Identify NDIR vs eCO2; fresh-air calibration; sealed-container breath response; ABC state recorded. | Confirmed after calibration and plausible response. Workaround if manual calibration is required. Investigating if baseline or response is unexplained. |
| VOC | Index behavior only; small source response; dilution and recovery; reset or rebaseline noted. | Confirmed for trend response only. Investigating for absolute ppb claims unless independently referenced. |
A finished note might read: “2026-08-25, Air quality monitor in Home Assistant via ESPHome, firmware X, PM2.5 Confirmed by candle response against second monitor, CO2 Workaround because manual outdoor calibration required and ABC disabled, VOC Confirmed for trend response only, not absolute concentration.” That is more useful than a clean dashboard with no memory.
Retest after firmware updates, hub migration, calibration changes, long storage, unexplained baseline shifts, seasonal humidity changes, or any automation failure where the air quality reading was part of the decision. The result is not a product verdict. It is a dated trust record for the device that is actually sitting in your room.
References
- Is Your Air Quality Monitor Trustworthy? How to Test and Find Out. AirGradient
- Gas Sensor Calibration: What You Need to Know for Accuracy, Safety & Compliance CO2Meter
- How to make CO2 Sensor remain accurate Indoors? AirGradient Forum
- One Year Evaluation of Three Low-Cost PM2.5 Monitors Atmospheric Environment/PMC
- AQ-SPEC Sensor Results Summary Table South Coast AQMD
- How to determine air quality sensor accuracy? What are the best metrics? Clarity
- The 3 Best Home Air Quality Monitors of 2026 Wirecutter
Known issues with this device / protocol
Spec-version history
For active regressions on this protocol, see Update Watch.
No linked Update Watch entries yet.
