How the 5 PM call did.
—
Each cell: our forecast → the actual, PM2.5 in µg/m³, both the average of the whole day (midnight to midnight IST). Forecast = our 5 PM call, made 1, 2 or 3 days ahead. Actual = the average of every CPCB station's hourly reading in the city that day (at least 18 hours). In brackets: forecast minus actual.
| 5 PM freeze | +1 day | +2 days | +3 days |
|---|
All scored rows, with persistence
| Target day | Frozen | Lead | Forecast PM2.5 (raw model) | Actual PM2.5 | Persistence PM2.5 |
|---|
Look beyond the reading.
Delhi NCR is the main view. Regional fires, wind and a global chemistry model add context to official readings without turning them into a neighbourhood forecast.
CPCB stations via data.gov.in
Continuous monitoring stations run by CPCB, DPCC, HSPCB, UPPCB and IITM across Delhi, Gurugram, Noida and Faridabad. The feed publishes each station's India AQI sub-index for PM2.5, which is a 24-hour rolling basis, with the day's minimum and maximum. We invert the CPCB breakpoints to show an approximate 24-hour PM2.5 concentration. Pulled every 30 minutes; the upstream feed itself usually runs 1–3 hours behind. The AQI shown here is the PM2.5 sub-index; CPCB's bulletin AQI is the worst pollutant of the day, which in October is often PM10. PM10 is not in aqi0's station pull yet. —CAMS global via Open-Meteo
ECMWF's Copernicus Atmosphere Monitoring Service forecasts near-surface PM2.5 on a ~40 km grid, updated twice a day with three-hour steps; hourly values are interpolated. The regional grid is sampled at 0.6° and smoothed on the map, which never adds resolution. CAMS systematically under-reads Delhi in the smog season because it cannot see local sources at street scale; compare its "now" value with the measured reading before trusting the level, and read the shape of the curve rather than the number. The outlook therefore applies a local correction (next card) and shows the raw model as a dashed line. —Station level × hour-of-day shape
Two parts. Level: each city's CPCB station mean (PM2.5, 24-hour basis, all its stations) divided by the model's mean over the same 24 hours, taken daily; the level in use is the median of the four most recent daily values (normally the last three days and today), so a smog spell shows up within days. Many stations and a whole day, never one sensor or one hour, so neighbouring cities cannot drift apart by more than the stations say. A city without CPCB stations, or whose few stations disagree with the region by more than about 1.7×, takes the NCR median and says so. The model series every city is corrected from is the NCR mean of the five city points: a 40 km model has no skill in Delhi-versus-Gurugram differences, so those come from the stations alone. Faridabad is one of the five points but is not shown: its few stations read well below the rest of NCR, so there is no reliable level for it yet. Shape: the median hourly ratio of measured to model for each hour of day, pooled across every NCR city with hourly readings, normalised to a mean of 1 so it only moves pollution between hours of the day; flat until most hours have three samples. Both are clamped (0.5–4×). Nowcast: the forecast is then nudged toward the latest station readings, using the ratio over the last three measured hours, with that nudge fading over about two days (a 48-hour e-folding time: about 60% of it left after a day, about a third after two). Both changed on 6 Nov 2026, after a backtest on last season and this one: in November smog a spell lasts days, and the old 14-day level and 12-hour fade were too slow to follow it. Smog regime (added 7 Nov 2026): when a city's stations have averaged above 120 µg/m³ over the last 24 hours, half of each later hour is that 24-hour level carrying on and half is the corrected model, phased in over 12 hours. In a smog spell the model's day-to-day swings are mostly noise: on last November's data this cut the next-day miss from 41 to 28 µg/m³ (three days ahead, 63 to 43); in October, when the gate rarely opens, it changed little (at most 4 µg/m³ worse two to three days ahead). The numbers in use are printed under the chart. PM10 is not corrected because there is no measured PM10 in the feed yet. —Derived from Open-Meteo at Delhi
Ventilation index = mixing height × mean wind through the mixed layer (winds at 10, 80, 120 and 180 m and at the pressure levels below the mixing height), in m²/s. Under 500 is stagnant, the "window" is hours above 2,000, and IMD treats 6,000 as adequate. Smoke import = the north-westerly component of the wind at 900 hPa (~800 m above ground) in m/s × the fire radiative power (GW) detected in the Punjab–Haryana sector (bearing 280–350°, 80–450 km from Delhi) on the latest complete day; below 5 is low, 5–20 moderate, above 20 high, and "none" when the wind has no north-westerly component or there are no upwind fires. Both are indicative: they rank days, they do not forecast a concentration. Rain washes out PM10 far more than PM2.5. —Open-Meteo weather models
10 m wind speed and direction on a 0.8° grid (interpolated to 0.4° for display), plus boundary-layer "mixing height" at Delhi. Arrows show where the air is heading. Winter smog in Delhi is as much a ventilation story as an emissions story: a mixing height under ~300 m at night traps whatever is emitted, and north-westerly flow brings the Punjab–Haryana belt upwind. The arrows do not trace smoke or guarantee where a plume will travel. On screen they drift with the modelled wind for the hour shown (illustrative, not a trajectory); with Reduce Motion enabled they are drawn as a fixed grid instead. —Inside the model, not added on top
Weather reaches the forecast in two ways. The model: CAMS runs on ECMWF's weather forecast, so wind, mixing height, night-time inversions and rain washout are already inside its PM2.5 numbers. The stations: the nowcast pulls the next few hours toward what CPCB stations are measuring, so when rain or wind has already cleaned the air, the forecast follows within hours. The local correction itself has no weather term yet: the same level and shape apply on a breezy day and on a still night. Known gaps: a shower over one city is smaller than the ~40 km model grid and is missed until the stations show it; rain removes PM2.5 far less than PM10, so a wet day is not automatically a clean one; and calm, low-mixing nights are where a global model is most likely to under-read. The rain, ventilation and smoke columns in the daily outlook are context for reading the forecast, not inputs to it. We are checking the scorecard for misses that cluster on stagnant, rainy or smoky days; if they do, the correction will vary by weather type.NASA FIRMS · VIIRS
Active-fire detections from Suomi-NPP, NOAA-20 and NOAA-21 (375 m), from the public 7-day South Asia feed, refreshed about every 30 minutes with roughly 3 hours of satellite latency. Marker size is fire radiative power (MW); colour fades with age. Day-to-day counts de-duplicate the three satellites to ~1 km cells per IST day and are attributed to Punjab and Haryana with district boundaries; "rest of region" includes Pakistani Punjab, Rajasthan and western UP. Clouds, overpass timing and small or short fires all affect what is detected. Today's count is partial until the afternoon pass is processed. —OpenFreeMap · OpenStreetMap
Map styling, the concentration colour ramp and the timeline are visual aids. The ramp uses the CPCB PM2.5 breakpoints (30 / 60 / 90 / 120 / 250 µg/m³) so colours match the India AQI categories; applying them to hourly model values is a guide, not an official categorisation, which is defined on 24-hour averages. The AQI numbers on the map and in the Next 3 hours card are computed the CPCB way: the 24-hour average ending at the hour shown, using measured station hours where they exist and the corrected forecast after that, then matched to the CPCB city average at its last update. An hourly PM2.5 value is not comparable to the official AQI: afternoons often drop to 50–70 µg/m³ while the 24-hour AQI stays above 200.Independent feed status
Readings are marked delayed after 4 hours, fire snapshots after 6 hours and model feeds after 18 hours. A delayed feed never hides the others. All times are IST; retrieval and validity times are kept separate. The measured history line comes from aqi0's live city feed, which merges CPCB, IQAir and OpenAQ hourly readings. —This is an independent context tool built by aqi0, not an official CPCB, IMD or SAFAR forecast and not medical advice. For the current rating use the official India AQI bulletin, and follow GRAP advisories when making decisions about exposure. Inspired by HazeCast, Kiren Tanna's regional haze view for Singapore.
The outside is the forecast. The inside is a choice.
aqi0 is a whole-home air purifier for Delhi NCR — technically, a positive-pressure fresh air system that pushes H13 HEPA-filtered outdoor air into every room and keeps indoor PM2.5 under 10 µg/m³ with fresh filters, whatever the map says.