30 Sep – 6 Oct 2026 · Malaysia

Malaysia weekly air quality

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

98.9Weekly mean AQI · Moderate

Official DOE API mean: 84.1. 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

11408 eligible observations · 1 excluded.

+8.8 AQI compared with the previous week’s eligible mean of 90.1.

Peak AQI: 236 at Batu Pahat · 6 Oct 2026, 22:00 (UTC+8).

Daily US AQI (PM2.5)

Low 28High 236AQI
0125250
30 Sept6 Oct
6 OctDaily mean · Peak 236115.3Avg 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-30116.4Unhealthy for Sensitive Groups1891632 / 0
2026-10-0189.1Moderate1631632 / 0
2026-10-0283.5Moderate1441629 / 1
2026-10-0384.7Moderate1581620 / 0
2026-10-0498.3Moderate1581631 / 0
2026-10-05104.7Unhealthy for Sensitive Groups1731632 / 0
2026-10-06115.3Unhealthy for Sensitive Groups2361632 / 0

Hourly means (UTC+8)

Day01234567891011121314151617181920212223
2026-09-30128.1127.4126.9126.5125.9125.2124.5123.8123121.9121119.9118.1116114112110108.6107105.5103.8102.5101.4100.4
2026-10-0199.398.497.396.19593.892.891.790.689.588.687.68786.48685.184.884.583.983.883.883.98484.1
2026-10-0284.384.184.284.484.684.684.684.684.484.183.783.58382.982.882.982.882.582.282.382.582.48382.8
2026-10-0382.682.682.382.181.881.982.182.382.682.983.383.683.684.284.785.185.786.38787.988.48989.890.6
2026-10-0491.692.19393.994.795.596.296.697.197.397.998.398.699.199.6100.1100.7101.3101.8102.1102.3102.5102.6102.8
2026-10-05102.8102.6102.6102.4102.2102.1102.3102.5102.8103.4103.7104.2104.6104.9105.5106106.4106.8107107.3107.5107.6107.7107.8
2026-10-06108108.2108.7109.1109.7110110.2110.4110.6111.1111.9112.8114115.1116.4117.9119.1120.3121.5122.5123.5124.4125.5126.4

Observation categories

Good: 207

Moderate: 6562

Unhealthy for Sensitive Groups: 3223

Unhealthy: 1400

Very Unhealthy: 16

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
Pasir Gudang142.6Unhealthy for Sensitive Groups179130.2168 / 0
Nilai141.8Unhealthy for Sensitive Groups193129.8168 / 0
Larkin140.7Unhealthy for Sensitive Groups175129.3168 / 0
Cheras140.6Unhealthy for Sensitive Groups182124.5168 / 0
JOHAN SETIA136.7Unhealthy for Sensitive Groups189121.8168 / 0
Batu Pahat135.6Unhealthy for Sensitive Groups236122.9167 / 1
Putrajaya133.6Unhealthy for Sensitive Groups182120.9168 / 0
Shah Alam130.4Unhealthy for Sensitive Groups184110.6168 / 0
Seremban130.4Unhealthy for Sensitive Groups186114168 / 0
Batu Muda130Unhealthy for Sensitive Groups177109.1168 / 0
Segamat124.9Unhealthy for Sensitive Groups184110.3168 / 0
Bandaraya Melaka122.3Unhealthy for Sensitive Groups175101.9168 / 0
Kluang121.4Unhealthy for Sensitive Groups177106.5168 / 0
Tangkak121Unhealthy for Sensitive Groups184105.1168 / 0
IPD Serian120.8Unhealthy for Sensitive Groups16799.6168 / 0
Bukit Rambai120.3Unhealthy for Sensitive Groups17198.6168 / 0
Klang118.5Unhealthy for Sensitive Groups173103.5168 / 0
Kota Tinggi118.5Unhealthy for Sensitive Groups166103168 / 0
Pengerang116.8Unhealthy for Sensitive Groups166100.9168 / 0
Petaling Jaya116.3Unhealthy for Sensitive Groups17499.8168 / 0
Banting116.2Unhealthy for Sensitive Groups17196.3168 / 0
Samarahan111.6Unhealthy for Sensitive Groups15290.3168 / 0
Alor Gajah111Unhealthy for Sensitive Groups17191.3168 / 0
Port Dickson110.2Unhealthy for Sensitive Groups16991.6168 / 0
Balok Baru Kuantan108.2Unhealthy for Sensitive Groups16996.4168 / 0
Sri Aman107.7Unhealthy for Sensitive Groups15288.2168 / 0
Indera Mahkota Kuantan106.5Unhealthy for Sensitive Groups16793168 / 0
Rompin105.8Unhealthy for Sensitive Groups15990.2168 / 0
Kuching104.9Unhealthy for Sensitive Groups13981.5168 / 0
Kemaman102.9Unhealthy for Sensitive Groups15888.2168 / 0
Kuala Terengganu102.2Unhealthy for Sensitive Groups15986.9168 / 0
Paka99.3Moderate16084.7168 / 0
Tawau99.2Moderate14679.5168 / 0
Seri Manjung98.3Moderate16381.9168 / 0
Jerantut98.3Moderate16582.9168 / 0
Tasek Ipoh95.9Moderate13476.8168 / 0
Tanjung Malim95.4Moderate15681168 / 0
Bintulu91.7Moderate12274.3168 / 0
Kuala Selangor90.8Moderate16277168 / 0
Pegoh Ipoh90.3Moderate12873.8168 / 0
Temerloh89Moderate16274.3168 / 0
Kota Bharu87.3Moderate14571.7168 / 0
Samalaju86.7Moderate12471.2168 / 0
Seberang Perai86.4Moderate13270.9168 / 0
Sarikei85.6Moderate11769.9168 / 0
Besut84.7Moderate13669.6168 / 0
Sungai Petani84.2Moderate13469.7168 / 0
Seberang Jaya83.7Moderate13969.2168 / 0
Sibu83.5Moderate10569.1168 / 0
Minden82.9Moderate15569.7168 / 0
Kapit82.1Moderate10568.4168 / 0
Mukah79.8Moderate11166.6168 / 0
Tanah Merah78Moderate9965.8168 / 0
Taiping77.8Moderate11165.3168 / 0
Miri76.5Moderate11563.9168 / 0
Alor Setar71Moderate10160.8168 / 0
Keningau71Moderate9061168 / 0
Politeknik Kota Kinabalu71Moderate8760.4168 / 0
Kulim Hi-Tech69.5Moderate11359.7168 / 0
Balik Pulau68.4Moderate15257.9168 / 0
ILP Miri68Moderate9957.4168 / 0
Labuan67.6Moderate8058.4168 / 0
Sandakan67.2Moderate8457.8168 / 0
Kimanis62.6Moderate7255.2168 / 0
Langkawi62.4Moderate12450.2168 / 0
Limbang62.1Moderate7852.1168 / 0
Kota Kinabalu61.4Moderate9151.6153 / 0
Kangar59.4Moderate9649.8168 / 0

States by US AQI

StateMean AQIOfficial API meanEligible / excluded
Kuala Lumpur135.3116.8336 / 0
Putrajaya133.6120.9168 / 0
Johor127.7113.51343 / 1
Negeri Sembilan127.5111.8504 / 0
Selangor118.2101.51008 / 0
Melaka117.997.3504 / 0
Pahang101.687.4840 / 0
Terengganu97.382.4672 / 0
Perak91.575.8840 / 0
Sarawak89.373.32184 / 0
Kelantan82.668.8336 / 0
Penang80.366.9672 / 0
Sabah72.261.1993 / 0
Kedah71.860.1672 / 0
Labuan67.658.4168 / 0
Perlis59.449.8168 / 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 30 Sep – 6 Oct 2026, Malaysia recorded an overall average Air Pollutant Index (API) of 84.1 (Moderate).

National weekly average

84.1API

Moderate · Sederhana

6.6 API hazier than the week before, which averaged 77.5

Daily averages68.8 – 103.8 APIWed → Tue
Explore the week
Week's highest reading
211Batu Pahat, Johor23:00 MYT, 6 Oct 2026
Cleanest average
49.8Kangar, PerlisGood weekly average
Good to Moderate air
83%of all hourly readings11,409 readings in total
Stations reporting
68of 68 DOE stations16 states and territories

Where the haze sat

Taburan kualiti udara mengikut negeri dan stesen

Peak: Batu Pahat · 211

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 113.5 (Unhealthy), peak 211 across 8 stationsKedah: weekly average API 60.1 (Moderate), peak 98 across 4 stationsKelantan: weekly average API 68.8 (Moderate), peak 131 across 2 stationsMelaka: weekly average API 97.3 (Moderate), peak 169 across 3 stationsNegeri Sembilan: weekly average API 111.8 (Unhealthy), peak 182 across 3 stationsPahang: weekly average API 87.4 (Moderate), peak 164 across 5 stationsPerak: weekly average API 75.8 (Moderate), peak 160 across 5 stationsPerlis: weekly average API 49.8 (Good), peak 78 across 1 stationPenang: weekly average API 66.9 (Moderate), peak 154 across 4 stationsSelangor: weekly average API 101.5 (Unhealthy), peak 179 across 6 stationsTerengganu: weekly average API 82.4 (Moderate), peak 158 across 4 stationsKuala Lumpur: weekly average API 116.8 (Unhealthy), peak 174 across 2 stationsPutrajaya: weekly average API 120.9 (Unhealthy), peak 174 across 1 stationKangar, Perlis — weekly average API 49.8 (Good), peak 78Langkawi, Kedah — weekly average API 50.2 (Moderate), peak 93Balik Pulau, Penang — weekly average API 57.9 (Moderate), peak 152Kulim Hi-Tech, Kedah — weekly average API 59.7 (Moderate), peak 87Alor Setar, Kedah — weekly average API 60.8 (Moderate), peak 81Taiping, Perak — weekly average API 65.3 (Moderate), peak 86Tanah Merah, Kelantan — weekly average API 65.8 (Moderate), peak 80Seberang Jaya, Penang — weekly average API 69.2 (Moderate), peak 107Besut, Terengganu — weekly average API 69.6 (Moderate), peak 99Sungai Petani, Kedah — weekly average API 69.7 (Moderate), peak 98Minden, Penang — weekly average API 69.7 (Moderate), peak 154Seberang Perai, Penang — weekly average API 70.9 (Moderate), peak 97Kota Bharu, Kelantan — weekly average API 71.7 (Moderate), peak 131Pegoh Ipoh, Perak — weekly average API 73.8 (Moderate), peak 95Temerloh, Pahang — weekly average API 74.3 (Moderate), peak 159Tasek Ipoh, Perak — weekly average API 76.8 (Moderate), peak 98Kuala Selangor, Selangor — weekly average API 77 (Moderate), peak 159Tanjung Malim, Perak — weekly average API 81 (Moderate), peak 155Seri Manjung, Perak — weekly average API 81.9 (Moderate), peak 160Jerantut, Pahang — weekly average API 82.9 (Moderate), peak 161Paka, Terengganu — weekly average API 84.7 (Moderate), peak 158Kuala Terengganu, Terengganu — weekly average API 86.9 (Moderate), peak 157Kemaman, Terengganu — weekly average API 88.2 (Moderate), peak 156Rompin, Pahang — weekly average API 90.2 (Moderate), peak 157Alor Gajah, Melaka — weekly average API 91.3 (Moderate), peak 166Port Dickson, Negeri Sembilan — weekly average API 91.6 (Moderate), peak 164Indera Mahkota Kuantan, Pahang — weekly average API 93 (Moderate), peak 163Banting, Selangor — weekly average API 96.3 (Moderate), peak 166Balok Baru Kuantan, Pahang — weekly average API 96.4 (Moderate), peak 164Bukit Rambai, Melaka — weekly average API 98.6 (Moderate), peak 166Petaling Jaya, Selangor — weekly average API 99.8 (Moderate), peak 168Pengerang, Johor — weekly average API 100.9 (Unhealthy), peak 162Bandaraya Melaka, Melaka — weekly average API 101.9 (Unhealthy), peak 169Kota Tinggi, Johor — weekly average API 103 (Unhealthy), peak 162Klang, Selangor — weekly average API 103.5 (Unhealthy), peak 167Tangkak, Johor — weekly average API 105.1 (Unhealthy), peak 175Kluang, Johor — weekly average API 106.5 (Unhealthy), peak 170Batu Muda, Kuala Lumpur — weekly average API 109.1 (Unhealthy), peak 170Segamat, Johor — weekly average API 110.3 (Unhealthy), peak 175Shah Alam, Selangor — weekly average API 110.6 (Unhealthy), peak 175Seremban, Negeri Sembilan — weekly average API 114 (Unhealthy), peak 177Putrajaya, Putrajaya — weekly average API 120.9 (Unhealthy), peak 174JOHAN SETIA, Selangor — weekly average API 121.8 (Unhealthy), peak 179Batu Pahat, Johor — weekly average API 122.9 (Unhealthy), peak 211Cheras, Kuala Lumpur — weekly average API 124.5 (Unhealthy), peak 174Larkin, Johor — weekly average API 129.3 (Unhealthy), peak 169Nilai, Negeri Sembilan — weekly average API 129.8 (Unhealthy), peak 182Pasir Gudang, Johor — weekly average API 130.2 (Unhealthy), peak 172Batu Pahat · peak 211

Peninsular Malaysia · Semenanjung Malaysia

Sabah: weekly average API 61.1 (Moderate), peak 133 across 6 stationsSarawak: weekly average API 73.3 (Moderate), peak 163 across 13 stationsLabuan: weekly average API 58.4 (Moderate), peak 67 across 1 stationKota Kinabalu, Sabah — weekly average API 51.6 (Moderate), peak 75Limbang, Sarawak — weekly average API 52.1 (Moderate), peak 66Kimanis, Sabah — weekly average API 55.2 (Moderate), peak 62ILP Miri, Sarawak — weekly average API 57.4 (Moderate), peak 80Sandakan, Sabah — weekly average API 57.8 (Moderate), peak 70Labuan, Labuan — weekly average API 58.4 (Moderate), peak 67Politeknik Kota Kinabalu, Sabah — weekly average API 60.4 (Moderate), peak 72Keningau, Sabah — weekly average API 61 (Moderate), peak 74Miri, Sarawak — weekly average API 63.9 (Moderate), peak 88Mukah, Sarawak — weekly average API 66.6 (Moderate), peak 86Kapit, Sarawak — weekly average API 68.4 (Moderate), peak 83Sibu, Sarawak — weekly average API 69.1 (Moderate), peak 83Sarikei, Sarawak — weekly average API 69.9 (Moderate), peak 89Samalaju, Sarawak — weekly average API 71.2 (Moderate), peak 93Bintulu, Sarawak — weekly average API 74.3 (Moderate), peak 92Tawau, Sabah — weekly average API 79.5 (Moderate), peak 133Kuching, Sarawak — weekly average API 81.5 (Moderate), peak 107Sri Aman, Sarawak — weekly average API 88.2 (Moderate), peak 152Samarahan, Sarawak — weekly average API 90.3 (Moderate), peak 152IPD Serian, Sarawak — weekly average API 99.6 (Moderate), peak 163

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 117.1Wed 01:00 MYT — API 116.8Wed 02:00 MYT — API 116.5Wed 03:00 MYT — API 116.2Wed 04:00 MYT — API 115.6Wed 05:00 MYT — API 114.6Wed 06:00 MYT — API 113.6Wed 07:00 MYT — API 112.5Wed 08:00 MYT — API 111.1Wed 09:00 MYT — API 109.5Wed 10:00 MYT — API 108.5Wed 11:00 MYT — API 107.8Wed 12:00 MYT — API 105.1Wed 13:00 MYT — API 102Wed 14:00 MYT — API 99.7Wed 15:00 MYT — API 97.5Wed 16:00 MYT — API 95.7Wed 17:00 MYT — API 94.5Wed 18:00 MYT — API 93.1Wed 19:00 MYT — API 91.8Wed 20:00 MYT — API 90.2Wed 21:00 MYT — API 88.8Wed 22:00 MYT — API 87.6Wed 23:00 MYT — API 86.6ThuThu 00:00 MYT — API 85.5Thu 01:00 MYT — API 84.1Thu 02:00 MYT — API 82.7Thu 03:00 MYT — API 81.7Thu 04:00 MYT — API 81Thu 05:00 MYT — API 80Thu 06:00 MYT — API 79Thu 07:00 MYT — API 77.9Thu 08:00 MYT — API 76.9Thu 09:00 MYT — API 75.9Thu 10:00 MYT — API 74.9Thu 11:00 MYT — API 74.3Thu 12:00 MYT — API 73.8Thu 13:00 MYT — API 73.3Thu 14:00 MYT — API 72.8Thu 15:00 MYT — API 72Thu 16:00 MYT — API 71.2Thu 17:00 MYT — API 70.5Thu 18:00 MYT — API 69.8Thu 19:00 MYT — API 69.4Thu 20:00 MYT — API 69.4Thu 21:00 MYT — API 69.4Thu 22:00 MYT — API 69.5Thu 23:00 MYT — API 69.5FriFri 00:00 MYT — API 69.6Fri 01:00 MYT — API 69.3Fri 02:00 MYT — API 69.2Fri 03:00 MYT — API 69.3Fri 04:00 MYT — API 69.3Fri 05:00 MYT — API 69.4Fri 06:00 MYT — API 69.3Fri 07:00 MYT — API 69.4Fri 08:00 MYT — API 69.3Fri 09:00 MYT — API 69.1Fri 10:00 MYT — API 68.9Fri 11:00 MYT — API 68.9Fri 12:00 MYT — API 68.5Fri 13:00 MYT — API 68.3Fri 14:00 MYT — API 68.1Fri 15:00 MYT — API 68.2Fri 16:00 MYT — API 68.2Fri 17:00 MYT — API 68Fri 18:00 MYT — API 67.9Fri 19:00 MYT — API 68Fri 20:00 MYT — API 68.3Fri 21:00 MYT — API 68.3Fri 22:00 MYT — API 68.8Fri 23:00 MYT — API 68.6SatSat 00:00 MYT — API 68.6Sat 01:00 MYT — API 68.8Sat 02:00 MYT — API 68.7Sat 03:00 MYT — API 68.6Sat 04:00 MYT — API 68.4Sat 05:00 MYT — API 68.6Sat 06:00 MYT — API 69Sat 07:00 MYT — API 69.3Sat 08:00 MYT — API 69.7Sat 09:00 MYT — API 70.2Sat 10:00 MYT — API 70.5Sat 11:00 MYT — API 70.9Sat 12:00 MYT — API 71.1Sat 13:00 MYT — API 71.5Sat 14:00 MYT — API 71.8Sat 15:00 MYT — API 72Sat 16:00 MYT — API 72.3Sat 17:00 MYT — API 72.3Sat 18:00 MYT — API 72.4Sat 19:00 MYT — API 72.7Sat 20:00 MYT — API 73Sat 21:00 MYT — API 73.3Sat 22:00 MYT — API 73.8Sat 23:00 MYT — API 74.3SunSun 00:00 MYT — API 74.9Sun 01:00 MYT — API 75.3Sun 02:00 MYT — API 76.2Sun 03:00 MYT — API 77.3Sun 04:00 MYT — API 78.4Sun 05:00 MYT — API 79.4Sun 06:00 MYT — API 80.1Sun 07:00 MYT — API 80.7Sun 08:00 MYT — API 80.9Sun 09:00 MYT — API 80.9Sun 10:00 MYT — API 81.2Sun 11:00 MYT — API 81.7Sun 12:00 MYT — API 82.1Sun 13:00 MYT — API 82.4Sun 14:00 MYT — API 82.5Sun 15:00 MYT — API 82.8Sun 16:00 MYT — API 83Sun 17:00 MYT — API 83.3Sun 18:00 MYT — API 83.3Sun 19:00 MYT — API 83.2Sun 20:00 MYT — API 83.1Sun 21:00 MYT — API 83.5Sun 22:00 MYT — API 84.1Sun 23:00 MYT — API 84.4MonMon 00:00 MYT — API 84.5Mon 01:00 MYT — API 84.5Mon 02:00 MYT — API 84.8Mon 03:00 MYT — API 84.9Mon 04:00 MYT — API 84.7Mon 05:00 MYT — API 84.5Mon 06:00 MYT — API 84.5Mon 07:00 MYT — API 84.6Mon 08:00 MYT — API 84.8Mon 09:00 MYT — API 85.1Mon 10:00 MYT — API 85.3Mon 11:00 MYT — API 85.6Mon 12:00 MYT — API 86.1Mon 13:00 MYT — API 86.5Mon 14:00 MYT — API 87.3Mon 15:00 MYT — API 88.3Mon 16:00 MYT — API 88.9Mon 17:00 MYT — API 89.1Mon 18:00 MYT — API 89.5Mon 19:00 MYT — API 90.1Mon 20:00 MYT — API 90.8Mon 21:00 MYT — API 91Mon 22:00 MYT — API 91.4Mon 23:00 MYT — API 91.7TueTue 00:00 MYT — API 91.9Tue 01:00 MYT — API 92.3Tue 02:00 MYT — API 92.8Tue 03:00 MYT — API 92.9Tue 04:00 MYT — API 93.4Tue 05:00 MYT — API 93.6Tue 06:00 MYT — API 93.9Tue 07:00 MYT — API 94.5Tue 08:00 MYT — API 95.5Tue 09:00 MYT — API 96.8Tue 10:00 MYT — API 98.1Tue 11:00 MYT — API 99.7Tue 12:00 MYT — API 101.2Tue 13:00 MYT — API 103.3Tue 14:00 MYT — API 105Tue 15:00 MYT — API 106.4Tue 16:00 MYT — API 107.8Tue 17:00 MYT — API 109Tue 18:00 MYT — API 110.4Tue 19:00 MYT — API 111.4Tue 20:00 MYT — API 112Tue 21:00 MYT — API 112.9Tue 22:00 MYT — API 113.9Tue 23:00 MYT — API 114.90003060912151821
0255075100125APIBrighter cells ran hazier than the rest of this week (67.9 – 117.1 API)

Haziest hour of the week: Wed at 00:00 MYT, averaging API 117.1 nationwide.

View the hourly figures as a table
National average API by hour, Malaysia Time
Day000102030405060708091011121314151617181920212223
Wed117.1116.8116.5116.2115.6114.6113.6112.5111.1109.5108.5107.8105.110299.797.595.794.593.191.890.288.887.686.6
Thu85.584.182.781.781807977.976.975.974.974.373.873.372.87271.270.569.869.469.469.469.569.5
Fri69.669.369.269.369.369.469.369.469.369.168.968.968.568.368.168.268.26867.96868.368.368.868.6
Sat68.668.868.768.668.468.66969.369.770.270.570.971.171.571.87272.372.372.472.77373.373.874.3
Sun74.975.376.277.378.479.480.180.780.980.981.281.782.182.482.582.88383.383.383.283.183.584.184.4
Mon84.584.584.884.984.784.584.584.684.885.185.385.686.186.587.388.388.989.189.590.190.89191.491.7
Tue91.992.392.892.993.493.693.994.595.596.898.199.7101.2103.3105106.4107.8109110.4111.4112112.9113.9114.9

How the readings split

Pecahan bacaan mengikut kategori IPU

Good: 5% (588 readings)Moderate: 78% (8,908 readings)Unhealthy: 17% (1,909 readings)78%Moderate
  • GoodBaik5%588
  • ModerateSederhana78%8,908
  • UnhealthyTidak Sihat17%1,909
  • Very UnhealthySangat Tidak Sihat0%4
  • HazardousBerbahaya0%0

Based on 11,409 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. Putrajaya120.9Unhealthy · 1 station
  2. Kuala Lumpur116.8Unhealthy · 2 stations
  3. Johor113.5Unhealthy · 8 stations
  4. Negeri Sembilan111.8Unhealthy · 3 stations
  5. Selangor101.5Unhealthy · 6 stations
  6. Melaka97.3Moderate · 3 stations
  7. Pahang87.4Moderate · 5 stations
  8. Terengganu82.4Moderate · 4 stations
  9. Perak75.8Moderate · 5 stations
  10. Sarawak73.3Moderate · 13 stations
  11. Kelantan68.8Moderate · 2 stations
  12. Penang66.9Moderate · 4 stations
  13. Sabah61.1Moderate · 6 stations
  14. Kedah60.1Moderate · 4 stations
  15. Labuan58.4Moderate · 1 station
  16. Perlis49.8Good · 1 station

Cleanest air of the week

Lima stesen dengan purata IPU terendah

Scale 0 – 250
  1. Kangar49.8avg
    Perlis
    23Good78
  2. Langkawi50.2avg
    Kedah
    29Moderate93
  3. Sabah
    28Moderate75
  4. Limbang52.1avg
    Sarawak
    33Moderate66
  5. Kimanis55.2avg
    Sabah
    51Moderate62

Highest readings of the week

Lima stesen dengan bacaan IPU tertinggi

Scale 0 – 250
  1. Batu Pahat211peak
    Johor
    64Unhealthy211
  2. Nilai182peak
    Negeri Sembilan
    75Unhealthy182
  3. Selangor
    64Unhealthy179
  4. Seremban177peak
    Negeri Sembilan
    66Unhealthy177
  5. Shah Alam175peak
    Selangor
    72Unhealthy175

Major cities

Purata dan puncak mingguan bagi bandar utama Malaysia

  • Johor BahruJohor129.3Unhealthy · Tidak SihatPeak 169Larkin
  • Kuala LumpurKuala Lumpur124.5Unhealthy · Tidak SihatPeak 174Cheras
  • KuchingSarawak81.5Moderate · SederhanaPeak 107Kuching
  • Alor SetarKedah60.8Moderate · SederhanaPeak 81Alor Setar
  • Kota BharuKelantan71.7Moderate · SederhanaPeak 131Kota Bharu
  • MelakaMelaka101.9Unhealthy · Tidak SihatPeak 169Bandaraya Melaka
  • SerembanNegeri Sembilan114Unhealthy · Tidak SihatPeak 177Seremban
  • KuantanPahang93Moderate · SederhanaPeak 163Indera Mahkota Kuantan
  • George TownPulau Pinang69.7Moderate · SederhanaPeak 154Minden
  • IpohPerak76.8Moderate · SederhanaPeak 98Tasek Ipoh
  • KangarPerlis49.8Good · BaikPeak 78Kangar
  • Kota KinabaluSabah51.6Moderate · SederhanaPeak 75Kota Kinabalu
  • Shah AlamSelangor110.6Unhealthy · Tidak SihatPeak 175Shah Alam
  • Kuala TerengganuTerengganu86.9Moderate · SederhanaPeak 157Kuala 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 30 Sep – 6 Oct 2026, the latest Wednesday-to-Tuesday reporting week in Malaysia Time. The national weekly average of 84.1 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 211 API at Batu Pahat in Johor. 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,409 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 30 Sep – 6 Oct 2026, Malaysia averaged an Air Pollutant Index of 84.1, which sits in the Moderate band (Sederhana). 83% of all hourly readings stayed within Good or Moderate.

Where was the cleanest air recorded?

Kangar in Perlis held the lowest weekly average at API 49.8 (Good).

Which area had the worst haze?

The single highest reading of the week was API 211 (Very Unhealthy) at Batu Pahat, Johor, recorded at 23:00 MYT, 6 Oct 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.