23 – 29 Sep 2026 · Malaysia

Malaysia weekly air quality

US AQI · PM2.5 · 24-hour source averages

90.1Weekly mean AQI · Moderate

Official DOE API mean: 77.5. Calculated separately from reported official observations.

Each DOE observation identified as PM2.5 is converted using the published API formula and US AQI breakpoints. This is not an official all-pollutant AQI or NowCast. Calculation details

11420 eligible observations · 4 excluded.

-21.2 AQI compared with the previous week’s eligible mean of 111.3.

Peak AQI: 250 at IPD Serian · 24 Sept 2026, 03:00 (UTC+8).

Daily US AQI (PM2.5)

Low 27High 250AQI
0125250
23 Sept29 Sept
29 SeptDaily mean · Peak 189117.9Avg AQI

Based on 1632 hourly readings.

Daily and hourly means use eligible observations across the selected locations. Each observation uses a 24-hour PM2.5 average.

Export AQI CSV

Means and peaks use only converted observations. Missing days remain gaps.

DayMean AQIPeak AQIEligible / excluded
2026-09-2391.9Moderate2441632 / 0
2026-09-2494.2Moderate2501632 / 0
2026-09-2587.2Moderate1961632 / 0
2026-09-2684.1Moderate1661632 / 0
2026-09-2778.8Moderate1701631 / 1
2026-09-2876.3Moderate1701629 / 3
2026-09-29117.9Unhealthy for Sensitive Groups1891632 / 0

Hourly means (UTC+8)

Day01234567891011121314151617181920212223
2026-09-2391.791.290.990.389.989.889.889.689.789.990.190.79191.391.892.692.893.293.994.494.995.195.896.1
2026-09-2496.596.997.497.897.997.897.597.196.696.395.695.394.894.493.792.892.79291.290.589.989.48988.8
2026-09-2588.588.287.987.687.487.487.587.587.787.587.787.88887.787.587.186.986.886.586.386.38686.185.5
2026-09-2685.284.884.584.384.283.983.583.28382.782.682.382.683.383.684.184.484.68585.28585.485.685.4
2026-09-2785.284.984.684.383.983.483.182.982.481.680.980.279.27876.975.774.774.473.973.772.672.171.671.1
2026-09-2870.570.169.969.97070707070.37171.571.972.673.674.876.177.979.881.784.687.489.992.494.9
2026-09-2996.999.5101.8104106108109.9111.5113.3115116.8118.7120.7122.6124.5127128.3129.1129.6129.3129.3129.5128.9128.7

Observation categories

Good: 488

Moderate: 8085

Unhealthy for Sensitive Groups: 1526

Unhealthy: 1263

Very Unhealthy: 58

Hazardous: 0

US AQI scale
AQICategory
0–50Good
51–100Moderate
101–150Unhealthy for Sensitive Groups
151–200Unhealthy
201–300Very Unhealthy
301+Hazardous

Stations by US AQI

Sorted by eligible mean AQI. Counts show the available coverage.

LocationMean AQIPeak AQIOfficial DOE API meanEligible / excluded
IPD Serian178.3Unhealthy250167168 / 0
Kuching157.4Unhealthy216138.8168 / 0
Samarahan146.5Unhealthy for Sensitive Groups204132.9168 / 0
Sri Aman145.2Unhealthy for Sensitive Groups193126.6168 / 0
Pasir Gudang125Unhealthy for Sensitive Groups181108.9168 / 0
Larkin118.8Unhealthy for Sensitive Groups179103.5168 / 0
Bintulu118.7Unhealthy for Sensitive Groups182104.3168 / 0
Sarikei110.9Unhealthy for Sensitive Groups17599.1168 / 0
Nilai110.8Unhealthy for Sensitive Groups18492.9168 / 0
Kota Tinggi110.8Unhealthy for Sensitive Groups17098.5168 / 0
Pengerang110.1Unhealthy for Sensitive Groups16797.8168 / 0
Bukit Rambai109.6Unhealthy for Sensitive Groups17892.6168 / 0
Batu Pahat107.8Unhealthy for Sensitive Groups17391.1168 / 0
Sibu106.8Unhealthy for Sensitive Groups18596168 / 0
Samalaju106.6Unhealthy for Sensitive Groups16994.6168 / 0
Cheras105.1Unhealthy for Sensitive Groups18189.1168 / 0
JOHAN SETIA102.7Unhealthy for Sensitive Groups18987.2168 / 0
Mukah102.4Unhealthy for Sensitive Groups17390.1168 / 0
Shah Alam102.3Unhealthy for Sensitive Groups18286.6168 / 0
Kapit97.5Moderate14981168 / 0
Bandaraya Melaka96.1Moderate18483.2168 / 0
Rompin94.3Moderate16280.2168 / 0
Tawau93.7Moderate10176.6168 / 0
Tangkak93.5Moderate17080.9168 / 0
Politeknik Kota Kinabalu92.6Moderate13874.8168 / 0
Seremban92.3Moderate17179168 / 0
Kluang91.9Moderate15878.9168 / 0
Petaling Jaya91.7Moderate16678.1168 / 0
Alor Gajah91.1Moderate16678.5168 / 0
Batu Muda90.6Moderate16677.1168 / 0
Segamat90.2Moderate16378.1168 / 0
Port Dickson89.6Moderate17477.6168 / 0
Putrajaya88.8Moderate17177.1168 / 0
Miri88.3Moderate16578.2168 / 0
Klang87.7Moderate17376.2168 / 0
Balok Baru Kuantan86.1Moderate16774168 / 0
Kuala Selangor85.2Moderate16573.6168 / 0
Banting84.9Moderate16974168 / 0
Labuan84.4Moderate13668.9168 / 0
ILP Miri84.2Moderate16073.6168 / 0
Seri Manjung81.3Moderate16670.8168 / 0
Limbang81.2Moderate15570.6168 / 0
Indera Mahkota Kuantan79.9Moderate16569.1168 / 0
Seberang Jaya79.8Moderate13966.8168 / 0
Kemaman79.5Moderate15868.4168 / 0
Sandakan78.3Moderate9466168 / 0
Sungai Petani78.1Moderate14465.5168 / 0
Seberang Perai76.1Moderate12864.3168 / 0
Paka75.8Moderate14363.9168 / 0
Minden74.4Moderate15563.9168 / 0
Kuala Terengganu73.5Moderate15563.7168 / 0
Kota Kinabalu73Moderate10960.7168 / 0
Tanjung Malim72.2Moderate13861.4168 / 0
Taiping72.1Moderate11561.6168 / 0
Pegoh Ipoh71.6Moderate10561.3168 / 0
Jerantut71Moderate15661168 / 0
Kulim Hi-Tech69.3Moderate12059.3168 / 0
Tasek Ipoh68.5Moderate8859.3168 / 0
Alor Setar67.8Moderate10756.4168 / 0
Balik Pulau67.5Moderate15458.1168 / 0
Kimanis67.5Moderate8858.2168 / 0
Kota Bharu66.5Moderate10956.4168 / 0
Keningau66.3Moderate10156.6168 / 0
Temerloh61.5Moderate13050.2168 / 0
Kangar53.9Moderate8044.9168 / 0
Besut51.2Moderate11340.5168 / 0
Tanah Merah49.9Good7840.8168 / 0
Langkawi45.4Good10535.9164 / 4

States by US AQI

StateMean AQIOfficial API meanEligible / excluded
Sarawak117.2104.12184 / 0
Johor10692.21344 / 0
Melaka9984.8504 / 0
Kuala Lumpur97.983.1336 / 0
Negeri Sembilan97.683.2504 / 0
Selangor92.479.31008 / 0
Putrajaya88.877.1168 / 0
Labuan84.468.9168 / 0
Sabah78.665.51008 / 0
Pahang78.566.9840 / 0
Penang74.563.3672 / 0
Perak73.162.9840 / 0
Terengganu7059.1672 / 0
Kedah65.354.3668 / 4
Kelantan58.248.6336 / 0
Perlis53.944.9168 / 0
View the official DOE API report

Malaysia air quality.
The week in review.

7 days · Malaysia Time

Laporan mingguan Indeks Pencemaran Udara (IPU) dan jerebu Malaysia

During the week of 23 – 29 Sep 2026, Malaysia recorded an overall average Air Pollutant Index (API) of 77.5 (Moderate).

National weekly average

77.5API

Moderate · Sederhana

24.5 API cleaner than the week before, which averaged 102

Daily averages64.4 – 106.1 APIWed → Tue
Explore the week
Week's highest reading
225IPD Serian, Sarawak04:00 MYT, 24 Sept 2026
Cleanest average
35.9Langkawi, KedahGood weekly average
Good to Moderate air
86%of all hourly readings11,424 readings in total
Stations reporting
68of 68 DOE stations16 states and territories

Where the haze sat

Taburan kualiti udara mengikut negeri dan stesen

Peak: IPD Serian · 225

Compare weekly station averages across Peninsular Malaysia, Sabah and Sarawak. Each dot represents a monitoring station. Use the state rankings below to compare regional averages with the highest reading in each state.

Johor: weekly average API 92.2 (Moderate), peak 173 across 8 stationsKedah: weekly average API 54.3 (Moderate), peak 127 across 4 stationsKelantan: weekly average API 48.6 (Good), peak 85 across 2 stationsMelaka: weekly average API 84.8 (Moderate), peak 175 across 3 stationsNegeri Sembilan: weekly average API 83.2 (Moderate), peak 175 across 3 stationsPahang: weekly average API 66.9 (Moderate), peak 163 across 5 stationsPerak: weekly average API 62.9 (Moderate), peak 162 across 5 stationsPerlis: weekly average API 44.9 (Good), peak 67 across 1 stationPenang: weekly average API 63.3 (Moderate), peak 154 across 4 stationsSelangor: weekly average API 79.3 (Moderate), peak 179 across 6 stationsTerengganu: weekly average API 59.1 (Moderate), peak 156 across 4 stationsKuala Lumpur: weekly average API 83.1 (Moderate), peak 173 across 2 stationsPutrajaya: weekly average API 77.1 (Moderate), peak 166 across 1 stationLangkawi, Kedah — weekly average API 35.9 (Good), peak 83Besut, Terengganu — weekly average API 40.5 (Good), peak 87Tanah Merah, Kelantan — weekly average API 40.8 (Good), peak 66Kangar, Perlis — weekly average API 44.9 (Good), peak 67Temerloh, Pahang — weekly average API 50.2 (Moderate), peak 96Alor Setar, Kedah — weekly average API 56.4 (Moderate), peak 84Kota Bharu, Kelantan — weekly average API 56.4 (Moderate), peak 85Balik Pulau, Penang — weekly average API 58.1 (Moderate), peak 153Kulim Hi-Tech, Kedah — weekly average API 59.3 (Moderate), peak 91Tasek Ipoh, Perak — weekly average API 59.3 (Moderate), peak 73Jerantut, Pahang — weekly average API 61 (Moderate), peak 155Pegoh Ipoh, Perak — weekly average API 61.3 (Moderate), peak 83Tanjung Malim, Perak — weekly average API 61.4 (Moderate), peak 103Taiping, Perak — weekly average API 61.6 (Moderate), peak 88Kuala Terengganu, Terengganu — weekly average API 63.7 (Moderate), peak 154Minden, Penang — weekly average API 63.9 (Moderate), peak 154Paka, Terengganu — weekly average API 63.9 (Moderate), peak 123Seberang Perai, Penang — weekly average API 64.3 (Moderate), peak 95Sungai Petani, Kedah — weekly average API 65.5 (Moderate), peak 127Seberang Jaya, Penang — weekly average API 66.8 (Moderate), peak 106Kemaman, Terengganu — weekly average API 68.4 (Moderate), peak 156Indera Mahkota Kuantan, Pahang — weekly average API 69.1 (Moderate), peak 161Seri Manjung, Perak — weekly average API 70.8 (Moderate), peak 162Kuala Selangor, Selangor — weekly average API 73.6 (Moderate), peak 161Banting, Selangor — weekly average API 74 (Moderate), peak 164Balok Baru Kuantan, Pahang — weekly average API 74 (Moderate), peak 163Klang, Selangor — weekly average API 76.2 (Moderate), peak 167Batu Muda, Kuala Lumpur — weekly average API 77.1 (Moderate), peak 162Putrajaya, Putrajaya — weekly average API 77.1 (Moderate), peak 166Port Dickson, Negeri Sembilan — weekly average API 77.6 (Moderate), peak 168Petaling Jaya, Selangor — weekly average API 78.1 (Moderate), peak 162Segamat, Johor — weekly average API 78.1 (Moderate), peak 160Alor Gajah, Melaka — weekly average API 78.5 (Moderate), peak 162Kluang, Johor — weekly average API 78.9 (Moderate), peak 156Seremban, Negeri Sembilan — weekly average API 79 (Moderate), peak 166Rompin, Pahang — weekly average API 80.2 (Moderate), peak 159Tangkak, Johor — weekly average API 80.9 (Moderate), peak 165Bandaraya Melaka, Melaka — weekly average API 83.2 (Moderate), peak 175Shah Alam, Selangor — weekly average API 86.6 (Moderate), peak 174JOHAN SETIA, Selangor — weekly average API 87.2 (Moderate), peak 179Cheras, Kuala Lumpur — weekly average API 89.1 (Moderate), peak 173Batu Pahat, Johor — weekly average API 91.1 (Moderate), peak 167Bukit Rambai, Melaka — weekly average API 92.6 (Moderate), peak 171Nilai, Negeri Sembilan — weekly average API 92.9 (Moderate), peak 175Pengerang, Johor — weekly average API 97.8 (Moderate), peak 163Kota Tinggi, Johor — weekly average API 98.5 (Moderate), peak 165Larkin, Johor — weekly average API 103.5 (Unhealthy), peak 172Pasir Gudang, Johor — weekly average API 108.9 (Unhealthy), peak 173

Peninsular Malaysia · Semenanjung Malaysia

Sabah: weekly average API 65.5 (Moderate), peak 100 across 6 stationsSarawak: weekly average API 104.1 (Unhealthy), peak 225 across 13 stationsLabuan: weekly average API 68.9 (Moderate), peak 99 across 1 stationKeningau, Sabah — weekly average API 56.6 (Moderate), peak 81Kimanis, Sabah — weekly average API 58.2 (Moderate), peak 73Kota Kinabalu, Sabah — weekly average API 60.7 (Moderate), peak 85Sandakan, Sabah — weekly average API 66 (Moderate), peak 77Labuan, Labuan — weekly average API 68.9 (Moderate), peak 99Limbang, Sarawak — weekly average API 70.6 (Moderate), peak 154ILP Miri, Sarawak — weekly average API 73.6 (Moderate), peak 158Politeknik Kota Kinabalu, Sabah — weekly average API 74.8 (Moderate), peak 100Tawau, Sabah — weekly average API 76.6 (Moderate), peak 81Miri, Sarawak — weekly average API 78.2 (Moderate), peak 161Kapit, Sarawak — weekly average API 81 (Moderate), peak 144Mukah, Sarawak — weekly average API 90.1 (Moderate), peak 167Samalaju, Sarawak — weekly average API 94.7 (Moderate), peak 164Sibu, Sarawak — weekly average API 96 (Moderate), peak 176Sarikei, Sarawak — weekly average API 99.1 (Moderate), peak 169Bintulu, Sarawak — weekly average API 104.3 (Unhealthy), peak 174Sri Aman, Sarawak — weekly average API 126.6 (Unhealthy), peak 182Samarahan, Sarawak — weekly average API 132.9 (Unhealthy), peak 189Kuching, Sarawak — weekly average API 138.8 (Unhealthy), peak 195IPD Serian, Sarawak — weekly average API 167 (Unhealthy), peak 225IPD Serian · peak 225

Sabah, Sarawak & Labuan · Borneo Malaysia

0255075100125State average APIOne DOE station, sized and shaded by its weekly average

The week, hour by hour

Purata kebangsaan bagi setiap jam sepanjang tujuh hari

Read each row from midnight to 11pm, in Malaysia Time. The hourly national average helps identify when readings rose or fell during the week. Empty cells mean no hourly figure is available.

WedWed 00:00 MYT — API 80.3Wed 01:00 MYT — API 80.2Wed 02:00 MYT — API 80Wed 03:00 MYT — API 79.7Wed 04:00 MYT — API 79.5Wed 05:00 MYT — API 79.3Wed 06:00 MYT — API 79.4Wed 07:00 MYT — API 79.3Wed 08:00 MYT — API 79.4Wed 09:00 MYT — API 79.6Wed 10:00 MYT — API 79.8Wed 11:00 MYT — API 80.1Wed 12:00 MYT — API 80.3Wed 13:00 MYT — API 80.4Wed 14:00 MYT — API 80.5Wed 15:00 MYT — API 81.2Wed 16:00 MYT — API 81.2Wed 17:00 MYT — API 81.4Wed 18:00 MYT — API 81.8Wed 19:00 MYT — API 82.3Wed 20:00 MYT — API 82.6Wed 21:00 MYT — API 82.9Wed 22:00 MYT — API 83.3Wed 23:00 MYT — API 83.5ThuThu 00:00 MYT — API 83.7Thu 01:00 MYT — API 83.7Thu 02:00 MYT — API 83.8Thu 03:00 MYT — API 84Thu 04:00 MYT — API 83.7Thu 05:00 MYT — API 83.5Thu 06:00 MYT — API 83.2Thu 07:00 MYT — API 82.6Thu 08:00 MYT — API 82Thu 09:00 MYT — API 82Thu 10:00 MYT — API 81.2Thu 11:00 MYT — API 81.1Thu 12:00 MYT — API 80.9Thu 13:00 MYT — API 80.7Thu 14:00 MYT — API 79.6Thu 15:00 MYT — API 79Thu 16:00 MYT — API 79.1Thu 17:00 MYT — API 78.7Thu 18:00 MYT — API 78.3Thu 19:00 MYT — API 77.8Thu 20:00 MYT — API 77.3Thu 21:00 MYT — API 76.7Thu 22:00 MYT — API 76.2Thu 23:00 MYT — API 76.2FriFri 00:00 MYT — API 76Fri 01:00 MYT — API 75.8Fri 02:00 MYT — API 75.4Fri 03:00 MYT — API 74.7Fri 04:00 MYT — API 74Fri 05:00 MYT — API 73.8Fri 06:00 MYT — API 73.7Fri 07:00 MYT — API 73.7Fri 08:00 MYT — API 73.8Fri 09:00 MYT — API 73.8Fri 10:00 MYT — API 73.9Fri 11:00 MYT — API 74Fri 12:00 MYT — API 74.1Fri 13:00 MYT — API 73.9Fri 14:00 MYT — API 73.9Fri 15:00 MYT — API 73.6Fri 16:00 MYT — API 73.5Fri 17:00 MYT — API 73Fri 18:00 MYT — API 72.7Fri 19:00 MYT — API 72.6Fri 20:00 MYT — API 72.6Fri 21:00 MYT — API 72.3Fri 22:00 MYT — API 72.1Fri 23:00 MYT — API 71.3SatSat 00:00 MYT — API 70.9Sat 01:00 MYT — API 70.4Sat 02:00 MYT — API 70.2Sat 03:00 MYT — API 70Sat 04:00 MYT — API 70Sat 05:00 MYT — API 69.8Sat 06:00 MYT — API 69.5Sat 07:00 MYT — API 69.3Sat 08:00 MYT — API 69.2Sat 09:00 MYT — API 69.1Sat 10:00 MYT — API 68.9Sat 11:00 MYT — API 68.6Sat 12:00 MYT — API 68.8Sat 13:00 MYT — API 69.1Sat 14:00 MYT — API 69.1Sat 15:00 MYT — API 69.3Sat 16:00 MYT — API 69.6Sat 17:00 MYT — API 69.5Sat 18:00 MYT — API 69.6Sat 19:00 MYT — API 69.9Sat 20:00 MYT — API 70.7Sat 21:00 MYT — API 71.8Sat 22:00 MYT — API 72.2Sat 23:00 MYT — API 72.2SunSun 00:00 MYT — API 72Sun 01:00 MYT — API 71.8Sun 02:00 MYT — API 71.6Sun 03:00 MYT — API 71.5Sun 04:00 MYT — API 71.3Sun 05:00 MYT — API 71.1Sun 06:00 MYT — API 71.1Sun 07:00 MYT — API 70.9Sun 08:00 MYT — API 70.5Sun 09:00 MYT — API 70Sun 10:00 MYT — API 69.4Sun 11:00 MYT — API 68.9Sun 12:00 MYT — API 67.9Sun 13:00 MYT — API 67Sun 14:00 MYT — API 66.2Sun 15:00 MYT — API 65.4Sun 16:00 MYT — API 64.6Sun 17:00 MYT — API 64.3Sun 18:00 MYT — API 63.9Sun 19:00 MYT — API 62.9Sun 20:00 MYT — API 62.3Sun 21:00 MYT — API 62Sun 22:00 MYT — API 61.2Sun 23:00 MYT — API 60MonMon 00:00 MYT — API 59.1Mon 01:00 MYT — API 59.2Mon 02:00 MYT — API 59.1Mon 03:00 MYT — API 59.2Mon 04:00 MYT — API 59.6Mon 05:00 MYT — API 59.7Mon 06:00 MYT — API 59.9Mon 07:00 MYT — API 60Mon 08:00 MYT — API 60.4Mon 09:00 MYT — API 60.8Mon 10:00 MYT — API 61.3Mon 11:00 MYT — API 61.5Mon 12:00 MYT — API 62Mon 13:00 MYT — API 62.6Mon 14:00 MYT — API 63.5Mon 15:00 MYT — API 64.4Mon 16:00 MYT — API 65.4Mon 17:00 MYT — API 66.5Mon 18:00 MYT — API 67.6Mon 19:00 MYT — API 70Mon 20:00 MYT — API 72.2Mon 21:00 MYT — API 74.6Mon 22:00 MYT — API 77.1Mon 23:00 MYT — API 79.3TueTue 00:00 MYT — API 82.3Tue 01:00 MYT — API 85.5Tue 02:00 MYT — API 87.5Tue 03:00 MYT — API 89.9Tue 04:00 MYT — API 92.1Tue 05:00 MYT — API 95.3Tue 06:00 MYT — API 98.1Tue 07:00 MYT — API 99.9Tue 08:00 MYT — API 101.7Tue 09:00 MYT — API 104Tue 10:00 MYT — API 106.6Tue 11:00 MYT — API 108.9Tue 12:00 MYT — API 110.2Tue 13:00 MYT — API 111.5Tue 14:00 MYT — API 112.9Tue 15:00 MYT — API 115Tue 16:00 MYT — API 116.6Tue 17:00 MYT — API 117.6Tue 18:00 MYT — API 118.3Tue 19:00 MYT — API 118.5Tue 20:00 MYT — API 118.7Tue 21:00 MYT — API 118.8Tue 22:00 MYT — API 118Tue 23:00 MYT — API 117.30003060912151821
050100150APIBrighter cells ran hazier than the rest of this week (59.1 – 118.8 API)

Haziest hour of the week: Tue at 21:00 MYT, averaging API 118.8 nationwide.

View the hourly figures as a table
National average API by hour, Malaysia Time
Day000102030405060708091011121314151617181920212223
Wed80.380.28079.779.579.379.479.379.479.679.880.180.380.480.581.281.281.481.882.382.682.983.383.5
Thu83.783.783.88483.783.583.282.6828281.281.180.980.779.67979.178.778.377.877.376.776.276.2
Fri7675.875.474.77473.873.773.773.873.873.97474.173.973.973.673.57372.772.672.672.372.171.3
Sat70.970.470.2707069.869.569.369.269.168.968.668.869.169.169.369.669.569.669.970.771.872.272.2
Sun7271.871.671.571.371.171.170.970.57069.468.967.96766.265.464.664.363.962.962.36261.260
Mon59.159.259.159.259.659.759.96060.460.861.361.56262.663.564.465.466.567.67072.274.677.179.3
Tue82.385.587.589.992.195.398.199.9101.7104106.6108.9110.2111.5112.9115116.6117.6118.3118.5118.7118.8118117.3

How the readings split

Pecahan bacaan mengikut kategori IPU

Good: 10% (1,144 readings)Moderate: 76% (8,687 readings)Unhealthy: 14% (1,571 readings)76%Moderate
  • GoodBaik10%1,144
  • ModerateSederhana76%8,687
  • UnhealthyTidak Sihat14%1,571
  • Very UnhealthySangat Tidak Sihat0%22
  • HazardousBerbahaya0%0

Based on 11,424 hourly station readings.

What it meant for your week

Panduan kesihatan mengikut kategori kualiti udara

Air quality is acceptable. People with asthma, heart or lung conditions should reduce prolonged or heavy outdoor exertion.

Kualiti udara sederhana. Pesakit asma, jantung atau paru-paru dinasihatkan mengurangkan aktiviti berat di luar bangunan.

Malaysia API scale · Skala IPU Malaysia
APICategoryKategori
0–50GoodBaik
51–100ModerateSederhana
101–200UnhealthyTidak Sihat
201–300Very UnhealthySangat Tidak Sihat
301+HazardousBerbahaya

States ranked by weekly average

Kedudukan negeri mengikut purata IPU mingguan

Marker shows each state's peak
  1. Sarawak104.1Unhealthy · 13 stations
  2. Johor92.2Moderate · 8 stations
  3. Melaka84.8Moderate · 3 stations
  4. Negeri Sembilan83.2Moderate · 3 stations
  5. Kuala Lumpur83.1Moderate · 2 stations
  6. Selangor79.3Moderate · 6 stations
  7. Putrajaya77.1Moderate · 1 station
  8. Labuan68.9Moderate · 1 station
  9. Pahang66.9Moderate · 5 stations
  10. Sabah65.5Moderate · 6 stations
  11. Penang63.3Moderate · 4 stations
  12. Perak62.9Moderate · 5 stations
  13. Terengganu59.1Moderate · 4 stations
  14. Kedah54.3Moderate · 4 stations
  15. Kelantan48.6Good · 2 stations
  16. Perlis44.9Good · 1 station

Cleanest air of the week

Lima stesen dengan purata IPU terendah

Scale 0 – 250
  1. Langkawi35.9avg
    Kedah
    20Good83
  2. Besut40.5avg
    Terengganu
    21Good87
  3. Kelantan
    23Good66
  4. Kangar44.9avg
    Perlis
    21Good67
  5. Temerloh50.2avg
    Pahang
    30Moderate96

Highest readings of the week

Lima stesen dengan bacaan IPU tertinggi

Scale 0 – 250
  1. IPD Serian225peak
    Sarawak
    111Unhealthy225
  2. Kuching195peak
    Sarawak
    89Unhealthy195
  3. Samarahan189peak
    Sarawak
    72Unhealthy189
  4. Sri Aman182peak
    Sarawak
    69Unhealthy182
  5. Selangor
    56Moderate179

Major cities

Purata dan puncak mingguan bagi bandar utama Malaysia

  • Johor BahruJohor103.5Unhealthy · Tidak SihatPeak 172Larkin
  • Kuala LumpurKuala Lumpur89.1Moderate · SederhanaPeak 173Cheras
  • KuchingSarawak138.8Unhealthy · Tidak SihatPeak 195Kuching
  • Alor SetarKedah56.4Moderate · SederhanaPeak 84Alor Setar
  • Kota BharuKelantan56.4Moderate · SederhanaPeak 85Kota Bharu
  • MelakaMelaka83.2Moderate · SederhanaPeak 175Bandaraya Melaka
  • SerembanNegeri Sembilan79Moderate · SederhanaPeak 166Seremban
  • KuantanPahang69.1Moderate · SederhanaPeak 161Indera Mahkota Kuantan
  • George TownPulau Pinang63.9Moderate · SederhanaPeak 154Minden
  • IpohPerak59.3Moderate · SederhanaPeak 73Tasek Ipoh
  • KangarPerlis44.9Good · BaikPeak 67Kangar
  • Kota KinabaluSabah60.7Moderate · SederhanaPeak 85Kota Kinabalu
  • Shah AlamSelangor86.6Moderate · SederhanaPeak 174Shah Alam
  • Kuala TerengganuTerengganu63.7Moderate · SederhanaPeak 154Kuala Terengganu

Reading the report

What a week of
air quality tells us.

A closer look at Malaysia's Air Pollutant Index, known locally as Indeks Pencemaran Udara or IPU.

Malaysia's weekly API in context

This report covers 23 – 29 Sep 2026, the latest Wednesday-to-Tuesday reporting week in Malaysia Time. The national weekly average of 77.5 API falls in the Moderate category. On Tuesday, the final day's data is partial until all hourly readings arrive. It summarises the period across reporting stations; it does not describe every place at every hour.

Why averages and peaks tell different stories

A weekly average shows the level across the available readings. A peak is the highest single reading during that period, so a short rise at one station can stand out even when the weekly average is lower. For this report, the highest value is 225 API at IPD Serian in Sarawak. Compare the solid average line with the station peak and min–max range to see that difference.

Comparing states, stations and cities

State averages combine station averages in proportion to their reading counts. Stations with more observations contribute more to the result. City summaries use a representative monitoring station, named below each city. That station describes its monitoring location; readings can differ elsewhere in the city.

Where these numbers come from

This report uses 11,424 stored hourly readings from 68 reporting stations. The archive collects the Department of Environment Malaysia's APIMS feed. Coverage depends on the readings received during the reporting window. Missing observations can affect comparisons between places and periods.

Looking for today's haze conditions?

This is a historical weekly summary. For current conditions, open the live Malaysia air quality report or find a nearby station on the air quality map. The about page explains the source and how Haze Monitor presents the data.

Questions readers ask

Soalan lazim berkenaan jerebu dan kualiti udara Malaysia

What was Malaysia's average air quality during the latest reporting week?

Across 23 – 29 Sep 2026, Malaysia averaged an Air Pollutant Index of 77.5, which sits in the Moderate band (Sederhana). 86% of all hourly readings stayed within Good or Moderate.

Where was the cleanest air recorded?

Langkawi in Kedah held the lowest weekly average at API 35.9 (Good).

Which area had the worst haze?

The single highest reading of the week was API 225 (Very Unhealthy) at IPD Serian, Sarawak, recorded at 04:00 MYT, 24 Sept 2026.

How is this report put together?

Hourly readings are collected from the Department of Environment's APIMS feed for all 68 national stations and stored as they arrive. The report advances to a new Wednesday-to-Tuesday period each Tuesday in Malaysia Time and refreshes hourly. On Tuesday, readings for the final day accumulate as they arrive. State figures weight each station by how many hours it actually reported.