On 926 of the 928 days, in the record from 1 May 2015 to 20 October 2026, on which Delhi's AQI was Very Poor or Severe by the hour-by-hour calculation that CPCB's published figures track, CPCB's own documented formula gave a higher figure. The other two were 25 December 2016, on 8 stations, and 30 December 2016, on 4 stations. From 2018 it is every one of 662 such days.
On Delhi's Very Poor and Severe days, the hour-by-hour calculation that CPCB's published figures track gives lower numbers, so the AQI the public sees looks better than CPCB's own formula would make it. On 630 of the 640 days since 2018 that CPCB's bulletin printed Delhi as Very Poor or Severe, CPCB's own formula gave the higher figure. At 13 DPCC stations from 2018 to 2024, CPCB published 8,376 station-days as Very Poor or Severe, and CPCB's own formula gave the higher figure on 8,043 of them.
| Example | Published, or hour by hour | CPCB's documented formula | Source |
|---|---|---|---|
| Kolkata, 12 December 2025 | CPCB published 291, Poor | 308.6, Very Poor | CPCB's bulletin of that day |
| Bawana, 20 October 2026 | Hour by hour 270, Poor | 307, Very Poor | CPCB's hourly readings; pages 8 and 9; the largest rise among Delhi's stations that day, page 25 |
| Delhi, Severe days in 2025 | 8 in CPCB's bulletin; 11 hour by hour | 22 | CPCB's bulletins of 2025; page 18 |
| Delhi, yearly average, 1 May 2015 to 20 October 2026 | Below the documented formula in every year: by 4.5 to 17.8 points in the bulletin | Formula alone, same readings: 4.7 to 15.5 points | CPCB's bulletins; page 14 |
On cleaner days, mostly Moderate ones, and at single stations where PM10 sets a figure below 350, the documented formula can give the lower figure, as at CRRI Mathura Road on 20 October 2026, 184 against 197, and the evidence shows what CPCB publishes, not why.
CPCB's note "How is AQI calculated?" says each pollutant's sub-index is "calculated using its 24-hourly average concentration value (8-hourly in case of CO and O3)": the readings are averaged first and converted once. No CPCB document opened describes another order. Yet CPCB's published station figures came within 4.1 to 7.9 points of the hour-by-hour calculation in every year from 2018 to 2024, against 15.7 to 25.0 for the documented formula. On the station-days CPCB published as Severe, CPCB's figure sat on average 10.3 points below the hour-by-hour calculation and 41.5 below the documented formula; on Very Poor station-days, 7.3 and 25.9.
In 2025 Delhi was Severe on 22 days on CPCB's documented formula, on 11 hour by hour and on 8 in CPCB's bulletin. The difference between 22 and 11 is the formula alone, on identical readings and stations. The difference between 11 and 8 is everything else: the stations each uses, late or missing data, CPCB's rounding, and any part of CPCB's own arithmetic that the reconstruction does not reproduce. It is not the order of the arithmetic.
| Delhi, the whole record | CPCB's 4 PM bulletin | Documented formula | Hour by hour |
|---|---|---|---|
| Average AQI | 210.5 | 219.8 | 210.2 |
| Severe days | 166 | 291 | 204 |
| Very Poor or Severe days | 923 | 1,117 | 928 |
| Poor or worse days | 2,015 | 2,071 | 1,989 |
Each quotation below is copied from the CPCB document named beside it, and each link opens CPCB's own copy. All of them were opened by this office on 20 October 2026, and every one describes averaging the concentration first.
| CPCB document | Where | CPCB's words |
|---|---|---|
| How is AQI calculated? | Item 1 | "calculated using its 24-hourly average concentration value (8-hourly in case of CO and O3)" |
| How is AQI calculated? | Item 1 | "The worst sub-index is the AQI for that location." |
| How is AQI calculated? | Item 2 | "a minimum of 16 hours' data is considered necessary" |
| How is AQI calculated? | Item 4 | "displays AQI based on running average values" |
| AQI Calculator | Rows for PM10 to NH3; CO and O3 | " 24-hr avg"; "max 8-hr" |
| CUPS/82/2014-15 | Table 3.11, printed page 35 | Columns headed "24-hr" and, for O3 and CO, "8-hr"; the ozone cells "209-748*" and "748+*" carry the footnote "*One hourly monitoring (for mathematical calculation only)" |
| About National Air Quality Index | Footnote to the table | "24-hourly average values for PM10, PM2.5, NO2, SO2, NH3, and Pb" |
| PIB, the draft index | Release of 17 October 2014 | "The worst sub-index reflects overall AQI." |
| AQI bulletin, 20 October 2026 | Page 15, Notes | "average value is used to indicate air quality" |
| AQI bulletin, 20 October 2026 | Page 15, Notes | "averaging is not a scientifically sound approach" |
The table separates the dates a document prints from the dates stored in its file. A printed date is the document's own statement. A file date shows only when CPCB's online copy was made or last saved, and it may be later than the text itself.
| Date | What happened | Kind of date | Source | |
|---|---|---|---|---|
| 1 | 17 October 2014 | The Environment Minister launches the draft National AQI. | Printed | PIB release, 17:38 IST |
| 2 | 28 January 2015 | CPCB's AQI Calculator file is created. | File property | AQI-Calculator.xls |
| 3 | 6 April 2015 | The Prime Minister launches the National AQI. | Printed | CPCB, NAQI Status 2015-16, page 5 of the file; PIB, 15 March 2016 |
| 4 | 1 May 2015 | The file of "How is AQI calculated?" is created. | File metadata | How_AQI_Calculated.pdf |
| 5 | 22 June 2015 | The file of CUPS/82/2014-15 is created. Its foreword's handwritten date reads, to this office, as 3/5/15. | File metadata | CUPS/82/2014-15 |
| 6 | 1 January 2016 | CPCB's bulletin says averaging across a city is not scientifically sound. | Printed | AQI bulletin, 1 January 2016 |
| 7 | 10 October 2022 | The calculator file is last saved; it now shows station NSIT, Delhi. | File property | AQI-Calculator.xls |
| 8 | 16 October 2023 | The file of "About National Air Quality Index" is created. | File metadata | About_AQI.pdf |
| 9 | 20 October 2026 | The same note on averaging is printed again. | Printed | AQI bulletin, 20 October 2026 |
CPCB converts a concentration into an AQI figure along a chain of straight pieces, one piece for each category, and the pieces are not equally steep. When a day's hourly readings fall on pieces of different steepness, converting the day's average once and averaging each hour's conversion give different answers.
| CPCB category | PM2.5, µg/m³ | Points per µg/m³ | PM10, µg/m³ | Points per µg/m³ |
|---|---|---|---|---|
| Good | 0 to 30 | 1.67 | 0 to 50 | 1.00 |
| Satisfactory | 30 to 60 | 1.63 | 50 to 100 | 0.98 |
| Moderate | 60 to 90 | 3.30 | 100 to 250 | 0.66 |
| Poor | 90 to 120 | 3.30 | 250 to 350 | 0.99 |
| Very Poor | 120 to 250 | 0.76 | 350 to 430 | 1.24 |
| Severe | 250 to 380 | 0.76 | 430 to 510 | 1.24 |
For PM2.5, each microgram between 60 and 120 µg/m³ adds 3.30 points, and each microgram between 120 and 250 adds only 0.76. On a polluted day whose hours straddle 120, the cleaner hours lose points fast on the steep pieces and the dirtier hours gain them slowly on the flat one, so the average of the hourly figures falls below the figure of the average reading. The PM10 scale does the opposite between 100 and 430 µg/m³, where its pieces run at 0.66, 0.99, 1.24 points per microgram, so a PM10 day spread across those pieces usually gains on the reconstruction.
CPCB's documents give the Severe band no top concentration, only "250+" for PM2.5 and "430 +" for PM10 (CUPS/82/2014-15, Table 3.11). CPCB's AQI Calculator reaches 500 at 380 µg/m³ of PM2.5 and 510 of PM10, and its formula carries on past 500 above them. This office holds both computed figures at 500 there, because CPCB's scale runs from 0 to 500. So in the reconstruction every hour above 380 µg/m³ of PM2.5 counts as 500, however high the hour, while the documented formula keeps those hours in the day's average until the average itself passes 380.
Bawana reported 23 of the 24 hours; the hour stamped 4 PM on 19 October is missing, which still leaves more than CPCB's minimum of 16 hours. The third and sixth columns are each hour converted on its own.
| Hour | PM2.5, µg/m³ | That hour's AQI | Hour | PM2.5, µg/m³ | That hour's AQI |
|---|---|---|---|---|---|
| 5 PM, 19 October | 73 | 144 | 5 AM | 180 | 347 |
| 6 PM | 59 | 98 | 6 AM | 204 | 365 |
| 7 PM | 88 | 193 | 7 AM | 199 | 361 |
| 8 PM | 114 | 280 | 8 AM | 158 | 330 |
| 9 PM | 173 | 341 | 9 AM | 147 | 322 |
| 10 PM | 130 | 309 | 10 AM | 118 | 293 |
| 11 PM | 144 | 319 | 11 AM | 92 | 208 |
| Midnight, 20 October | 116 | 287 | Noon | 80 | 167 |
| 1 AM | 122 | 303 | 1 PM | 86 | 187 |
| 2 AM | 138 | 315 | 2 PM | 83 | 177 |
| 3 AM | 177 | 344 | 3 PM | 78 | 160 |
| 4 AM | 188 | 353 |
| PM2.5 reading, µg/m³ | AQI figure | Points per µg/m³ |
|---|---|---|
| 0 to 30 | 0 to 50 | 1.67 |
| 30 to 60 | 51 to 100 | 1.63 |
| 60 to 90 | 101 to 200 | 3.30 |
| 90 to 120 | 201 to 300 | 3.30 |
| 120 to 250 | 301 to 400 | 0.76 |
| 250 to 380 | 401 to 500 | 0.76 |
CPCB's scale is a chain of straight pieces of different steepness. Between 60 and 120 µg/m³ each microgram adds 3.3 points, but above 120 each adds only 0.76. Bawana spent 11 hours at or below 120 and 12 above it, so its day sat across the bend. Converted hour by hour, the hours with lower readings lose points quickly on the steep piece and the hours with higher readings gain them slowly on the flat piece, so the average of the hourly figures falls below the figure of the average reading.
The lowest reading came at 6 PM on 19 October, 59 µg/m³, which converts to 98. The highest came at 6 AM on 20 October, 204, which converts to 365. Averaging the two readings first gives 131.5, which converts to 310, while converting first and then averaging gives (98 + 365) ÷ 2 = 231.5. The lower hour sat 61 µg/m³ below the bend and lost 202 points against the 300 at the bend, while the higher hour sat 84 above it and gained only 65.
307 is Very Poor and 270 is Poor, so the same readings put Bawana in different CPCB categories. PM2.5 set Bawana's AQI both ways, because every other pollutant's figure was lower: the next highest was PM10, at 181 on the documented formula and 186 on the reconstruction.
The order does not always make the documented formula the higher figure. At CRRI Mathura Road on the same day, PM10 set the AQI, and the PM10 scale grows steeper as the reading rises: each microgram adds 0.66 between 100 and 250, 0.99 between 250 and 350 and 1.24 between 350 and 430 µg/m³. Its 23 readings averaged 226 µg/m³, which converts to 184, but 8 of them were above 250, the highest at 404.9, and those hours are converted on the steeper pieces. The average of its hourly figures is therefore higher, at 197. The PM2.5 scale also turns steeper at 60 µg/m³, so a PM2.5 station whose hours sit around 60 behaves the same way.
Source: CPCB's hourly readings at Bawana and CRRI Mathura Road, the 24 hours ending 4 PM on 20 October 2026, compiled from CPCB's CCR portal by CREA; CPCB's breakpoints from CPCB's note and CPCB's AQI Calculator. Every figure is computed by this office with the same functions as the day's own figures.
The table and chart use every station-day of the test on 13 DPCC stations, 2018 to 2024, on which the same pollutant set both figures. They show the documented formula's figure minus the reconstruction's, by the level of the documented figure, and the share of days on which the documented formula was the lower of the two.
| Documented figure | PM2.5-led days | Average difference | Days lower | PM10-led days | Average difference | Days lower |
|---|---|---|---|---|---|---|
| up to 100 | 306 | −4.7 | 69% | 2,685 | +1.6 | 1% |
| 101 to 150 | 450 | −8.4 | 94% | 4,165 | +1.5 | 11% |
| 151 to 200 | 970 | +0.3 | 55% | 2,628 | −4.9 | 85% |
| 201 to 250 | 1,024 | +14.3 | 4% | 1,018 | −9.1 | 97% |
| 251 to 300 | 959 | +33.8 | 0% | 692 | −6.0 | 84% |
| 301 to 350 | 3,101 | +28.6 | 0% | 499 | +4.4 | 47% |
| 351 to 400 | 2,031 | +9.8 | 6% | 528 | +20.0 | 7% |
| 401 to 500 | 1,488 | +20.2 | 0% | 1,419 | +51.4 | 0% |
CPCB's CCR portal publishes a daily AQI for each station. For 13 DPCC stations, 2018 to 2024, this office computed both figures from CPCB's hourly readings over the 24 hours ending 4 PM and set each against CPCB's published figure: the average gap, the share within 5 points, the share in the same category, and the average signed gap.
| Year | Station-days | Stations | Documented: gap | within 5 | same category | above CPCB | Reconstruction: gap | within 5 | same category | above CPCB |
|---|---|---|---|---|---|---|---|---|---|---|
| 2018 | 3,381 | 13 | 25.0 | 33% | 77% | +19.8 | 7.9 | 63% | 93% | +3.1 |
| 2019 | 4,374 | 13 | 19.3 | 37% | 79% | +14.4 | 6.3 | 68% | 93% | +2.7 |
| 2020 | 4,392 | 13 | 17.3 | 43% | 81% | +13.2 | 5.2 | 75% | 94% | +1.7 |
| 2021 | 3,811 | 13 | 16.7 | 46% | 81% | +10.5 | 6.5 | 72% | 94% | +1.5 |
| 2022 | 4,298 | 13 | 18.6 | 40% | 79% | +14.7 | 6.6 | 67% | 94% | +3.7 |
| 2023 | 4,332 | 13 | 17.2 | 43% | 83% | +13.8 | 5.5 | 71% | 95% | +3.1 |
| 2024 | 4,238 | 12 | 15.7 | 45% | 83% | +11.3 | 4.1 | 79% | 96% | +2.0 |
On the calendar day from midnight to midnight both figures fit CPCB's published station figure worse: the reconstruction's gap rose to 16.7 to 19.8 points and the documented formula's to 22.9 to 31.6. CPCB's published daily station figure fits the 24 hours ending 4 PM, the window of its bulletin.
2017 is reported apart because only 3 stations can be tested, on 418 station-days. The reconstruction came within 16.2 points of CPCB's figure on average against 29.1 for the documented formula, and within 5 points on 57 per cent of days against 19. In that year too, CPCB's published station figure is closer to the hour-by-hour calculation, as in 2018 to 2024, by a smaller margin: the documented formula sat 4.5 points above CPCB's figure on average and the reconstruction 8.9 below it, so in that year neither figure fits well on average. On the 223 station-days on which the two differed by 10 points or more, CPCB's figure was closer to the hour-by-hour calculation on 203 and to the documented formula on 19.
The table takes every station-day of the test, 2018 to 2024, that CPCB published as Very Poor or Severe, and sets both computed figures against CPCB's own figure on that day.
| CPCB published | Station-days | Documented formula higher | Documented minus CPCB | Hour by hour minus CPCB | Hour by hour within 5 | CPCB below hour by hour |
|---|---|---|---|---|---|---|
| Very Poor, 301 to 400 | 5,930 | 5,622 | +25.9 | +7.3 | 54.4% | 5,029 |
| Severe, 401 to 500 | 2,446 | 2,421 | +41.5 | +10.3 | 30.2% | 2,294 |
| Both | 8,376 | 8,043 | +30.5 |
CPCB's own formula gave the higher figure on 8,043 of the 8,376 station-days, was equal on 154 and lower on 179, and put the station in a worse category on 1,309 and a better one on 30. On the station-days CPCB published as Severe, CPCB's figure sat on average 10.3 points below the hour-by-hour calculation and 41.5 below the documented formula. On those it published as Very Poor, it sat 7.3 and 25.9 points below them. On polluted station-days CPCB's published figure is therefore lower, on average, than both computed figures: below the hour-by-hour calculation on 2,294 of the 2,446 Severe station-days and on 5,029 of the 5,930 Very Poor ones.
Where the two orders give nearly the same number, no test can show which one CPCB's figure tracks, so the deciding days are those on which they part. On the 11,656 station-days of 2018 to 2024 on which the two differed by 10 points or more, CPCB's figure was closer to the hour-by-hour calculation on 11,013 and to the documented formula on 597. CPCB's figure equals the hour-by-hour figure exactly on 17.0 per cent of all station-days, so the two are close and not the same.
For carbon monoxide and ozone the two figures also differ in their 8-hour window, and the reconstruction's ozone channel is an open item. The test is therefore repeated on the station-days on which PM2.5 or PM10 set both figures. On those days the two figures differ only in the order of the arithmetic.
| Year | Station-days | Documented: gap | same category | above CPCB | Reconstruction: gap | same category | above CPCB |
|---|---|---|---|---|---|---|---|
| 2018 | 3,248 | 25.3 | 78% | +20.6 | 7.8 | 93% | +3.6 |
| 2019 | 3,995 | 19.6 | 80% | +15.1 | 6.2 | 94% | +3.2 |
| 2020 | 3,851 | 17.6 | 82% | +14.5 | 4.7 | 95% | +2.6 |
| 2021 | 3,580 | 16.3 | 82% | +11.7 | 5.7 | 95% | +2.5 |
| 2022 | 4,065 | 18.9 | 79% | +15.4 | 6.6 | 94% | +4.1 |
| 2023 | 4,132 | 17.5 | 83% | +14.3 | 5.4 | 95% | +3.4 |
| 2024 | 4,001 | 15.9 | 84% | +11.6 | 4.0 | 96% | +2.3 |
The result does not change. On particle-led days the documented formula ran 11.6 to 20.6 points above CPCB's published figure, and the reconstruction came within 4.0 to 7.8 points of it.
Delhi's city figure is the average of its stations' AQIs on each basis, and CPCB's bulletin gives its own for the same 24 hours. The table averages each year over the days on which all three exist.
| Year | Days | First day | Last day | Stations, average | CPCB's bulletin | Documented formula | Reconstruction | Documented minus bulletin | Days documented higher | Category worse than bulletin | Category better |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2015 | 234 | 1 May | 31 Dec | 6.5 | 230.1 | 247.9 | 232.5 | +17.8 | 167 | 61 | 15 |
| 2016 | 354 | 1 Jan | 31 Dec | 5.5 | 256.4 | 268.6 | 255.7 | +12.2 | 266 | 57 | 14 |
| 2017 | 363 | 1 Jan | 31 Dec | 7.1 | 227.5 | 232.1 | 220.9 | +4.6 | 208 | 39 | 28 |
| 2018 | 364 | 1 Jan | 31 Dec | 30.5 | 225.2 | 240.1 | 227.9 | +14.9 | 292 | 54 | 1 |
| 2019 | 365 | 1 Jan | 31 Dec | 35.9 | 214.6 | 224.5 | 214.8 | +9.9 | 270 | 38 | 7 |
| 2020 | 366 | 1 Jan | 31 Dec | 34.8 | 185.1 | 194.4 | 184.9 | +9.3 | 267 | 42 | 9 |
| 2021 | 334 | 1 Jan | 30 Nov | 34.8 | 196.8 | 204.5 | 196.8 | +7.8 | 219 | 42 | 4 |
| 2022 | 365 | 1 Jan | 31 Dec | 36.5 | 209.2 | 219.4 | 210.6 | +10.2 | 288 | 36 | 6 |
| 2023 | 364 | 1 Jan | 31 Dec | 36.2 | 203.1 | 212.5 | 204.0 | +9.4 | 288 | 42 | 5 |
| 2024 | 366 | 1 Jan | 31 Dec | 37.9 | 208.9 | 216.5 | 208.8 | +7.6 | 265 | 35 | 1 |
| 2025 | 364 | 2 Jan | 31 Dec | 38.4 | 200.5 | 205.5 | 198.0 | +5.0 | 243 | 33 | 10 |
| 2026 | 288 | 1 Jan | 20 Oct | 43.7 | 167.3 | 171.7 | 167.1 | +4.5 | 202 | 12 | 3 |
| 2015 to 2026 | 4,127 | 210.5 | 219.8 | 210.2 | +9.3 | 2,975 | 491 | 103 |
No day from 1 December 2021 to 31 December 2021 can be computed, because the hourly record holds almost no gas readings for that month and CPCB's rule needs three pollutants. Outside that month, 33 days in the record are absent because one of the three figures is missing for them. In October and November 2021 the record holds no CO, ozone or SO2, and in September 2021 only 804 to 956 station-hours of each, so those months are computed on PM2.5, PM10 and NO2 on both bases. The two category columns compare the documented formula with CPCB's bulletin, so they mix the formula and the station set.
This page asks the station test's question of Delhi's city figure. For each day it measures how far each computed city figure sits from the figure CPCB's 4 PM bulletin printed, and the table gives the yearly average of that gap and the share of days within 5 points.
| Year | Days | Stations computed, average | Bulletin stations, median | Documented formula: gap | within 5 | Reconstruction: gap | within 5 |
|---|---|---|---|---|---|---|---|
| 2015 | 234 | 6.5 | 5 | 29.7 | 14% | 22.8 | 31% |
| 2016 | 354 | 5.5 | 5 | 20.3 | 20% | 13.2 | 39% |
| 2017 | 363 | 7.1 | 9 | 19.1 | 18% | 15.2 | 27% |
| 2018 | 364 | 30.5 | 28 | 18.3 | 22% | 8.4 | 50% |
| 2019 | 365 | 35.9 | 34 | 12.9 | 39% | 4.2 | 70% |
| 2020 | 366 | 34.8 | 33 | 12.1 | 41% | 3.6 | 74% |
| 2021 | 334 | 34.8 | 34 | 11.9 | 38% | 4.8 | 63% |
| 2022 | 365 | 36.5 | 35 | 12.0 | 36% | 3.7 | 73% |
| 2023 | 364 | 36.2 | 36 | 11.1 | 46% | 3.7 | 72% |
| 2024 | 366 | 37.9 | 36 | 9.9 | 45% | 3.0 | 79% |
| 2025 | 364 | 38.4 | 37 | 10.4 | 41% | 4.8 | 66% |
| 2026 | 288 | 43.7 | 44 | 6.6 | 62% | 2.5 | 85% |
The reconstruction sits closer to CPCB's published city figure in 12 of the 12 years. From 2018 to 2026 its gap is 2.5 to 8.4 points, against 6.6 to 18.3 for the documented formula. In 2015 to 2017 the computed figures rest on 7.1 stations a day on average or fewer, against CPCB's 5 to 9, and both figures fit far less tightly: the reconstruction's gap is 13.2 to 22.8 points. In those years too the published city figure is closer to the hour-by-hour calculation, by a smaller margin, and the years cannot show when CPCB's published figure came to track that order.
The full count of days in each CPCB category, on each basis, for every year. A city figure is placed in a category after rounding to a whole number, as CPCB's bulletin prints it.
| Year | Basis | Good | Satisfactory | Moderate | Poor | Very Poor | Severe |
|---|---|---|---|---|---|---|---|
| 2015 | CPCB's bulletin | 0 | 22 | 76 | 74 | 55 | 7 |
| Documented formula | 0 | 19 | 60 | 74 | 65 | 16 | |
| Reconstruction | 0 | 17 | 76 | 85 | 49 | 7 | |
| 2016 | CPCB's bulletin | 0 | 24 | 86 | 120 | 98 | 26 |
| Documented formula | 0 | 25 | 80 | 105 | 99 | 45 | |
| Reconstruction | 0 | 27 | 86 | 123 | 84 | 34 | |
| 2017 | CPCB's bulletin | 2 | 45 | 105 | 114 | 88 | 9 |
| Documented formula | 0 | 52 | 105 | 99 | 89 | 18 | |
| Reconstruction | 0 | 59 | 102 | 110 | 81 | 11 | |
| 2018 | CPCB's bulletin | 0 | 53 | 106 | 113 | 72 | 20 |
| Documented formula | 0 | 48 | 102 | 97 | 83 | 34 | |
| Reconstruction | 0 | 52 | 103 | 111 | 78 | 20 | |
| 2019 | CPCB's bulletin | 2 | 59 | 121 | 103 | 56 | 24 |
| Documented formula | 0 | 61 | 119 | 89 | 61 | 35 | |
| Reconstruction | 2 | 63 | 121 | 98 | 54 | 27 | |
| 2020 | CPCB's bulletin | 5 | 95 | 127 | 75 | 49 | 15 |
| Documented formula | 3 | 101 | 119 | 59 | 58 | 26 | |
| Reconstruction | 7 | 102 | 120 | 70 | 49 | 18 |
The count continues from 2021 to 2026, and the last three rows add every year from 2015 to 2026.
| Year | Basis | Good | Satisfactory | Moderate | Poor | Very Poor | Severe |
|---|---|---|---|---|---|---|---|
| 2021 | CPCB's bulletin | 1 | 72 | 124 | 70 | 50 | 17 |
| Documented formula | 2 | 65 | 126 | 53 | 63 | 25 | |
| Reconstruction | 2 | 73 | 123 | 62 | 56 | 18 | |
| 2022 | CPCB's bulletin | 3 | 65 | 95 | 130 | 66 | 6 |
| Documented formula | 2 | 62 | 102 | 106 | 80 | 13 | |
| Reconstruction | 3 | 67 | 95 | 123 | 67 | 10 | |
| 2023 | CPCB's bulletin | 1 | 60 | 145 | 77 | 66 | 15 |
| Documented formula | 0 | 62 | 134 | 74 | 65 | 29 | |
| Reconstruction | 1 | 66 | 140 | 76 | 56 | 25 | |
| 2024 | CPCB's bulletin | 0 | 66 | 143 | 70 | 70 | 17 |
| Documented formula | 0 | 67 | 127 | 73 | 74 | 25 | |
| Reconstruction | 0 | 68 | 142 | 69 | 67 | 20 | |
| 2025 | CPCB's bulletin | 0 | 79 | 121 | 86 | 70 | 8 |
| Documented formula | 0 | 79 | 127 | 65 | 71 | 22 | |
| Reconstruction | 0 | 82 | 129 | 75 | 67 | 11 | |
| 2026 | CPCB's bulletin | 1 | 61 | 147 | 60 | 17 | 2 |
| Documented formula | 0 | 59 | 148 | 60 | 18 | 3 | |
| Reconstruction | 1 | 63 | 146 | 59 | 16 | 3 | |
| 2015 to 2026 | CPCB's bulletin | 15 | 701 | 1,396 | 1,092 | 757 | 166 |
| Documented formula | 7 | 700 | 1,349 | 954 | 826 | 291 | |
| Reconstruction | 16 | 739 | 1,383 | 1,061 | 724 | 204 |
Severe is CPCB's worst category, an AQI of 401 or more. In 2025, Delhi was Severe on 22 days on CPCB's documented formula, on 11 days on the reconstruction, and on 8 days in CPCB's bulletin. The difference of 11 days between the first two is the formula. The difference of 3 days between the last two is everything else, which includes the station set and the data.
| Year | Severe: bulletin | Severe: documented | Severe: reconstruction | Very Poor or Severe: bulletin | documented | reconstruction |
|---|---|---|---|---|---|---|
| 2015 | 7 | 16 | 7 | 62 | 81 | 56 |
| 2016 | 26 | 45 | 34 | 124 | 144 | 118 |
| 2017 | 9 | 18 | 11 | 97 | 107 | 92 |
| 2018 | 20 | 34 | 20 | 92 | 117 | 98 |
| 2019 | 24 | 35 | 27 | 80 | 96 | 81 |
| 2020 | 15 | 26 | 18 | 64 | 84 | 67 |
| 2021 | 17 | 25 | 18 | 67 | 88 | 74 |
| 2022 | 6 | 13 | 10 | 72 | 93 | 77 |
| 2023 | 15 | 29 | 25 | 81 | 94 | 81 |
| 2024 | 17 | 25 | 20 | 87 | 99 | 87 |
| 2025 | 8 | 22 | 11 | 78 | 93 | 78 |
| 2026 | 2 | 3 | 3 | 19 | 21 | 19 |
| 2015 to 2026 | 166 | 291 | 204 | 923 | 1,117 | 928 |
CPCB's own bulletin prints a health statement for each category, and the statement changes when the category changes. CPCB's own formula put Delhi in Very Poor or Severe on 1,117 days, and the hour-by-hour calculation on 928, on the same readings.
| Category | CPCB's health statement |
|---|---|
| Poor, 201 to 300 | Breathing discomfort to most people on prolonged exposure |
| Very Poor, 301 to 400 | Respiratory illness on prolonged exposure |
| Severe, 401 to 500 | Affects healthy people and seriously impacts those with existing diseases |
For those two categories CPCB's report says: "In case AQI category is severe or very poor, necessary steps need to be taken by further regulating the emissions which are causing maximum impact to ambient air quality." (CUPS/82/2014-15, section 3.4, printed page 36).
| Delhi, the whole record | CPCB's 4 PM bulletin | Documented formula | Hour by hour |
|---|---|---|---|
| Poor days | 1,092 | 954 | 1,061 |
| Very Poor days | 757 | 826 | 724 |
| Severe days | 166 | 291 | 204 |
The gap between the documented formula and CPCB's bulletin has two parts, measured apart here. The first is the formula: the documented formula minus the reconstruction, on the same readings and stations. The second is everything else: the reconstruction minus CPCB's bulletin, which includes the stations, late or missing data, CPCB's rounding, and any part of CPCB's arithmetic that the reconstruction does not reproduce. Over all days it averages −0.3 points; on the 928 Very Poor and Severe days it averages +4.5 and runs the same way as the formula, so CPCB's bulletin sat 22.8 points below CPCB's documented formula on those days.
| Year | Formula alone: average | days higher | days lower | category worse | category better | Everything else: average | average size | category differs |
|---|---|---|---|---|---|---|---|---|
| 2015 | +15.5 | 201 | 32 | 49 | 3 | +2.4 | 22.8 | 56 |
| 2016 | +12.8 | 306 | 42 | 47 | 0 | −0.6 | 13.2 | 48 |
| 2017 | +11.2 | 312 | 47 | 34 | 1 | −6.5 | 15.2 | 64 |
| 2018 | +12.2 | 321 | 42 | 42 | 0 | +2.7 | 8.4 | 27 |
| 2019 | +9.7 | 286 | 77 | 38 | 3 | +0.2 | 4.2 | 14 |
| 2020 | +9.5 | 309 | 56 | 41 | 1 | −0.2 | 3.6 | 21 |
| 2021 | +7.7 | 272 | 61 | 34 | 0 | 0.0 | 4.8 | 14 |
| 2022 | +8.8 | 314 | 51 | 28 | 3 | +1.4 | 3.7 | 19 |
| 2023 | +8.5 | 318 | 46 | 34 | 0 | +0.9 | 3.7 | 21 |
| 2024 | +7.7 | 309 | 54 | 34 | 0 | −0.2 | 3.0 | 6 |
| 2025 | +7.4 | 308 | 55 | 36 | 2 | −2.4 | 4.8 | 17 |
| 2026 | +4.7 | 214 | 74 | 12 | 1 | −0.2 | 2.5 | 4 |
| 2015 to 2026 | +9.6 | 3,470 | 637 | 429 | 14 | −0.3 | 7.1 | 311 |
On the same months of each year, 1 January to 20 October, the formula's part fell from 11.7 points in 2016 to 4.7 in 2026. About half of that fall comes from a different mix of days, with fewer Poor, Very Poor and Severe days, and about half from smaller additions on the Moderate, Poor and Very Poor days. On Severe days the formula's part was between 18.1 and 28.8 points in every full year, and 26.0 on the 3 Severe days of 2026.
Each dot is one day from 1 May 2015 to 20 October 2026. It is placed along the bottom by Delhi's figure on the reconstruction, and up or down by how far the documented formula sits above or below it. The table counts the days in each category of the reconstruction.
| Category on the reconstruction | Days | Formula alone, average | Days documented higher | Days documented lower |
|---|---|---|---|---|
| Good | 16 | +4.5 | 14 | 2 |
| Satisfactory | 739 | +4.2 | 697 | 37 |
| Moderate | 1,383 | +2.3 | 879 | 492 |
| Poor | 1,061 | +15.1 | 954 | 104 |
| Very Poor | 724 | +17.3 | 722 | 2 |
| Severe | 204 | +21.9 | 204 | 0 |
| Date | Stations | CPCB's bulletin | Documented formula | Reconstruction | Formula alone | Station set |
|---|---|---|---|---|---|---|
| 21 October 2025 | 36 | 351.0 | 434.9 | 353.4 | +81.5 | +2.4 |
| 15 May 2025 | 39 | 292.0 | 373.0 | 291.5 | +81.5 | −0.5 |
| 8 November 2018 | 27 | 390.0 | 465.8 | 386.3 | +79.5 | −3.7 |
| 10 November 2023 | 38 | 279.0 | 361.0 | 285.2 | +75.8 | +6.2 |
| 23 May 2021 | 32 | 237.0 | 319.0 | 247.3 | +71.7 | +10.3 |
| 13 November 2023 | 35 | 358.0 | 434.6 | 366.6 | +68.0 | +8.6 |
| 13 November 2024 | 39 | 418.0 | 488.9 | 426.0 | +62.9 | +8.0 |
| 21 April 2018 | 30 | 356.0 | 455.6 | 396.1 | +59.5 | +40.1 |
| Date | Stations | CPCB's bulletin | Documented formula | Reconstruction | Formula alone | Station set |
|---|---|---|---|---|---|---|
| 21 May 2026 | 43 | 209.0 | 201.0 | 214.4 | −13.5 | +5.4 |
| 28 May 2022 | 21 | 210.0 | 200.9 | 213.9 | −13.0 | +3.9 |
| 17 May 2022 | 37 | 239.0 | 230.4 | 243.4 | −13.0 | +4.4 |
| 29 June 2020 | 33 | 230.0 | 223.0 | 234.5 | −11.4 | +4.5 |
| Year | Date | Stations | CPCB's stations | CPCB's bulletin | Documented formula | Reconstruction | Documented minus bulletin |
|---|---|---|---|---|---|---|---|
| 2015 | 31 May 2015 | 5 | 1 (under half) | 74.0 | 267.4 | 238.8 | +193.4 |
| 2016 | 12 March 2016 | 2 | 1 | 108.0 | 238.5 | 239.5 | +130.5 |
| 2017 | 14 November 2017 | 13 | 13 | 308.0 | 412.1 | 402.3 | +104.1 |
| 2018 | 21 April 2018 | 30 | 11 (under half) | 356.0 | 455.6 | 396.1 | +99.6 |
| 2019 | 11 June 2019 | 35 | 9 (under half) | 300.0 | 362.8 | 306.5 | +62.8 |
| 2020 | 1 November 2020 | 36 | 35 | 364.0 | 427.1 | 373.8 | +63.1 |
| 2021 | 23 May 2021 | 32 | 26 | 237.0 | 319.0 | 247.3 | +82.0 |
| 2022 | 25 October 2022 | 37 | 35 | 302.0 | 360.5 | 304.6 | +58.5 |
| 2023 | 16 May 2023 | 37 | 39 | 254.0 | 352.2 | 295.9 | +98.2 |
| 2024 | 13 November 2024 | 39 | 36 | 418.0 | 488.9 | 426.0 | +70.9 |
| 2025 | 21 October 2025 | 36 | 35 | 351.0 | 434.9 | 353.4 | +83.9 |
| 2026 | 2 January 2026 | 37 | 36 | 236.0 | 286.4 | 237.2 | +50.4 |
The first two lists take only days with at least 20 computed stations; 993 days, nearly all from 2015 to 2017, have fewer, and the last table keeps them. The largest of those thin days was 12 July 2015, +90.0 points on 3 stations, with CO setting the documented figure, so the 8-hour gas window, and not only the order, made it.
Of the eight days, 21 October 2025 and 13 November 2023, and in the last table 25 October 2022, are the 24 hours after a Diwali night; the festival list on disk starts in 2021. The 928 Very Poor and Severe days count every day, and the median addition on them is 16.4 points. "CPCB's stations" is the count CPCB's bulletin printed, marked where it is under half the computed count.
The table gives Delhi on all three bases for the 24 hours ending 4 PM IST on 20 October 2026, the window of CPCB's 4 PM bulletin. CPCB's bulletin gives a city figure, its category and the number of stations that took part, and no station categories.
| Basis | Delhi | Category | Stations | Poor or worse stations | Very Poor stations |
|---|---|---|---|---|---|
| CPCB's 4 PM bulletin | 179.0 | Moderate | 54/59 | not given | not given |
| Documented formula | 180.1 | Moderate | 56 | 15 | 1 |
| Reconstruction | 177.6 | Moderate | 56 | 16 | 0 |
At the stations the direction was mixed that day. The documented formula was higher at 18 stations, lower at 24 and equal at 14. The largest rises, documented formula first: Bawana 307 against 270; NSUT Jaffarpur 263 against 238; Jahangirpuri 281 against 259. The other way: CRRI Mathura Road 184 against 197; Wazirpur 190 against 200; Karala 138 against 145. The two bases put 2 stations in a different category, and the reconstruction counts one more station in Poor or worse than the documented formula.
For every city in CPCB's 4 PM bulletin, on the 30 days from 21 September 2026 to 20 October 2026 and the 31 days of December 2025, both city figures were computed from CPCB's hourly readings and set against the bulletin. A city with one station is the cleanest test, because no rule for combining stations enters.
| Window and cities | Number | Hourly order closer | Documented formula closer | Level | Documented: median gap | Reconstruction: median gap |
|---|---|---|---|---|---|---|
| 21 September to 20 October: all cities | 289 | 259 | 20 | 10 | 2.9 | 1.1 |
| 21 September to 20 October: one station | 225 | 201 | 14 | 10 | 2.9 | 0.9 |
| December 2025: all cities | 261 | 246 | 9 | 6 | 5.3 | 1.5 |
| December 2025: one station | 199 | 187 | 6 | 6 | 5.1 | 1.2 |
In 246 of 261 cities in December 2025, the AQI that CPCB published is closer to the hour-by-hour calculation than to CPCB's own documented formula. Winter is when the two orders separate most: in cities with one station the median gap from CPCB's figure was 5.1 points for the documented formula and 1.2 for the hour-by-hour calculation. On a polluted day this lowers the published number: on 12 December 2025 CPCB published 291 for Kolkata, Poor, where its own formula gives 308.6, Very Poor. On cleaner days, mostly Moderate ones, and at single stations where PM10 sets a figure below 350, the documented formula can be the lower figure. The evidence shows what CPCB publishes, and not why.
Across the 7,205 city-days with all three figures in CPCB's December 2025 bulletins, CPCB's own formula put 653 in Very Poor or Severe, against 352 on the hour-by-hour calculation from the same readings and 343 in CPCB's bulletins. On the 6,873 city-days where the computed station count equals CPCB's, the figures are 612, 314 and 307; that matched set holds no Delhi day.
Where the two orders give nearly the same number, no test can show which one CPCB's figure tracks, so the deciding days are those on which they part. The table counts, for one-station cities, the days on which the two figures were 5 points or more apart, and on how many of them CPCB printed exactly one of the two.
| Window | One-station city-days 5 or more apart | CPCB printed the hour-by-hour figure exactly | CPCB printed the documented figure exactly | Cities: hour by hour closer / documented closer / within half a point |
|---|---|---|---|---|
| 21 September to 20 October 2026 | 761 | 264 | 6 | 193 / 5 / 91 |
| December 2025 | 1,866 | 526 | 4 | 230 / 3 / 28 |
On the 1,866 days of December 2025 on which a one-station city's two figures were 5 points or more apart, CPCB published exactly the hour-by-hour figure on 526 and exactly the documented figure on 4.
With the same margin of half a point on both sides, on the gaps as printed in Annexure B, the hour-by-hour calculation is closer in 193 cities, the documented formula in 5, and 91 are within half a point; in December 2025 the counts are 230, 3 and 28.
Among the 259 cities where the hourly order is closer in the autumn, 23 have an hourly gap above 5 points, so neither order fits them well; in December 2025 the figure is 31 of 246. The result rests on days led by particles: on autumn city-days 5 or more points apart, the documented formula was closer on 50 of 771 particle-led days and on 47 of 157 days on which CPCB named a gas.
Of the 20 cities where the documented formula is closer, 15 are within half a point, mostly cities with clean air, where both orders give nearly the same number. In a few others both figures are far off, such as Katihar 30.0, Guwahati 19.0, Kolar 13.6, Durgapur 11.5 points for the documented formula, and neither can match, probably because the readings lack a station or a gas that CPCB used. CPCB names CO or SO2 as prominent on 31.8 per cent of those cities' days, against 10.7 per cent in all cities, and the all-India readings carry CO for a median of 46 stations a day and SO2 for 38, against 514 for PM2.5.
Kolkata's figure on the two orders, set against CPCB's bulletin, in the autumn window and in the winter, on CPCB's own readings for the city's stations.
| Window | Example day | CPCB's bulletin | Documented formula | Reconstruction | Stations: CPCB / computed | Month: documented gap | hourly gap | Within 5 points |
|---|---|---|---|---|---|---|---|---|
| 21 September to 20 October 2026 | 20 October 2026 | 95, Satisfactory | 95.7, Satisfactory | 95.3, Satisfactory | 6 of 7 / 6 | 0.9 | 0.9 | 97% / 93% |
| December 2025 | 12 December 2025 | 291, Poor | 308.6, Very Poor | 291.0, Poor | 7 of 7 / 7 | 8.7 | 2.7 | 35% / 84% |
In the autumn window the air was clean to middling, 6 Good, 11 Satisfactory, 13 Moderate days, and the two orders sat within 2.6 points of each other on every day. On that test the two are level, at 0.9 points each, and the documented formula is within 5 points on more days, 97 per cent against 93.
In December 2025, the example is the city's highest bulletin day, 12 December 2025. CPCB published 291, Poor. CPCB's own formula gives 308.6, Very Poor, and the hourly order gives 291.0, exactly the published figure. Over the month the documented formula sits 8.7 points from CPCB's figure on average and the hourly order 2.7; they are within 5 points on 35 and 84 per cent of days.
The two orders separate when a day's PM2.5 hours sit on both sides of the bend at 120 µg/m³ (page 7), which happens on polluted winter days. In a clean month the two give nearly the same number, so only a polluted month shows which one CPCB's figure tracks, and how far apart the two can be.
CPCB's bulletin of 12 December 2025 printed Kolkata as Poor, for which the same bulletin prints the health statement "Breathing discomfort to most people on prolonged exposure". On CPCB's own formula the same readings are Very Poor, for which the bulletin prints "Respiratory illness on prolonged exposure" (CPCB AQI bulletin of 12 December 2025, pages 7 and 14).
Mumbai's figure on the two orders, set against CPCB's bulletin, in the autumn window and in the winter, on CPCB's own readings for the city's stations.
| Window | Example day | CPCB's bulletin | Documented formula | Reconstruction | Stations: CPCB / computed | Month: documented gap | hourly gap | Within 5 points |
|---|---|---|---|---|---|---|---|---|
| 21 September to 20 October 2026 | 20 October 2026 | 102, Moderate | 102.7, Moderate | 102.6, Moderate | 23 of 26 / 23 | 2.1 | 1.6 | 93% / 93% |
| December 2025 | 4 December 2025 | 138, Moderate | 141.1, Moderate | 138.6, Moderate | 23 of 30 / 22 | 3.9 | 3.0 | 71% / 77% |
In the autumn window the air was clean to middling, 3 Good, 19 Satisfactory, 8 Moderate days, and the two orders sat within 2.5 points of each other on every day. The hourly order is the closer, at 1.6 points against 2.1.
In December 2025, the example is the city's highest bulletin day, 4 December 2025. CPCB published 138, Moderate. CPCB's own formula gives 141.1, Moderate, and the hourly order gives 138.6. Over the month the documented formula sits 3.9 points from CPCB's figure on average and the hourly order 3.0; they are within 5 points on 71 and 77 per cent of days.
The two orders separate when a day's PM2.5 hours sit on both sides of the bend at 120 µg/m³ (page 7), which happens on polluted winter days. In a clean month the two give nearly the same number, so only a polluted month shows which one CPCB's figure tracks, and how far apart the two can be.
The table states only what each authority's own document says, with the document and page. None of the eight documents describes averaging hourly sub-indices into a daily figure. For a daily index, each of the others averages the concentration first and converts once, and the European index converts each hour and reports that hour.
| Authority | Within a station | Across stations | Document and page |
|---|---|---|---|
| India, CPCB | Average first: the 24-hour average concentration, 8-hour for CO and O3, then one conversion; the worst sub-index is the AQI. | A city figure is an "average value". The note does not say of what. | How is AQI calculated?, item 1; bulletin of 20 October 2026, page 15 |
| United States, EPA | Average first: 24-hour PM, 8-hour ozone and CO, then the index. The hourly NowCast is a weighted average of concentrations, then converted. | The highest concentration among all the area's monitors, per pollutant. | EPA-403/B-26-003, May 2026, printed pages 2, 13 and 16; 40 CFR 58 Appendix G, s.3.4 |
| China, MEE | Average first: 24-hour mean, ozone's daily maximum 8-hour mean, then the index. | The city's concentration is the arithmetic mean of its urban points' concentrations, converted once. | HJ 633-2026, s.4.2.1 to 4.2.3; HJ 663-2026, Table A.2, printed page 5 |
| European Union, EEA | Since the 2025 revision, each hour's concentration of all five pollutants is converted every hour. PM used a 24-hour running mean until then. | None: the index is shown per station, with a separate modelled map. | EEA index, Methodology; ETC HE Report 2024/17, pages 5 to 9 |
| United Kingdom, Defra | Average first: running 8-hour ozone, hourly NO2, 15-minute SO2, daily mean PM, then banded. | Silent on combining sites; measured data are shown per site. | UK-AIR DAQI page; Defra, April 2013, printed page 2 |
| Canada, ECCC | Average first: 3-hour averages of NO2, O3 and PM2.5, then the formula. | "an average from local stations"; not stated of what. | canada.ca, About the AQHI, page dated 14 October 2026 |
| Hong Kong, EPD | Average first: 3-hour moving averages, then the added-risk formula. | None: reported per station. | AQHI FAQs |
| Singapore, NEA | Average first: 24-hour averages, one sub-index each, the highest taken. | Five regions; how stations form a region is not stated. | NEA air pollution FAQs |
Each column puts the same hourly readings through one method, and each cell is the yearly average of Delhi's daily figure on the days on which every column has one. The US and British methods use the calendar day; the CPCB-based columns use the 24 hours ending 4 PM.
| Year | Days | CPCB's published bulletin | CPCB formula as documented | US EPA in toto | UK DAQI in toto, highest site, this office's choice (1 to 10) | CPCB formula, US area rule | Stations: computed / bulletin |
|---|---|---|---|---|---|---|---|
| 2015 | 194 | 232.7 | 248.5 | 354.6 | 9.8 | 380.7 | 6 / 5 |
| 2016 | 299 | 254.2 | 265.3 | 344.1 | 9.9 | 367.4 | 6 / 5 |
| 2017 | 323 | 224.3 | 228.7 | 308.7 | 9.7 | 330.4 | 6 / 9 |
| 2018 | 334 | 231.8 | 248.0 | 332.5 | 10.0 | 364.8 | 31 / 28 |
| 2019 | 322 | 222.4 | 234.0 | 295.5 | 10.0 | 332.2 | 36 / 34 |
| 2020 | 366 | 185.1 | 194.4 | 251.3 | 9.7 | 278.5 | 35 / 33 |
| 2021 | 334 | 196.8 | 204.5 | 269.7 | 9.9 | 307.0 | 35 / 34 |
| 2022 | 365 | 209.2 | 219.4 | 279.0 | 9.9 | 338.4 | 37 / 35 |
| 2023 | 363 | 202.6 | 212.0 | 272.3 | 9.9 | 316.9 | 37 / 36 |
| 2024 | 366 | 208.9 | 216.5 | 285.5 | 10.0 | 334.6 | 38 / 36 |
| 2025 | 364 | 200.5 | 205.5 | 269.2 | 10.0 | 308.1 | 39 / 37 |
| 2026 | 287 | 167.2 | 171.7 | 222.7 | 10.0 | 282.1 | 44 / 44 |
Each method has its own scale, so only the three CPCB-based columns can be read against one another. The US figure is extended above 500 as EPA's Table 6 directs: 504 days exceed 500, the highest at 1,532, and they enter the US average. The British index stops at band 10. Because the days are matched across all the columns, the CPCB columns differ a little from the city pages.
The table counts the days each method puts Delhi in its own two worst categories, on the same matched days. Each method names and draws those categories differently, so the cells are read within a column and across the years.
| Year | Days | Bulletin: Very Poor / Severe | Documented: Very Poor / Severe | US: Very Unhealthy / Hazardous | UK, highest site, this office's choice: High / Very High | CPCB, US area: Very Poor / Severe |
|---|---|---|---|---|---|---|
| 2015 | 194 | 48 / 7 | 51 / 15 | 34 / 101 | 3 / 186 | 43 / 99 |
| 2016 | 299 | 87 / 15 | 90 / 29 | 86 / 134 | 7 / 288 | 108 / 125 |
| 2017 | 323 | 78 / 5 | 79 / 12 | 77 / 124 | 29 / 287 | 90 / 117 |
| 2018 | 334 | 72 / 20 | 83 / 34 | 84 / 154 | 3 / 331 | 104 / 143 |
| 2019 | 322 | 56 / 24 | 61 / 35 | 97 / 104 | 2 / 318 | 112 / 96 |
| 2020 | 366 | 49 / 15 | 58 / 26 | 78 / 73 | 30 / 328 | 91 / 70 |
| 2021 | 334 | 50 / 17 | 63 / 25 | 62 / 94 | 3 / 328 | 85 / 85 |
| 2022 | 365 | 66 / 6 | 80 / 13 | 96 / 137 | 13 / 345 | 104 / 137 |
| 2023 | 363 | 65 / 15 | 64 / 29 | 96 / 105 | 12 / 349 | 117 / 99 |
| 2024 | 366 | 70 / 17 | 74 / 25 | 119 / 119 | 4 / 361 | 132 / 116 |
| 2025 | 364 | 70 / 8 | 71 / 22 | 95 / 105 | 6 / 357 | 106 / 93 |
| 2026 | 287 | 17 / 2 | 18 / 3 | 92 / 38 | 4 / 283 | 87 / 37 |
Each column of the two tables is defined below: its day, how it averages within a station, how it combines stations, and what to keep in mind when reading it. Every method is computed from the same readings, with the same check on each reading, which counts a reading above 0 and below 1,000 µg/m³, or 50,000 for carbon monoxide.
| Column | Day | Within a station | Across stations | Caveat |
|---|---|---|---|---|
| CPCB's published bulletin | 24 hours to 4 PM | CPCB's own | "average value" | CPCB's published figure, joined by date. |
| CPCB formula as documented | 24 hours to 4 PM | 24-hour average; CO and ozone the highest 8-hour average inside the day | Mean of station AQIs | The figure the daily record prints. |
| US EPA in toto | Calendar day | 24-hour PM; highest 8-hour ozone and CO; highest hour of NO2 and SO2 | Highest concentration among monitors | Above 500 extended as Table 6 directs. Gases are converted from µg/m³ to ppb or ppm at 25 °C and 1 atmosphere. Where the 1-hour SO2 value reaches 305 ppb, SO2 uses its 24-hour average, as Table 6 note 3 directs. Ozone's 1-hour index is taken where it is higher, which Table 6 note 1 allows where it is more precautionary. EPA's 75 per cent completeness rule and its 8-hour block rule were applied from EPA's practice without opening those texts in this work. |
| UK DAQI in toto | Calendar day | Daily mean PM; highest 8-hour ozone; highest hour of NO2; SO2 from the highest hour | Highest site, because no British rule exists | SO2 should use 15-minute means, which are not held, so it can only read low. The mean of the site bands is also computed: 8.9 for 2025. |
| CPCB formula, US area rule | 24 hours to 4 PM | As CPCB documents | Highest station value per pollutant, converted on CPCB's scale | A pairing made for this comparison, not any authority's method. |
| CPCB formula, UK area rule | Cannot be formed | The British documents give no rule for combining sites. |
The US, UK and "CPCB formula, US area rule" columns each take one monitor's reading for the whole city, so each describes the worst monitored neighbourhood on that day. CPCB's real-time readings are "fed directly from the analysers without scrutiny" (CPCB, "Limitations", item 1), so a single faulty analyser can set such a column, and on days with few stations it can lift the city figures as well.
The readings for 2015 to 2017 and for the whole of 2022 come from CPCB's own readings in the Kaggle compilation, because CREA's compilation holds nothing for 2015 and 2016, only PM for 2017, and only PM for January to September 2022. In November 2018 the two compilations agree to the last digit on every matched hourly reading of all six pollutants, 112,761 readings at the 29 stations whose names are identical in both files. In 2022 they agree exactly on every PM hour of March, and in November on 99.7 per cent of readings exactly and 99.8 per cent or more within one unit. No compilation overlaps 2015 to 2017, so the agreement there is assumed from the two later years. That reading check cannot catch carbon monoxide at Wazirpur and Sonia Vihar, which both compilations store at about a thousandth of its size; Annexure A says what that changes.
The investigation states what the record shows and where it stops. Each row names a question the data on disk cannot settle, what the record does show, and what would settle it.
| Question | What the record shows | What would settle it |
|---|---|---|
| Whether CPCB intends the hourly order | CPCB's published figures sit closer to it in every year tested. No CPCB document describes it. | A statement from CPCB, or CPCB's own computation code. |
| How CPCB forms Delhi's city figure | The bulletin says an "average value" is used. The bulletin and the reconstruction's average of station AQIs agree within a few points. | CPCB's station list and arithmetic for each day's bulletin. |
| What CPCB published from 2015 to 2017 | CPCB's station-wise daily files on disk start in 2017, at three testable stations, so 2015 and 2016 cannot be tested at a station. | CPCB's station-wise daily files for 2015 and 2016 from the CCR portal. |
| The ozone channel and the gas window | On the 522 ozone-led station-days, 1.8 per cent of the test, the reconstruction misses CPCB's figure by 7 points at the median and sits 17 points below it on average; the documented formula sits 14 points below. The exact hour of the 8-hour window is also open. | CPCB's hourly station download, hour by hour. |
| The top of the Severe band in CPCB's published figures | CPCB's calculator reaches 500 at 380 µg/m³ of PM2.5 and 510 of PM10 and carries on past it; this office holds both computed figures at 500 there, because CPCB's scale runs from 0 to 500. On the station-days CPCB published as Severe, CPCB's figure sat on average 10.3 points below the hour-by-hour calculation, so how CPCB handles the top of the band is not known. | CPCB's hourly station download with its hourly sub-indices, or CPCB's own computation code. |
| The band floors and CPCB's rounding | CPCB's printed formula counts bands from 100, 200 and so on, this office's from 101, 201; the two can differ by one point. | CPCB's own rounding rule. |
| Which stations CPCB had at 4 PM | The bulletin names a count of stations, not the stations. Late data change the count. | CPCB's station list for each bulletin. |
On 20 October 2026 this office searched for any document that describes averaging hourly sub-indices, or that revises the AQI calculation after 2015. The search covered PIB's current and archive sites, the sites of both Houses of Parliament for replies on AQI method, CPCB's sites, the CCR portal, the Environment Ministry's and CAQM's sites, and an open web search. Nothing was found that describes the hourly order or a change of method. One CPCB page, clip.cpcb.gov.in's answer to "How is AQI calculated?", could not be opened, so its content is not known.
When Delhi's air is at its worst, the hour-by-hour calculation that CPCB's published AQI tracks gives a lower figure than CPCB's own written formula gives for the same readings: on 926 of 928 Very Poor or Severe days in the record from 1 May 2015. On 630 of the 640 days since 2018 that CPCB's bulletin printed Delhi as Very Poor or Severe, CPCB's own formula gave the higher figure, so on those days the air looks less bad than CPCB's own formula rates it. On cleaner days, mostly Moderate ones, and at single stations where PM10 sets a figure below 350, the documented formula can give the lower figure.
None of these questions changes the station test. CPCB's published station figures sit 4.1 to 7.9 points from the hourly order and 15.7 to 25.0 from the documented formula.
This annexure gives the data, the definitions, the scripts and the checks behind every figure in the investigation.
| Data | Publisher | Years | Used for |
|---|---|---|---|
| CPCB's hourly station readings, Delhi | Compiled from CPCB's CCR portal by CREA | 2018 to 20 October 2026, except 2022 in the city and method figures | The station test from 2018, and every city and method figure outside 2022 |
| CPCB's hourly station readings, Delhi | CPCB's readings in the Kaggle compilation, put into CREA's layout by this office | 2015 to 2017, and the whole of 2022 | Every city and method figure in those years, and the station test for 2017 and 2022 |
| CPCB's station-wise daily AQI | CPCB's CCR portal, 13 DPCC stations | 2018 to 2024 | The station test |
| CPCB's 4 PM AQI bulletin, Delhi's row | CPCB's bulletin page | 1 May 2015 to 20 October 2026 | CPCB's city figure |
| CPCB's hourly station readings, all of India | Compiled from CPCB's CCR portal by CREA | 21 September 2026 to 20 October 2026 | The other cities |
| CPCB's 4 PM AQI bulletin, every city's row | CPCB's bulletin page | 21 September 2026 to 20 October 2026 | The other cities |
| CPCB's hourly station readings, all of India | Compiled from CPCB's CCR portal by CREA | 1 December 2025 to 31 December 2025 | The other cities, winter |
| CPCB's 4 PM AQI bulletin, every city's row | CPCB's bulletin page | 1 December 2025 to 31 December 2025 | The other cities, winter |
| CPCB's breakpoints | How is AQI calculated?; AQI Calculator | 2014 and 2015 | Every CPCB-based figure |
The documented formula takes, for each station, the 24-hour average of PM2.5, PM10, NO2 and SO2, and the highest 8-hour average of CO and ozone among the 8-hour blocks lying wholly inside the 24 hours, converts each through CPCB's breakpoints, and takes the highest. The reconstruction takes, for each of the four, the average of each hour's converted figure, and for CO and ozone the converted 8-hour average ending at 4 PM, and takes the highest. A sub-index needs 16 valid hours, and a station's AQI needs three pollutants including PM2.5 or PM10, on both.
On every one of the 8,708 station-days of the station test that the reconstruction put in Very Poor or Severe, PM2.5 or PM10 set the documented figure, so the 8-hour block of CO and ozone plays no part on those days. Above 380 µg/m³ of PM2.5 and 510 of PM10, CPCB's calculator carries on past 500; this office holds both computed figures at 500 there, as CPCB's scale of 0 to 500 does. This can only lower the documented figure, and in the station test it held the documented figure at 500 on 1,403 station-days. This investigation uses the 8-hour ozone value throughout; CUPS/82/2014-15, Table 3.11, marks the ozone cells above 208 µg/m³ "*One hourly monitoring (for mathematical calculation only)".
Higher means higher before rounding. After rounding to whole numbers, as CPCB prints its figures, the documented figure is higher on 923 of the 928 days and equal on 3, and from 2018 higher on 660 and equal on 2.
Every figure is on the 24 hours ending 4 PM, the window of CPCB's bulletin. Delhi's city figure is the average of the station AQIs on each basis; each basis keeps its own station set, which was the same on 4,031 of 4,127 days and one station apart on the rest. A city figure is placed in a category after rounding half up to a whole number. The station test covers 28,826 station-days at 13 stations in the 4 PM window, and the same station-days give the direction counts. CPCB's bulletin station count could not be read on 212 of the days, mostly from 2015 to 2019; its Delhi figure was read on every day, and was checked against the bulletin's own page on 13 and 29 May 2015. Selected instead on the category CPCB's bulletin printed, 923 days were Very Poor or Severe; the documented formula was higher than the reconstruction on 920 of them and higher than the bulletin on 859.
The cover's count is the number of Delhi's Very Poor or Severe days on which CPCB's documented formula gives the higher figure. The table repeats it with the days chosen in other ways.
| Days chosen by | Documented formula higher |
|---|---|
| Very Poor or Severe on the hour-by-hour figure (the cover) | 926 of 928 |
| The same, from 2018 | 662 of 662 |
| Very Poor or Severe on the documented figure | 1,115 of 1,117 |
| Very Poor or Severe on any of the three | 1,128 of 1,131 |
| On CPCB's bulletin category, documented above the reconstruction | 920 of 923 |
| On CPCB's bulletin category, documented above the bulletin | 859 of 923 |
| Days on which both computed figures use the same stations | 911 of 913 |
| Rounded to whole numbers: higher, and equal | 923 and 3 of 928 |
Banded by CPCB's own published category, CPCB's figure sat 7.3 points below the hour-by-hour calculation on Very Poor station-days and 10.3 on Severe ones. Banded instead by the hour-by-hour figure's own category, the gaps are 7.0 and 12.1, so the overshoot does not come from which series chooses the days.
At two stations, Wazirpur and Sonia Vihar, both hourly compilations store carbon monoxide at about a thousandth of its size in every year from 2018, so carbon monoxide can never set either station's figure here. Both computed figures read the same values, the effect falls on days below 200, and it cannot reach a Very Poor or Severe figure. The repair, a check on each station-year's median, waits for the next run of the computation.
| Check | Result | When run |
|---|---|---|
| The city computation reproduces the daily record | 180.1 and 177.6 for 20 October 2026; 161.9 and 157.5 for 13 October 2026, both figures exactly | 20 October 2026 |
| The category counts here equal the city summary's | Every year and every basis; the build stops on any difference | Every build |
| The yearly averages here equal the city summary's | Every year, within 0.05 points | Every build |
| The Bawana example adds up | Every hour's conversion, both averages and the day's record | Every build |
| Every CPCB quotation is in its document | Each phrase is found in the saved copy, or the build stops | Every build |
| The two method tables count the same days | Every year; the build stops on any difference | Every build |
| The method comparison reproduces the city figure | Its CPCB documented column equals the city computation on every day of 2024, and of 2015, 2016, 2017 and 2022 | 20 October 2026 |
| The method comparison passes the authorities' examples | Its self-test passes the worked examples it takes from the US and British documents and CPCB's | 20 October 2026 |
| The two hourly compilations agree | Kaggle equals CREA to the last digit on 112,761 hourly readings at 29 stations in November 2018, on every PM reading of March 2022, and on 99.7 per cent or more of November 2022's | 20 October 2026 |
| Saturated analysers on the worst days | 30 station-days with four or more hours at or above 985 µg/m³ touch 7 of the 928 Very Poor and Severe days, each Very Poor or Severe in CPCB's bulletin | 20 October 2026 |
The station test and the city computation call the same functions that compute Delhi's daily air record, with nothing retyped. The station test reads CPCB's published station figures from the CCR portal's files and computes both figures for every published station-day. The city computation does the same for every day and every Delhi station, and a summariser joins Delhi's row of CPCB's bulletin by date. The method comparison computes the US and British methods whole, and CPCB's formula with the US area rule, from the same readings, and a second summariser builds the yearly tables on matched days.
Every city of CPCB's 4 PM bulletin from 21 September 2026 to 20 October 2026, with its average gap from CPCB's figure on each order and one example day, 20 October 2026 where the city was in that day's bulletin. Stations are CPCB's count and the computed count; "1 / 1" is a city with one station. "Hourly" is the reconstruction. Delhi's daily record for 20 October 2026, computed on 56 stations, prints 180.1 and 177.6 (page 25); this table's comparison rounds and matches stations its own way, on a median of 45 computed stations against CPCB's 44.
| City | State | Days | Stations | Documented gap | Hourly gap | Closer | Example | CPCB | Documented | Hourly |
|---|---|---|---|---|---|---|---|---|---|---|
| Agartala | Tripura | 30 | 1 / 1 | 1.9 | 0.5 | hourly order | 20 October | 154 | 154.0 | 154.0 |
| Agra | Uttar Pradesh | 30 | 6 / 6 | 4.5 | 3.2 | hourly order | 20 October | 121 | 140.5 | 120.2 |
| Ahmedabad | Gujarat | 30 | 8 / 8 | 2.9 | 1.1 | hourly order | 20 October | 153 | 148.8 | 153.9 |
| Ahmednagar | Maharashtra | 29 | 1 / 1 | 3.7 | 0.8 | hourly order | 20 October | 118 | 120.0 | 118.0 |
| Aizawl | Mizoram | 24 | 1 / 1 | 0.7 | 0.7 | level | 20 October | 40 | 40.0 | 40.0 |
| Ajmer | Rajasthan | 29 | 1 / 1 | 5.2 | 0.8 | hourly order | 20 October | 107 | 99.0 | 108.0 |
| Akola | Maharashtra | 30 | 1 / 1 | 1.4 | 0.5 | hourly order | 20 October | 93 | 95.0 | 93.0 |
| Alwar | Rajasthan | 30 | 2 / 2 | 8.2 | 3.9 | hourly order | 20 October | 82 | 83.5 | 82.0 |
| Amaravati | Andhra Pradesh | 28 | 1 / 1 | 1.8 | 0.5 | hourly order | 20 October | 53 | 54.0 | 54.0 |
| Ambala | Haryana | 30 | 1 / 1 | 2.1 | 1.3 | hourly order | 20 October | 112 | 113.0 | 113.0 |
| Ambernath | Maharashtra | 27 | 1 / 1 | 4.0 | 1.3 | hourly order | 19 October | 102 | 107.0 | 103.0 |
| Amravati | Maharashtra | 30 | 2 / 2 | 1.6 | 0.9 | hourly order | 20 October | 95 | 97.0 | 95.5 |
| Amritsar | Punjab | 30 | 1 / 1 | 0.4 | 0.2 | hourly order | 20 October | 95 | 95.0 | 95.0 |
| Anantapur | Andhra Pradesh | 28 | 1 / 1 | 1.2 | 0.8 | hourly order | 20 October | 61 | 62.0 | 62.0 |
| Angul | Odisha | 30 | 1 / 1 | 3.5 | 2.4 | hourly order | 20 October | 140 | 141.0 | 141.0 |
| Ankleshwar | Gujarat | 24 | 1 / 1 | 2.5 | 0.7 | hourly order | 20 October | 165 | 157.0 | 166.0 |
| Anpara | Uttar Pradesh | 3 | 1 / 1 | 1.3 | 0.7 | hourly order | 14 October | 73 | 70.0 | 74.0 |
| Araria | Bihar | 29 | 1 / 1 | 4.6 | 1.4 | hourly order | 20 October | 145 | 136.0 | 144.0 |
| Arrah | Bihar | 22 | 1 / 1 | 52.5 | 28.2 | hourly order | 20 October | 53 | 162.0 | 92.0 |
| Asansol | West Bengal | 30 | 4 / 4 | 2.2 | 1.8 | hourly order | 20 October | 75 | 73.7 | 75.3 |
| Aurangabad (Bihar) | Bihar | 12 | 1 / 1 | 2.8 | 1.1 | hourly order | 20 October | 72 | 73.0 | 73.0 |
| Aurangabad (Maharashtra) | Maharashtra | 29 | 3 / 3 | 4.1 | 3.5 | hourly order | 20 October | 116 | 111.7 | 116.7 |
| Baddi | Himachal Pradesh | 30 | 1 / 1 | 3.3 | 1.1 | hourly order | 20 October | 130 | 133.0 | 131.0 |
| Badlapur | Maharashtra | 30 | 1 / 1 | 9.5 | 9.0 | hourly order | 20 October | 65 | 65.0 | 65.0 |
| Bagalkot | Karnataka | 5 | 1 / 1 | 1.0 | 1.0 | level | 20 October | 51 | 52.0 | 52.0 |
| Baghpat | Uttar Pradesh | 30 | 1 / 1 | 4.9 | 1.1 | hourly order | 20 October | 143 | 141.0 | 143.0 |
| Bahadurgarh | Haryana | 30 | 1 / 1 | 5.5 | 0.5 | hourly order | 20 October | 196 | 202.0 | 197.0 |
| Balasore | Odisha | 29 | 1 / 1 | 2.4 | 2.3 | hourly order | 20 October | 105 | 102.0 | 102.0 |
| Ballabgarh | Haryana | 29 | 1 / 1 | 6.5 | 0.9 | hourly order | 20 October | 310 | 348.0 | 312.0 |
| Banswara | Rajasthan | 30 | 1 / 1 | 2.8 | 0.9 | hourly order | 20 October | 89 | 95.0 | 89.0 |
| Baran | Rajasthan | 28 | 1 / 1 | 3.9 | 2.9 | hourly order | 20 October | 105 | 104.0 | 105.0 |
| Baraut | Uttar Pradesh | 23 | 1 / 1 | 4.5 | 2.1 | hourly order | 20 October | 227 | 228.0 | 227.0 |
| City | State | Days | Stations | Documented gap | Hourly gap | Closer | Example | CPCB | Documented | Hourly |
|---|---|---|---|---|---|---|---|---|---|---|
| Barbil | Odisha | 29 | 1 / 1 | 3.3 | 2.4 | hourly order | 20 October | 74 | 76.0 | 76.0 |
| Bareilly | Uttar Pradesh | 24 | 2 / 2 | 9.8 | 10.0 | documented | 20 October | 112 | 109.5 | 112.5 |
| Baripada | Odisha | 29 | 1 / 1 | 1.0 | 0.7 | hourly order | 20 October | 100 | 102.0 | 101.0 |
| Barmer | Rajasthan | 30 | 1 / 1 | 3.3 | 0.9 | hourly order | 20 October | 101 | 116.0 | 116.0 |
| Barrackpore | West Bengal | 28 | 1 / 1 | 1.5 | 0.8 | hourly order | 20 October | 97 | 99.0 | 98.0 |
| Bathinda | Punjab | 24 | 1 / 1 | 2.6 | 0.5 | hourly order | 20 October | 72 | 72.0 | 72.0 |
| Beed | Maharashtra | 27 | 1 / 1 | 1.8 | 0.3 | hourly order | 20 October | 75 | 76.0 | 75.0 |
| Begusarai | Bihar | 27 | 1 / 1 | 4.8 | 4.4 | hourly order | 20 October | 51 | 52.0 | 52.0 |
| Belapur | Maharashtra | 29 | 1 / 1 | 1.2 | 0.6 | hourly order | 20 October | 123 | 124.0 | 124.0 |
| Belgaum | Karnataka | 5 | 1 / 1 | 2.4 | 0.6 | hourly order | 20 October | 61 | 62.0 | 61.0 |
| Bengaluru | Karnataka | 30 | 7 / 7 | 2.9 | 3.5 | documented | 20 October | 64 | 66.2 | 66.3 |
| Bettiah | Bihar | 27 | 1 / 1 | 3.9 | 4.0 | documented | 20 October | 27 | 27.0 | 27.0 |
| Bhagalpur | Bihar | 29 | 2 / 2 | 8.6 | 7.9 | hourly order | 20 October | 75 | 76.0 | 75.0 |
| Bharatpur | Rajasthan | 29 | 1 / 1 | 3.1 | 1.5 | hourly order | 20 October | 126 | 128.0 | 127.0 |
| Bhavnagar | Gujarat | 30 | 1 / 1 | 6.0 | 3.1 | hourly order | 20 October | 203 | 218.0 | 198.0 |
| Bhilai | Chhattisgarh | 30 | 3 / 3 | 1.1 | 1.0 | hourly order | 20 October | 56 | 56.3 | 55.7 |
| Bhilwara | Rajasthan | 30 | 1 / 1 | 2.6 | 0.9 | hourly order | 20 October | 108 | 111.0 | 109.0 |
| Bhiwadi | Rajasthan | 30 | 2 / 2 | 3.8 | 1.6 | hourly order | 20 October | 163 | 169.0 | 163.5 |
| Bhiwandi | Maharashtra | 25 | 1 / 1 | 5.6 | 1.1 | hourly order | 20 October | 112 | 116.0 | 112.0 |
| Bhiwani | Haryana | 27 | 1 / 1 | 3.7 | 1.5 | hourly order | 20 October | 108 | 110.0 | 109.0 |
| Bhopal | Madhya Pradesh | 30 | 3 / 3 | 2.0 | 0.5 | hourly order | 20 October | 116 | 116.0 | 117.0 |
| Bhubaneswar | Odisha | 30 | 2 / 2 | 4.2 | 4.1 | hourly order | 20 October | 99 | 98.0 | 98.0 |
| Bihar sharif | Bihar | 21 | 1 / 1 | 3.9 | 2.2 | hourly order | 20 October | 59 | 57.0 | 57.0 |
| Bikaner | Rajasthan | 30 | 1 / 1 | 5.1 | 1.5 | hourly order | 20 October | 197 | 184.0 | 201.0 |
| Bilaspur | Chhattisgarh | 26 | 1 / 1 | 2.5 | 1.2 | hourly order | 20 October | 81 | 84.0 | 82.0 |
| Bileipada | Odisha | 24 | 1 / 1 | 3.9 | 1.0 | hourly order | 18 October | 103 | 107.0 | 103.0 |
| Boisar | Maharashtra | 28 | 1 / 1 | 1.2 | 0.4 | hourly order | 20 October | 75 | 75.0 | 75.0 |
| Brajrajnagar | Odisha | 28 | 1 / 1 | 4.9 | 4.0 | hourly order | 19 October | 71 | 71.0 | 71.0 |
| Bulandshahr | Uttar Pradesh | 29 | 1 / 1 | 2.8 | 0.9 | hourly order | 20 October | 178 | 175.0 | 179.0 |
| Bundi | Rajasthan | 30 | 1 / 1 | 3.3 | 1.0 | hourly order | 20 October | 122 | 123.0 | 123.0 |
| Buxar | Bihar | 14 | 1 / 1 | 4.5 | 4.6 | documented | 20 October | 32 | 28.0 | 28.0 |
| Byasanagar | Odisha | 28 | 1 / 1 | 2.6 | 1.6 | hourly order | 20 October | 118 | 119.0 | 119.0 |
| Byrnihat (Assam) | Assam | 30 | 1 / 1 | 1.6 | 0.6 | hourly order | 20 October | 91 | 91.0 | 92.0 |
| Byrnihat (Meghalaya) | Meghalaya | 12 | 1 / 1 | 3.6 | 0.8 | hourly order | 15 October | 77 | 77.0 | 77.0 |
| Chamarajanagar | Karnataka | 28 | 1 / 1 | 0.1 | 0.2 | documented | 20 October | 46 | 46.0 | 46.0 |
| Chandigarh | Chandigarh | 30 | 3 / 3 | 1.7 | 1.7 | hourly order | 20 October | 57 | 57.5 | 57.5 |
| Chandrapur | Maharashtra | 30 | 2 / 2 | 2.1 | 0.3 | hourly order | 20 October | 110 | 111.0 | 110.5 |
| Charkhi dadri | Haryana | 29 | 1 / 1 | 3.9 | 0.6 | hourly order | 20 October | 206 | 205.0 | 207.0 |
| Chennai | Tamil Nadu | 30 | 6 / 6 | 5.2 | 2.3 | hourly order | 20 October | 56 | 74.8 | 51.2 |
| Chhal | Chhattisgarh | 21 | 1 / 1 | 2.9 | 1.6 | hourly order | 20 October | 63 | 64.0 | 64.0 |
| City | State | Days | Stations | Documented gap | Hourly gap | Closer | Example | CPCB | Documented | Hourly |
|---|---|---|---|---|---|---|---|---|---|---|
| Chhapra | Bihar | 23 | 1 / 1 | 1.1 | 1.1 | hourly order | 20 October | 102 | 103.0 | 103.0 |
| Chikkaballapur | Karnataka | 24 | 1 / 1 | 1.1 | 0.7 | hourly order | 20 October | 30 | 30.0 | 30.0 |
| Chikkamagaluru | Karnataka | 11 | 1 / 1 | 1.9 | 2.5 | documented | 12 October | 37 | 37.0 | 30.0 |
| Chittoor | Andhra Pradesh | 25 | 1 / 1 | 3.1 | 0.3 | hourly order | 20 October | 40 | 40.0 | 40.0 |
| Chittorgarh | Rajasthan | 28 | 1 / 1 | 2.9 | 1.5 | hourly order | 20 October | 142 | 142.0 | 145.0 |
| Churu | Rajasthan | 30 | 1 / 1 | 3.2 | 0.9 | hourly order | 20 October | 121 | 123.0 | 121.0 |
| Coimbatore | Tamil Nadu | 13 | 1 / 1 | 1.1 | 0.8 | hourly order | 18 October | 49 | 49.0 | 49.0 |
| Cuddalore | Tamil Nadu | 3 | 1 / 1 | 0.0 | 0.0 | level | 19 October | 19 | 19.0 | 19.0 |
| Cuttack | Odisha | 30 | 1 / 1 | 4.2 | 2.5 | hourly order | 20 October | 78 | 79.0 | 79.0 |
| Damoh | Madhya Pradesh | 11 | 1 / 1 | 3.4 | 0.6 | hourly order | 20 October | 98 | 102.0 | 99.0 |
| Darbhanga | Bihar | 6 | 1 / 1 | 0.2 | 0.2 | level | 20 October | 74 | 74.0 | 74.0 |
| Dausa | Rajasthan | 29 | 1 / 1 | 3.8 | 1.1 | hourly order | 20 October | 172 | 165.0 | 168.0 |
| Davanagere | Karnataka | 7 | 1 / 1 | 1.3 | 1.0 | hourly order | 17 October | 21 | 24.0 | 19.0 |
| Dehradun | Uttarakhand | 30 | 1 / 1 | 2.3 | 1.5 | hourly order | 20 October | 50 | 52.0 | 51.0 |
| Delhi | NCT of Delhi | 30 | 44 / 45 | 2.3 | 0.6 | hourly order | 20 October | 179 | 180.2 | 177.7 |
| Dewas | Madhya Pradesh | 30 | 1 / 1 | 1.5 | 0.4 | hourly order | 20 October | 89 | 90.0 | 90.0 |
| Dhanbad | Jharkhand | 5 | 1 / 1 | 1.0 | 0.4 | hourly order | 18 October | 95 | 96.0 | 95.0 |
| Dharuhera | Haryana | 29 | 1 / 1 | 2.2 | 0.6 | hourly order | 20 October | 128 | 127.0 | 128.0 |
| Dharwad | Karnataka | 26 | 1 / 1 | 1.1 | 0.8 | hourly order | 20 October | 81 | 81.0 | 81.0 |
| Dholpur | Rajasthan | 27 | 1 / 1 | 2.0 | 1.2 | hourly order | 20 October | 100 | 107.0 | 102.0 |
| Dhule | Maharashtra | 24 | 1 / 1 | 1.7 | 0.4 | hourly order | 20 October | 174 | 170.0 | 175.0 |
| Dombivli | Maharashtra | 29 | 1 / 1 | 10.4 | 9.8 | hourly order | 20 October | 104 | 87.0 | 85.0 |
| Dungarpur | Rajasthan | 28 | 1 / 1 | 1.1 | 0.8 | hourly order | 20 October | 107 | 103.0 | 108.0 |
| Durgapur | West Bengal | 30 | 3 / 3 | 11.5 | 11.9 | documented | 20 October | 73 | 73.0 | 72.5 |
| Eloor | Kerala | 23 | 1 / 1 | 36.0 | 36.0 | level | 20 October | 62 | 63.0 | 63.0 |
| Eluru | Andhra Pradesh | 30 | 1 / 1 | 1.0 | 0.7 | hourly order | 20 October | 61 | 62.0 | 62.0 |
| Faridabad | Haryana | 29 | 2 / 3 | 2.6 | 1.7 | hourly order | 20 October | 120 | 121.7 | 121.3 |
| Fatehabad | Haryana | 27 | 1 / 1 | 3.1 | 1.5 | hourly order | 20 October | 123 | 124.0 | 124.0 |
| Fatehpur sikri | Uttar Pradesh | 25 | 1 / 1 | 5.2 | 2.0 | hourly order | 20 October | 141 | 197.0 | 154.0 |
| Firozabad | Uttar Pradesh | 26 | 1 / 2 | 4.8 | 4.1 | hourly order | 20 October | 90 | 93.0 | 90.0 |
| Gadag | Karnataka | 13 | 1 / 1 | 12.5 | 12.5 | level | 14 October | 26 | 21.0 | 21.0 |
| Gajraula | Uttar Pradesh | 30 | 1 / 1 | 16.9 | 13.8 | hourly order | 20 October | 211 | 211.0 | 211.0 |
| Gandhinagar | Gujarat | 30 | 3 / 3 | 3.3 | 2.2 | hourly order | 20 October | 119 | 120.7 | 119.7 |
| Gangtok | Sikkim | 26 | 1 / 1 | 0.0 | 0.0 | documented | 20 October | 35 | 35.0 | 35.0 |
| Gaya | Bihar | 30 | 3 / 3 | 5.1 | 3.4 | hourly order | 20 October | 93 | 94.5 | 94.0 |
| Ghaziabad | Uttar Pradesh | 30 | 7 / 7 | 7.4 | 4.7 | hourly order | 20 October | 202 | 214.9 | 202.6 |
| Gorakhpur | Uttar Pradesh | 27 | 1 / 1 | 2.0 | 0.7 | hourly order | 20 October | 108 | 111.0 | 109.0 |
| Greater noida | Uttar Pradesh | 30 | 2 / 2 | 7.1 | 3.5 | hourly order | 20 October | 229 | 229.0 | 231.5 |
| Gummidipoondi | Tamil Nadu | 27 | 1 / 1 | 5.7 | 0.4 | hourly order | 20 October | 99 | 103.0 | 99.0 |
| Guntur | Andhra Pradesh | 30 | 1 / 1 | 1.0 | 0.7 | hourly order | 20 October | 60 | 60.0 | 60.0 |
| City | State | Days | Stations | Documented gap | Hourly gap | Closer | Example | CPCB | Documented | Hourly |
|---|---|---|---|---|---|---|---|---|---|---|
| Gurugram | Haryana | 30 | 4 / 4 | 10.8 | 2.2 | hourly order | 20 October | 184 | 198.0 | 184.8 |
| Guwahati | Assam | 30 | 4 / 4 | 19.0 | 19.4 | documented | 20 October | 76 | 53.2 | 52.0 |
| Gwalior | Madhya Pradesh | 30 | 3 / 3 | 2.2 | 1.3 | hourly order | 20 October | 145 | 142.0 | 146.0 |
| Hajipur | Bihar | 30 | 1 / 1 | 3.9 | 0.8 | hourly order | 20 October | 89 | 86.0 | 89.0 |
| Haldia | West Bengal | 30 | 1 / 1 | 1.4 | 0.5 | hourly order | 20 October | 87 | 87.0 | 87.0 |
| Hanumangarh | Rajasthan | 30 | 1 / 1 | 3.3 | 1.5 | hourly order | 20 October | 217 | 217.0 | 218.0 |
| Hapur | Uttar Pradesh | 25 | 1 / 1 | 4.0 | 1.5 | hourly order | 20 October | 230 | 238.0 | 230.0 |
| Haveri | Karnataka | 14 | 1 / 1 | 4.7 | 4.7 | level | 20 October | 49 | 49.0 | 50.0 |
| Hingoli | Maharashtra | 30 | 1 / 1 | 2.2 | 0.5 | hourly order | 20 October | 221 | 226.0 | 221.0 |
| Hisar | Haryana | 29 | 1 / 1 | 5.4 | 4.2 | hourly order | 20 October | 197 | 189.0 | 202.0 |
| Howrah | West Bengal | 30 | 5 / 5 | 3.3 | 2.0 | hourly order | 20 October | 114 | 111.4 | 115.0 |
| Hubballi | Karnataka | 26 | 1 / 1 | 0.9 | 0.8 | hourly order | 20 October | 59 | 59.0 | 60.0 |
| Hyderabad | Telangana | 30 | 13 / 13 | 0.7 | 0.6 | hourly order | 20 October | 71 | 72.3 | 71.6 |
| Indore | Madhya Pradesh | 30 | 4 / 4 | 2.9 | 2.8 | hourly order | 20 October | 78 | 79.6 | 78.4 |
| Jabalpur | Madhya Pradesh | 30 | 3 / 3 | 7.4 | 7.1 | hourly order | 20 October | 92 | 94.2 | 92.8 |
| Jaipur | Rajasthan | 30 | 6 / 6 | 2.2 | 1.3 | hourly order | 20 October | 120 | 119.7 | 120.0 |
| Jaisalmer | Rajasthan | 30 | 1 / 1 | 3.2 | 0.7 | hourly order | 20 October | 114 | 117.0 | 115.0 |
| Jalandhar | Punjab | 29 | 1 / 1 | 3.9 | 1.1 | hourly order | 20 October | 192 | 194.0 | 194.0 |
| Jalgaon | Maharashtra | 29 | 1 / 1 | 3.7 | 2.1 | hourly order | 20 October | 101 | 104.0 | 101.0 |
| Jalna | Maharashtra | 25 | 1 / 1 | 3.8 | 0.8 | hourly order | 20 October | 159 | 154.0 | 159.0 |
| Jalore | Rajasthan | 30 | 1 / 1 | 3.4 | 1.3 | hourly order | 20 October | 115 | 117.0 | 116.0 |
| Jhalawar | Rajasthan | 30 | 1 / 1 | 4.0 | 2.7 | hourly order | 20 October | 113 | 110.0 | 114.0 |
| Jhansi | Uttar Pradesh | 29 | 1 / 1 | 3.1 | 0.6 | hourly order | 20 October | 96 | 99.0 | 96.0 |
| Jhunjhunu | Rajasthan | 30 | 1 / 1 | 3.1 | 0.9 | hourly order | 20 October | 117 | 121.0 | 118.0 |
| Jind | Haryana | 26 | 1 / 1 | 2.5 | 0.9 | hourly order | 20 October | 122 | 116.0 | 122.0 |
| Jodhpur | Rajasthan | 30 | 5 / 5 | 2.6 | 0.8 | hourly order | 20 October | 118 | 120.0 | 118.2 |
| Jorapokhar | Jharkhand | 20 | 1 / 1 | 5.3 | 3.0 | hourly order | 20 October | 59 | 60.0 | 60.0 |
| Kadapa | Andhra Pradesh | 28 | 1 / 1 | 0.6 | 0.7 | documented | 20 October | 71 | 71.0 | 71.0 |
| Kaithal | Haryana | 28 | 1 / 1 | 2.9 | 1.4 | hourly order | 20 October | 114 | 115.0 | 115.0 |
| Kakinada | Andhra Pradesh | 23 | 1 / 1 | 6.4 | 5.1 | hourly order | 14 October | 75 | 75.0 | 76.0 |
| Kalyan | Maharashtra | 29 | 2 / 2 | 3.4 | 2.4 | hourly order | 20 October | 80 | 79.0 | 80.0 |
| Kannur | Kerala | 18 | 1 / 1 | 0.6 | 0.7 | documented | 20 October | 66 | 67.0 | 67.0 |
| Kanpur | Uttar Pradesh | 30 | 3 / 3 | 2.2 | 0.6 | hourly order | 20 October | 175 | 180.7 | 175.0 |
| Karauli | Rajasthan | 27 | 1 / 1 | 3.9 | 1.5 | hourly order | 20 October | 138 | 138.0 | 137.0 |
| Karnal | Haryana | 30 | 1 / 1 | 10.9 | 0.8 | hourly order | 20 October | 158 | 160.0 | 159.0 |
| Karwar | Karnataka | 12 | 1 / 1 | 0.8 | 0.4 | hourly order | 20 October | 55 | 56.0 | 55.0 |
| Kashipur | Uttarakhand | 5 | 1 / 1 | 1.4 | 0.2 | hourly order | 15 October | 52 | 53.0 | 52.0 |
| Katihar | Bihar | 26 | 1 / 1 | 30.0 | 30.5 | documented | 18 October | 85 | 70.0 | 70.0 |
| Katni | Madhya Pradesh | 25 | 1 / 1 | 2.7 | 0.9 | hourly order | 18 October | 110 | 109.0 | 111.0 |
| Keonjhar | Odisha | 27 | 1 / 1 | 3.4 | 3.3 | hourly order | 20 October | 33 | 25.0 | 25.0 |
| City | State | Days | Stations | Documented gap | Hourly gap | Closer | Example | CPCB | Documented | Hourly |
|---|---|---|---|---|---|---|---|---|---|---|
| Khairthal | Rajasthan | 20 | 1 / 1 | 12.0 | 11.8 | hourly order | 20 October | 193 | 198.0 | 194.0 |
| Khanna | Punjab | 30 | 1 / 1 | 2.4 | 2.3 | hourly order | 20 October | 71 | 72.0 | 72.0 |
| Khora | Uttar Pradesh | 28 | 1 / 1 | 5.6 | 1.7 | hourly order | 20 October | 228 | 228.0 | 228.0 |
| Khurja | Uttar Pradesh | 29 | 1 / 1 | 4.3 | 1.2 | hourly order | 20 October | 173 | 169.0 | 174.0 |
| Kishanganj | Bihar | 30 | 1 / 1 | 1.4 | 1.1 | hourly order | 20 October | 40 | 33.0 | 33.0 |
| Kohima | Nagaland | 4 | 1 / 1 | 47.2 | 47.2 | level | 26 September | 65 | 24.0 | 24.0 |
| Kolar | Karnataka | 5 | 1 / 1 | 13.6 | 13.8 | documented | 20 October | 64 | 36.0 | 36.0 |
| Kolhapur | Maharashtra | 30 | 2 / 2 | 1.7 | 1.2 | hourly order | 20 October | 45 | 45.0 | 45.0 |
| Kolkata | West Bengal | 30 | 7 / 7 | 0.9 | 0.9 | hourly order | 20 October | 95 | 95.7 | 95.3 |
| Koppal | Karnataka | 8 | 1 / 1 | 1.6 | 3.2 | documented | 20 October | 46 | 46.0 | 46.0 |
| Korba | Chhattisgarh | 29 | 2 / 2 | 2.3 | 0.7 | hourly order | 20 October | 44 | 46.0 | 44.0 |
| Kota | Rajasthan | 30 | 3 / 3 | 2.8 | 1.4 | hourly order | 20 October | 144 | 144.0 | 144.0 |
| Kunjemura | Chhattisgarh | 28 | 1 / 1 | 2.9 | 1.8 | hourly order | 20 October | 54 | 55.0 | 55.0 |
| Kurnool | Andhra Pradesh | 30 | 1 / 1 | 0.5 | 0.4 | hourly order | 20 October | 70 | 71.0 | 71.0 |
| Kurukshetra | Haryana | 30 | 1 / 1 | 1.8 | 0.6 | hourly order | 20 October | 131 | 132.0 | 132.0 |
| Latur | Maharashtra | 29 | 1 / 1 | 1.4 | 0.6 | hourly order | 20 October | 88 | 94.0 | 89.0 |
| Leh | Jammu and Kashmir | 12 | 1 / 1 | 83.0 | 28.8 | hourly order | 20 October | 57 | 112.0 | 58.0 |
| Lucknow | Uttar Pradesh | 30 | 6 / 6 | 2.4 | 1.5 | hourly order | 20 October | 133 | 134.0 | 134.2 |
| Ludhiana | Punjab | 30 | 1 / 1 | 1.5 | 0.6 | hourly order | 20 October | 101 | 104.0 | 102.0 |
| Machilipatnam | Andhra Pradesh | 15 | 1 / 1 | 0.6 | 0.3 | hourly order | 5 October | 57 | 57.0 | 57.0 |
| Madikeri | Karnataka | 25 | 1 / 1 | 1.1 | 1.0 | hourly order | 20 October | 21 | 21.0 | 21.0 |
| Mahad | Maharashtra | 29 | 1 / 1 | 1.9 | 0.6 | hourly order | 20 October | 87 | 90.0 | 88.0 |
| Maihar | Madhya Pradesh | 22 | 1 / 1 | 0.8 | 0.7 | hourly order | 20 October | 61 | 62.0 | 62.0 |
| Malegaon | Maharashtra | 26 | 1 / 1 | 24.3 | 22.3 | hourly order | 20 October | 143 | 144.0 | 144.0 |
| Mandi gobindgarh | Punjab | 29 | 1 / 1 | 2.9 | 0.8 | hourly order | 20 October | 177 | 175.0 | 179.0 |
| Mandideep | Madhya Pradesh | 29 | 1 / 1 | 4.6 | 2.1 | hourly order | 20 October | 186 | 179.0 | 187.0 |
| Mandikhera | Haryana | 27 | 1 / 1 | 5.4 | 3.9 | hourly order | 20 October | 132 | 124.0 | 132.0 |
| Manesar | Haryana | 27 | 1 / 1 | 14.3 | 1.9 | hourly order | 20 October | 215 | 263.0 | 216.0 |
| Mangalore | Karnataka | 24 | 1 / 1 | 0.7 | 0.4 | hourly order | 19 October | 37 | 37.0 | 37.0 |
| Manguraha | Bihar | 13 | 1 / 1 | 2.0 | 0.7 | hourly order | 20 October | 92 | 98.0 | 93.0 |
| Mathura | Uttar Pradesh | 26 | 1 / 1 | 2.0 | 0.3 | hourly order | 20 October | 105 | 108.0 | 106.0 |
| Meerut | Uttar Pradesh | 30 | 4 / 4 | 3.0 | 0.8 | hourly order | 20 October | 124 | 120.7 | 124.3 |
| Mehsana | Gujarat | 29 | 1 / 1 | 3.1 | 0.4 | hourly order | 20 October | 103 | 94.0 | 104.0 |
| Milupara | Chhattisgarh | 21 | 1 / 1 | 1.6 | 0.7 | hourly order | 19 October | 58 | 58.0 | 58.0 |
| Mira-bhayandar | Maharashtra | 28 | 1 / 1 | 2.8 | 2.1 | hourly order | 20 October | 104 | 108.0 | 105.0 |
| Modinagar | Uttar Pradesh | 19 | 1 / 1 | 5.0 | 3.7 | hourly order | 11 October | 69 | 69.0 | 69.0 |
| Motihari | Bihar | 24 | 1 / 1 | 4.3 | 2.2 | hourly order | 20 October | 102 | 105.0 | 101.0 |
| Mumbai | Maharashtra | 30 | 21 / 21 | 2.1 | 1.6 | hourly order | 20 October | 102 | 102.7 | 102.6 |
| Munger | Bihar | 19 | 1 / 1 | 25.8 | 24.1 | hourly order | 20 October | 83 | 42.0 | 42.0 |
| Muzaffarnagar | Uttar Pradesh | 30 | 1 / 1 | 4.0 | 0.6 | hourly order | 20 October | 176 | 170.0 | 177.0 |
| City | State | Days | Stations | Documented gap | Hourly gap | Closer | Example | CPCB | Documented | Hourly |
|---|---|---|---|---|---|---|---|---|---|---|
| Muzaffarpur | Bihar | 30 | 3 / 2 | 6.2 | 7.2 | documented | 20 October | 67 | 75.0 | 74.0 |
| Mysuru | Karnataka | 18 | 1 / 1 | 11.2 | 4.5 | hourly order | 20 October | 40 | 40.0 | 40.0 |
| Nagaon | Assam | 29 | 1 / 1 | 0.9 | 0.8 | hourly order | 20 October | 60 | 61.0 | 61.0 |
| Nagaur | Rajasthan | 29 | 1 / 1 | 2.7 | 0.9 | hourly order | 20 October | 135 | 136.0 | 135.0 |
| Nagpur | Maharashtra | 30 | 4 / 4 | 1.3 | 1.0 | hourly order | 20 October | 141 | 136.8 | 141.5 |
| Naharlagun | Arunachal Pradesh | 27 | 1 / 1 | 1.1 | 1.1 | documented | 20 October | 48 | 48.0 | 48.0 |
| Nalbari | Assam | 27 | 1 / 1 | 0.7 | 0.7 | documented | 20 October | 77 | 77.0 | 77.0 |
| Nanded | Maharashtra | 27 | 1 / 1 | 1.6 | 0.7 | hourly order | 20 October | 87 | 87.0 | 87.0 |
| Nandesari | Gujarat | 18 | 1 / 1 | 4.6 | 1.2 | hourly order | 14 October | 168 | 177.0 | 171.0 |
| Narnaul | Haryana | 29 | 1 / 1 | 1.6 | 0.8 | hourly order | 20 October | 129 | 131.0 | 130.0 |
| Nashik | Maharashtra | 30 | 4 / 4 | 1.8 | 1.0 | hourly order | 20 October | 105 | 106.0 | 106.0 |
| Navi mumbai | Maharashtra | 30 | 6 / 5 | 4.5 | 3.4 | hourly order | 20 October | 88 | 89.5 | 89.0 |
| Nayagarh | Odisha | 27 | 1 / 1 | 0.9 | 0.6 | hourly order | 20 October | 101 | 108.0 | 102.0 |
| Nellore | Andhra Pradesh | 20 | 1 / 1 | 1.4 | 0.9 | hourly order | 20 October | 101 | 107.0 | 102.0 |
| Noida | Uttar Pradesh | 30 | 4 / 4 | 6.3 | 1.8 | hourly order | 20 October | 161 | 159.8 | 159.2 |
| Pali | Rajasthan | 30 | 1 / 1 | 3.0 | 0.8 | hourly order | 20 October | 132 | 131.0 | 133.0 |
| Palwal | Haryana | 25 | 1 / 1 | 11.7 | 11.4 | hourly order | 20 October | 58 | 59.0 | 60.0 |
| Pampore | Jammu and Kashmir | 12 | 1 / 1 | 2.6 | 1.9 | hourly order | 20 October | 82 | 83.0 | 79.0 |
| Panchgaon | Haryana | 30 | 1 / 1 | 4.9 | 2.5 | hourly order | 20 October | 89 | 28.0 | 28.0 |
| Panchkula | Haryana | 27 | 1 / 1 | 0.7 | 0.3 | hourly order | 20 October | 52 | 53.0 | 52.0 |
| Panipat | Haryana | 21 | 1 / 1 | 10.9 | 2.2 | hourly order | 20 October | 127 | 116.0 | 129.0 |
| Paradeep | Odisha | 29 | 1 / 1 | 13.9 | 13.5 | hourly order | 20 October | 162 | 163.0 | 163.0 |
| Parbhani | Maharashtra | 30 | 1 / 1 | 1.7 | 0.8 | hourly order | 20 October | 98 | 101.0 | 98.0 |
| Patiala | Punjab | 29 | 1 / 1 | 1.2 | 0.7 | hourly order | 20 October | 85 | 86.0 | 86.0 |
| Patna | Bihar | 30 | 5 / 6 | 3.7 | 3.2 | hourly order | 20 October | 95 | 94.0 | 95.2 |
| Perundurai | Tamil Nadu | 2 | 1 / 1 | 1.5 | 3.0 | documented | 15 October | 91 | 93.0 | 92.0 |
| Pimpri-chinchwad | Maharashtra | 30 | 6 / 6 | 3.8 | 3.8 | hourly order | 20 October | 114 | 114.2 | 114.8 |
| Pithampur | Madhya Pradesh | 29 | 1 / 1 | 3.4 | 2.0 | hourly order | 20 October | 309 | 326.0 | 310.0 |
| Pratapgarh | Rajasthan | 29 | 1 / 1 | 3.4 | 0.7 | hourly order | 20 October | 110 | 103.0 | 111.0 |
| Prayagraj | Uttar Pradesh | 30 | 3 / 3 | 4.7 | 3.6 | hourly order | 20 October | 97 | 98.0 | 97.3 |
| Puducherry | Puducherry | 30 | 1 / 1 | 3.7 | 1.4 | hourly order | 20 October | 37 | 26.0 | 26.0 |
| Pune | Maharashtra | 30 | 6 / 6 | 2.3 | 2.3 | documented | 20 October | 101 | 101.6 | 101.0 |
| Purnia | Bihar | 20 | 1 / 1 | 9.7 | 0.7 | hourly order | 20 October | 100 | 97.0 | 101.0 |
| Raebareli | Uttar Pradesh | 29 | 2 / 2 | 1.1 | 1.0 | hourly order | 20 October | 71 | 71.0 | 71.0 |
| Raichur | Karnataka | 11 | 1 / 1 | 0.7 | 0.5 | hourly order | 20 October | 103 | 104.0 | 104.0 |
| Raipur | Chhattisgarh | 30 | 4 / 4 | 2.0 | 1.6 | hourly order | 20 October | 81 | 83.2 | 81.5 |
| Rairangpur | Odisha | 26 | 1 / 1 | 0.9 | 0.5 | hourly order | 20 October | 85 | 83.0 | 86.0 |
| Rajamahendravaram | Andhra Pradesh | 30 | 1 / 1 | 2.2 | 0.7 | hourly order | 20 October | 64 | 64.0 | 64.0 |
| Rajgir | Bihar | 30 | 1 / 1 | 6.3 | 6.1 | hourly order | 20 October | 48 | 48.0 | 49.0 |
| Rajkot | Gujarat | 29 | 1 / 1 | 3.7 | 0.5 | hourly order | 20 October | 135 | 124.0 | 136.0 |
| City | State | Days | Stations | Documented gap | Hourly gap | Closer | Example | CPCB | Documented | Hourly |
|---|---|---|---|---|---|---|---|---|---|---|
| Rajsamand | Rajasthan | 30 | 1 / 1 | 3.4 | 0.8 | hourly order | 20 October | 105 | 97.0 | 105.0 |
| Ramanagara | Karnataka | 16 | 1 / 1 | 0.9 | 0.7 | hourly order | 20 October | 54 | 55.0 | 55.0 |
| Ratlam | Madhya Pradesh | 30 | 1 / 1 | 0.8 | 0.3 | hourly order | 20 October | 77 | 79.0 | 77.0 |
| Rishikesh | Uttarakhand | 30 | 1 / 1 | 19.1 | 15.5 | hourly order | 20 October | 38 | 21.0 | 10.0 |
| Rohtak | Haryana | 30 | 1 / 1 | 1.7 | 0.6 | hourly order | 20 October | 120 | 119.0 | 121.0 |
| Rourkela | Odisha | 30 | 3 / 3 | 3.1 | 2.8 | hourly order | 20 October | 68 | 65.3 | 68.7 |
| Rupnagar | Punjab | 30 | 1 / 1 | 19.3 | 19.1 | hourly order | 20 October | 53 | 34.0 | 34.0 |
| Sagar | Madhya Pradesh | 25 | 1 / 1 | 2.2 | 0.8 | hourly order | 20 October | 140 | 140.0 | 140.0 |
| Saharsa | Bihar | 21 | 1 / 1 | 3.3 | 3.2 | hourly order | 18 October | 58 | 59.0 | 58.0 |
| Samastipur | Bihar | 19 | 1 / 1 | 6.6 | 0.7 | hourly order | 20 October | 64 | 63.0 | 64.0 |
| Sangli | Maharashtra | 27 | 1 / 1 | 2.6 | 1.1 | hourly order | 20 October | 77 | 77.0 | 77.0 |
| Sasaram | Bihar | 26 | 1 / 1 | 1.7 | 0.5 | hourly order | 20 October | 131 | 132.0 | 132.0 |
| Satara | Maharashtra | 30 | 1 / 1 | 3.7 | 1.3 | hourly order | 20 October | 96 | 100.0 | 96.0 |
| Satna | Madhya Pradesh | 30 | 1 / 1 | 0.9 | 0.9 | level | 20 October | 70 | 71.0 | 71.0 |
| Sawai madhopur | Rajasthan | 30 | 1 / 1 | 3.0 | 1.1 | hourly order | 20 October | 145 | 143.0 | 147.0 |
| Shamli | Uttar Pradesh | 23 | 1 / 1 | 7.6 | 5.3 | hourly order | 20 October | 86 | 93.0 | 87.0 |
| Shillong | Meghalaya | 19 | 2 / 1 | 9.3 | 7.5 | hourly order | 20 October | 42 | 52.0 | 47.0 |
| Shivamogga | Karnataka | 18 | 1 / 1 | 1.9 | 1.4 | hourly order | 20 October | 49 | 49.0 | 49.0 |
| Sikar | Rajasthan | 26 | 1 / 1 | 3.2 | 1.3 | hourly order | 20 October | 152 | 148.0 | 152.0 |
| Silchar | Assam | 30 | 1 / 1 | 0.5 | 0.4 | hourly order | 20 October | 66 | 66.0 | 66.0 |
| Siliguri | West Bengal | 26 | 1 / 1 | 0.8 | 0.7 | hourly order | 20 October | 76 | 76.0 | 76.0 |
| Sirohi | Rajasthan | 30 | 1 / 1 | 3.2 | 0.8 | hourly order | 20 October | 105 | 109.0 | 106.0 |
| Sirsa | Haryana | 28 | 1 / 1 | 5.7 | 3.3 | hourly order | 20 October | 149 | 150.0 | 150.0 |
| Sivasagar | Assam | 30 | 1 / 1 | 0.6 | 0.6 | hourly order | 20 October | 86 | 87.0 | 87.0 |
| Siwan | Bihar | 20 | 1 / 1 | 7.3 | 6.5 | hourly order | 16 October | 101 | 99.0 | 100.0 |
| Solapur | Maharashtra | 30 | 2 / 2 | 1.6 | 1.1 | hourly order | 20 October | 72 | 72.5 | 72.5 |
| Sonipat | Haryana | 29 | 1 / 1 | 2.7 | 2.0 | hourly order | 20 October | 56 | 57.0 | 56.0 |
| Sri ganganagar | Rajasthan | 28 | 1 / 1 | 5.9 | 2.7 | hourly order | 19 October | 221 | 211.0 | 231.0 |
| Srikakulam | Andhra Pradesh | 6 | 1 / 1 | 22.3 | 21.7 | hourly order | 20 October | 99 | 104.0 | 100.0 |
| Srinagar | Jammu and Kashmir | 30 | 2 / 2 | 3.6 | 3.4 | hourly order | 20 October | 55 | 56.0 | 54.5 |
| Suakati | Odisha | 12 | 1 / 1 | 2.5 | 0.3 | hourly order | 20 October | 99 | 94.0 | 100.0 |
| Surat | Gujarat | 30 | 2 / 2 | 3.3 | 1.9 | hourly order | 20 October | 107 | 108.5 | 106.5 |
| Talcher | Odisha | 26 | 1 / 1 | 5.4 | 4.1 | hourly order | 19 October | 116 | 116.0 | 113.0 |
| Tensa | Odisha | 23 | 1 / 1 | 3.9 | 3.2 | hourly order | 19 October | 102 | 104.0 | 103.0 |
| Thane | Maharashtra | 29 | 2 / 2 | 1.8 | 0.9 | hourly order | 20 October | 89 | 90.5 | 89.0 |
| Thiruvananthapuram | Kerala | 30 | 2 / 2 | 4.2 | 0.6 | hourly order | 20 October | 43 | 43.5 | 41.5 |
| Thoothukudi | Tamil Nadu | 25 | 1 / 1 | 0.4 | 0.4 | hourly order | 20 October | 56 | 57.0 | 57.0 |
| Thrissur | Kerala | 25 | 1 / 1 | 0.7 | 0.8 | documented | 20 October | 52 | 54.0 | 54.0 |
| Tirumala | Andhra Pradesh | 30 | 1 / 1 | 1.1 | 0.4 | hourly order | 20 October | 56 | 57.0 | 57.0 |
| Tirupati | Andhra Pradesh | 25 | 1 / 1 | 0.4 | 0.3 | hourly order | 20 October | 80 | 80.0 | 80.0 |
| City | State | Days | Stations | Documented gap | Hourly gap | Closer | Example | CPCB | Documented | Hourly |
|---|---|---|---|---|---|---|---|---|---|---|
| Tonk | Rajasthan | 30 | 1 / 1 | 4.2 | 3.3 | hourly order | 20 October | 230 | 233.0 | 231.0 |
| Tumidih | Chhattisgarh | 26 | 1 / 1 | 2.3 | 0.6 | hourly order | 20 October | 62 | 63.0 | 62.0 |
| Udaipur | Rajasthan | 29 | 1 / 1 | 2.6 | 0.8 | hourly order | 20 October | 96 | 98.0 | 97.0 |
| Udupi | Karnataka | 22 | 1 / 1 | 6.3 | 6.2 | hourly order | 20 October | 52 | 53.0 | 52.0 |
| Ujjain | Madhya Pradesh | 28 | 1 / 1 | 3.9 | 0.5 | hourly order | 20 October | 130 | 128.0 | 130.0 |
| Ulhasnagar | Maharashtra | 30 | 2 / 2 | 2.5 | 0.8 | hourly order | 20 October | 76 | 78.0 | 77.0 |
| Vadodara | Gujarat | 30 | 1 / 1 | 7.7 | 5.8 | hourly order | 20 October | 93 | 91.0 | 88.0 |
| Vapi | Gujarat | 26 | 1 / 1 | 1.8 | 0.9 | hourly order | 20 October | 76 | 76.0 | 76.0 |
| Varanasi | Uttar Pradesh | 30 | 4 / 4 | 2.8 | 1.0 | hourly order | 20 October | 126 | 130.2 | 130.0 |
| Vatva | Gujarat | 30 | 1 / 1 | 4.2 | 1.0 | hourly order | 20 October | 131 | 126.0 | 131.0 |
| Vijayapura | Karnataka | 11 | 1 / 1 | 0.1 | 0.1 | level | 19 October | 43 | 43.0 | 43.0 |
| Vijayawada | Andhra Pradesh | 30 | 3 / 3 | 0.8 | 0.7 | hourly order | 20 October | 73 | 72.7 | 74.0 |
| Virar | Maharashtra | 30 | 1 / 1 | 1.1 | 0.3 | hourly order | 20 October | 86 | 88.0 | 86.0 |
| Visakhapatnam | Andhra Pradesh | 28 | 1 / 1 | 2.0 | 0.4 | hourly order | 20 October | 103 | 106.0 | 104.0 |
| Vrindavan | Uttar Pradesh | 29 | 2 / 2 | 10.8 | 8.7 | hourly order | 20 October | 97 | 88.0 | 98.0 |
| Yadgir | Karnataka | 26 | 1 / 1 | 1.4 | 1.0 | hourly order | 20 October | 76 | 77.0 | 77.0 |
| Yamuna nagar | Haryana | 22 | 1 / 1 | 4.2 | 1.1 | hourly order | 20 October | 164 | 163.0 | 164.0 |
Not compared: Kalaburagi -> no CREA city; Moradabad -> no CREA city. Matched by spelling: Chikkaballapur -> matched by spelling to CREA 'chikkaballarpur'; Mangalore -> matched by spelling to CREA 'manglore'.