TL;DR — the readings are actually quite close when you use the corrected values.
Air quality sensors are easily distorted by humidity.
High humidity in SG means that particles absorb water and appear larger, leading to inflated PM2.5 readings.
Professional monitoring equipment heats up the air before measurement, but low-cost sensors do not.
AirGradient automatically corrects for this, provided you use the correct endpoint or data source.
Other reasons include different scales (AQI vs µg/m³), different measurement approaches (latest feed value vs an explicitly averaged reading), different spatial coverage (regional average vs single location), and other quirks (e.g. localised sources of pollution — is someone living above a satay stall? ♨️).
This web application shows you the corrected readings and also shows what happens if you don't do so. Overall, when there are no sudden swings, the corrected readings from community sensors are rather close to the official ones.
What exactly are the issues for each data source?
NEA — We can safely assume it uses professional-grade monitoring equipment, so humidity is not an issue. The main limitation is that it reports one-hour averages that are updated only hourly, which is why people are not satisfied ("Why is the reading still so low when I can already see or smell the haze?" — because it can take one to two hours to catch up). It also likely reports a regional average, so if the West Coast is getting pummelled while Jurong is relatively clear, the reading may be only slightly elevated and people on the West Coast may feel misled.
AQICN — The website shows AQI values (not concentrations) computed using InstantCast. That AQI is a one-hour average updated every ~3 minutes, providing quicker confirmation of what you're experiencing, and the readings are location-specific, so if you live near a station, they may be more representative than official regional readings. However, this depends heavily on whether the station owner has set it up correctly — there are at least three questionable ones (see below). Also, the readings are not corrected for humidity and can therefore be significantly inflated in humid conditions. When AQICN reports 'Unhealthy', that is based on the US EPA scale, which assumes 24-hour exposure at that level — in other words, it assumes that what happened during that hour will continue for 24 hours, which is rarely true. So please do not become overly anxious when the indicator turns purple or brown. AQICN also exposes an hourly raw concentration when you mouse over the histogram. The current station feed used by this app is a separate latest-available value; its averaging window is not specified by the endpoint.
AirGradient provides both concentration and AQI readings and, most importantly, automatically corrects for humidity if you use the map. If you use a community-developed web application, check that it uses the correct data source (i.e. the correct endpoint — one of them provides uncorrected readings). The data updates every few minutes, so the remaining limitation is whether device owners maintain their monitors properly. So far, they appear to do so. For some reason, coverage is skewed towards western Singapore, so residents in the east are relatively underserved (although they have AQICN, which is skewed towards the east for another peculiar reason).
In any case, this web app has tried to correct these issues so you get the best of all worlds.
What exactly needs to be corrected and how is it done?
To address humidity-related inaccuracies, this web application applies the five-band EPA correction to raw PM2.5 readings whenever possible. You can find an explanation of the correction method here and a more detailed analysis here. In short, these have been tested for the PMS5003 laser-scattering sensors which are used in many community-sourced / low-cost air quality monitoring devices.
As for AQI conversion, AQICN uses InstantCast, while AirGradient uses the standard US EPA conversion based on 24-hour exposure but also allows NowCast in some custom setups. Another crucial point is that AQICN uses pre-2024 breakpoint values for its AQI calculation, which may differ from the current US EPA breakpoints used by others. Read more in the AQICN NowCast guide. Instead of prescribing a single method, this web application lets you choose different configurations and see how they change the values.
Even after corrections, there are still 3 stations that are at times anomalous. Are you able to spot them? 🤓
(Hint: J, H and B. Once in a while you'll see them faded out / look quite different from others.)