7 – 13 Oct 2026 · Malaysia

Malaysia weekly air quality

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

123.6Weekly mean AQI · Unhealthy for Sensitive Groups

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

11421 eligible observations · 3 excluded.

+24.7 AQI compared with the previous week’s eligible mean of 98.9.

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

Daily US AQI (PM2.5)

Low 32High 236AQI
0125250
7 Oct13 Oct
13 OctDaily mean · Peak 192109.7Avg 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-10-07133.6Unhealthy for Sensitive Groups2361632 / 0
2026-10-08138Unhealthy for Sensitive Groups2081632 / 0
2026-10-09136.9Unhealthy for Sensitive Groups2081631 / 1
2026-10-10131.5Unhealthy for Sensitive Groups2061632 / 0
2026-10-11109.3Unhealthy for Sensitive Groups1971632 / 0
2026-10-12106.3Unhealthy for Sensitive Groups1891630 / 2
2026-10-13109.7Unhealthy for Sensitive Groups1921632 / 0

Hourly means (UTC+8)

Day01234567891011121314151617181920212223
2026-10-07127.5128.1128.8129.5130.1130.8131.3132.1132.5132.9133.5134.2134.8135.5136.1135.9135.9136136.1136.4136.7137.1137.2137.3
2026-10-08137.3137.4137.3137.4137.7137.9138138.2138.4138.7139.1139.1139.3139138.8138.7138.7138.3138.1137.8137.1136.8136.5136.2
2026-10-09136.2136.1136.3136.3136.4136.6136.6136.8136.8136.8136.8136.7136.8137137.1137.3137.2136.5137.3137.4137.6137.8137.8137.9
2026-10-10137.8137.7137.5137.1136.7136.3135.9135.3134.9134.4133.9133.5132.6131.9130.9129.9128.6127.5126.3125.2124.3123.5122.4121.6
2026-10-11120.9120.1119.3117.9116.7115.2113.9112.7111.2109.7108.3107106104.7104103.5103.1103.5103.7104.1104.3104.8104.9104.8
2026-10-12104.9105105105.2105.4105.8106.1106.5106.6106.4106.4106105.8106.2106.7107.4107.7107.5108.5108106.5106.2106.2106.1
2026-10-13106.1106105.9105.8105.7105.6105.5105.4105.3105.5106.3107107.8108.7109.7110.8112.2113.6114.8115.8116.7117.3117.8118.2

Observation categories

Good: 131

Moderate: 4278

Unhealthy for Sensitive Groups: 2646

Unhealthy: 4265

Very Unhealthy: 101

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 Gudang187.8Unhealthy208178168 / 0
Larkin181.8Unhealthy203173.7168 / 0
Seremban174.8Unhealthy204165168 / 0
Segamat174.4Unhealthy208161.8168 / 0
Tangkak174.1Unhealthy200167.8168 / 0
Batu Pahat173.4Unhealthy236167.3168 / 0
Nilai172.9Unhealthy204162.9168 / 0
Kota Tinggi172.6Unhealthy186167168 / 0
Bukit Rambai171.1Unhealthy200161.8168 / 0
Pengerang170.5Unhealthy184165.4168 / 0
Kluang170.3Unhealthy192165168 / 0
Bandaraya Melaka169.4Unhealthy196158.8168 / 0
Rompin166.4Unhealthy188162.1168 / 0
Alor Gajah164.1Unhealthy192153.7168 / 0
Cheras163.8Unhealthy206150.2167 / 1
JOHAN SETIA162.7Unhealthy208149168 / 0
Putrajaya161Unhealthy200150.7168 / 0
Port Dickson155Unhealthy184144.4168 / 0
Balok Baru Kuantan153.4Unhealthy173146.1168 / 0
Batu Muda150Unhealthy for Sensitive Groups193138.3168 / 0
Indera Mahkota Kuantan148.1Unhealthy for Sensitive Groups171134.3168 / 0
Shah Alam148Unhealthy for Sensitive Groups190136.3168 / 0
Kemaman145.4Unhealthy for Sensitive Groups165134.4168 / 0
Klang143.1Unhealthy for Sensitive Groups177130.6168 / 0
Petaling Jaya138.9Unhealthy for Sensitive Groups186127.9168 / 0
Paka135.8Unhealthy for Sensitive Groups162120.2168 / 0
Banting135.7Unhealthy for Sensitive Groups186124168 / 0
Tasek Ipoh133.1Unhealthy for Sensitive Groups194124.2168 / 0
Tanjung Malim132.4Unhealthy for Sensitive Groups182124.2168 / 0
IPD Serian127.6Unhealthy for Sensitive Groups163108.4168 / 0
Pegoh Ipoh127.2Unhealthy for Sensitive Groups186118.1168 / 0
Kuching124.7Unhealthy for Sensitive Groups15598.9168 / 0
Temerloh121.9Unhealthy for Sensitive Groups175113.3168 / 0
Kuala Selangor118.4Unhealthy for Sensitive Groups159104.5168 / 0
Samarahan118.2Unhealthy for Sensitive Groups15093.5168 / 0
Seri Manjung114.8Unhealthy for Sensitive Groups163105.9168 / 0
Sri Aman114.3Unhealthy for Sensitive Groups17996.2168 / 0
Tawau114Unhealthy for Sensitive Groups158101.6168 / 0
Kuala Terengganu112.2Unhealthy for Sensitive Groups17095.8168 / 0
Sungai Petani108.5Unhealthy for Sensitive Groups15998.3168 / 0
Bintulu106.4Unhealthy for Sensitive Groups13483.6168 / 0
Samalaju105.6Unhealthy for Sensitive Groups13883.3168 / 0
Seberang Jaya105.4Unhealthy for Sensitive Groups15592.1168 / 0
Seberang Perai104.2Unhealthy for Sensitive Groups15892.3168 / 0
Minden101.5Unhealthy for Sensitive Groups15892.2168 / 0
Miri101Unhealthy for Sensitive Groups13980168 / 0
Taiping100Moderate15586.4168 / 0
Kota Bharu97.2Moderate13877.5168 / 0
Besut94.4Moderate12676168 / 0
Alor Setar92.1Moderate15479.2168 / 0
Tanah Merah90.5Moderate11573.9168 / 0
Sarikei90.4Moderate11174.1168 / 0
Kapit89.5Moderate13272.8168 / 0
Kulim Hi-Tech89.4Moderate13671.7168 / 0
ILP Miri87.6Moderate11172.2168 / 0
Mukah87.3Moderate10572.2168 / 0
Sibu86.7Moderate11771.5168 / 0
Jerantut86Moderate16673.2168 / 0
Limbang84.2Moderate10969.8168 / 0
Keningau83.3Moderate11869.3168 / 0
Politeknik Kota Kinabalu80.8Moderate11567.3168 / 0
Labuan80.3Moderate10967.2168 / 0
Balik Pulau77.7Moderate13061.7168 / 0
Kangar74.5Moderate12460.7168 / 0
Kota Kinabalu73.6Moderate10162.7168 / 0
Sandakan73.4Moderate13861.9168 / 0
Kimanis72.8Moderate10362.1168 / 0
Langkawi58.6Moderate9347.2166 / 2

States by US AQI

StateMean AQIOfficial API meanEligible / excluded
Johor175.6168.31344 / 0
Melaka168.2158.1504 / 0
Negeri Sembilan167.6157.4504 / 0
Putrajaya161150.7168 / 0
Kuala Lumpur156.9144.2335 / 1
Selangor141.1128.71008 / 0
Pahang135.2125.8840 / 0
Terengganu121.9106.6672 / 0
Perak121.5111.8840 / 0
Sarawak101.882.82184 / 0
Penang97.284.6672 / 0
Kelantan93.875.7336 / 0
Kedah87.274.1670 / 2
Sabah8370.81008 / 0
Labuan80.367.2168 / 0
Perlis74.560.7168 / 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 7 – 13 Oct 2026, Malaysia recorded an overall average Air Pollutant Index (API) of 110.8 (Unhealthy).

National weekly average

110.8API

Unhealthy · Tidak Sihat

26.7 API hazier than the week before, which averaged 84.1

Daily averages94.4 – 125.9 APIWed → Tue
Explore the week
Week's highest reading
211Batu Pahat, Johor00:00 MYT, 7 Oct 2026
Cleanest average
47.2Langkawi, KedahGood weekly average
Good to Moderate air
58%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: 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 168.3 (Unhealthy), peak 211 across 8 stationsKedah: weekly average API 74.1 (Moderate), peak 157 across 4 stationsKelantan: weekly average API 75.7 (Moderate), peak 100 across 2 stationsMelaka: weekly average API 158.1 (Unhealthy), peak 187 across 3 stationsNegeri Sembilan: weekly average API 157.4 (Unhealthy), peak 189 across 3 stationsPahang: weekly average API 125.8 (Unhealthy), peak 178 across 5 stationsPerak: weekly average API 111.8 (Unhealthy), peak 183 across 5 stationsPerlis: weekly average API 60.7 (Moderate), peak 93 across 1 stationPenang: weekly average API 84.6 (Moderate), peak 156 across 4 stationsSelangor: weekly average API 128.7 (Unhealthy), peak 191 across 6 stationsTerengganu: weekly average API 106.6 (Unhealthy), peak 165 across 4 stationsKuala Lumpur: weekly average API 144.3 (Unhealthy), peak 190 across 2 stationsPutrajaya: weekly average API 150.7 (Unhealthy), peak 187 across 1 stationLangkawi, Kedah — weekly average API 47.2 (Good), peak 76Kangar, Perlis — weekly average API 60.7 (Moderate), peak 93Balik Pulau, Penang — weekly average API 61.7 (Moderate), peak 96Kulim Hi-Tech, Kedah — weekly average API 71.7 (Moderate), peak 99Jerantut, Pahang — weekly average API 73.2 (Moderate), peak 162Tanah Merah, Kelantan — weekly average API 73.9 (Moderate), peak 88Besut, Terengganu — weekly average API 76 (Moderate), peak 94Kota Bharu, Kelantan — weekly average API 77.5 (Moderate), peak 100Alor Setar, Kedah — weekly average API 79.2 (Moderate), peak 153Taiping, Perak — weekly average API 86.4 (Moderate), peak 154Seberang Jaya, Penang — weekly average API 92.1 (Moderate), peak 154Minden, Penang — weekly average API 92.2 (Moderate), peak 156Seberang Perai, Penang — weekly average API 92.3 (Moderate), peak 156Kuala Terengganu, Terengganu — weekly average API 95.8 (Moderate), peak 165Sungai Petani, Kedah — weekly average API 98.3 (Moderate), peak 157Kuala Selangor, Selangor — weekly average API 104.5 (Unhealthy), peak 157Seri Manjung, Perak — weekly average API 105.9 (Unhealthy), peak 160Temerloh, Pahang — weekly average API 113.3 (Unhealthy), peak 169Pegoh Ipoh, Perak — weekly average API 118.1 (Unhealthy), peak 177Paka, Terengganu — weekly average API 120.2 (Unhealthy), peak 159Banting, Selangor — weekly average API 124 (Unhealthy), peak 177Tasek Ipoh, Perak — weekly average API 124.2 (Unhealthy), peak 183Tanjung Malim, Perak — weekly average API 124.2 (Unhealthy), peak 174Petaling Jaya, Selangor — weekly average API 127.9 (Unhealthy), peak 177Klang, Selangor — weekly average API 130.6 (Unhealthy), peak 170Indera Mahkota Kuantan, Pahang — weekly average API 134.3 (Unhealthy), peak 166Kemaman, Terengganu — weekly average API 134.4 (Unhealthy), peak 161Shah Alam, Selangor — weekly average API 136.3 (Unhealthy), peak 180Batu Muda, Kuala Lumpur — weekly average API 138.3 (Unhealthy), peak 182Port Dickson, Negeri Sembilan — weekly average API 144.4 (Unhealthy), peak 175Balok Baru Kuantan, Pahang — weekly average API 146.1 (Unhealthy), peak 167JOHAN SETIA, Selangor — weekly average API 149 (Unhealthy), peak 191Cheras, Kuala Lumpur — weekly average API 150.2 (Unhealthy), peak 190Putrajaya, Putrajaya — weekly average API 150.7 (Unhealthy), peak 187Alor Gajah, Melaka — weekly average API 153.7 (Unhealthy), peak 181Bandaraya Melaka, Melaka — weekly average API 158.8 (Unhealthy), peak 184Bukit Rambai, Melaka — weekly average API 161.8 (Unhealthy), peak 187Segamat, Johor — weekly average API 161.8 (Unhealthy), peak 191Rompin, Pahang — weekly average API 162.1 (Unhealthy), peak 178Nilai, Negeri Sembilan — weekly average API 162.9 (Unhealthy), peak 189Seremban, Negeri Sembilan — weekly average API 165 (Unhealthy), peak 189Kluang, Johor — weekly average API 165 (Unhealthy), peak 181Pengerang, Johor — weekly average API 165.4 (Unhealthy), peak 175Kota Tinggi, Johor — weekly average API 167 (Unhealthy), peak 177Batu Pahat, Johor — weekly average API 167.3 (Unhealthy), peak 211Tangkak, Johor — weekly average API 167.8 (Unhealthy), peak 187Larkin, Johor — weekly average API 173.7 (Unhealthy), peak 188Pasir Gudang, Johor — weekly average API 178 (Unhealthy), peak 191Batu Pahat · peak 211

Peninsular Malaysia · Semenanjung Malaysia

Sabah: weekly average API 70.8 (Moderate), peak 156 across 6 stationsSarawak: weekly average API 82.8 (Moderate), peak 172 across 13 stationsLabuan: weekly average API 67.2 (Moderate), peak 85 across 1 stationSandakan, Sabah — weekly average API 61.9 (Moderate), peak 100Kimanis, Sabah — weekly average API 62.1 (Moderate), peak 82Kota Kinabalu, Sabah — weekly average API 62.7 (Moderate), peak 81Labuan, Labuan — weekly average API 67.2 (Moderate), peak 85Politeknik Kota Kinabalu, Sabah — weekly average API 67.3 (Moderate), peak 88Keningau, Sabah — weekly average API 69.3 (Moderate), peak 90Limbang, Sarawak — weekly average API 69.8 (Moderate), peak 85Sibu, Sarawak — weekly average API 71.5 (Moderate), peak 89ILP Miri, Sarawak — weekly average API 72.2 (Moderate), peak 86Mukah, Sarawak — weekly average API 72.2 (Moderate), peak 83Kapit, Sarawak — weekly average API 72.8 (Moderate), peak 97Sarikei, Sarawak — weekly average API 74.1 (Moderate), peak 86Miri, Sarawak — weekly average API 80 (Moderate), peak 104Samalaju, Sarawak — weekly average API 83.3 (Moderate), peak 100Bintulu, Sarawak — weekly average API 83.6 (Moderate), peak 98Samarahan, Sarawak — weekly average API 93.5 (Moderate), peak 148Sri Aman, Sarawak — weekly average API 96.2 (Moderate), peak 172Kuching, Sarawak — weekly average API 98.9 (Moderate), peak 154Tawau, Sabah — weekly average API 101.6 (Unhealthy), peak 156IPD Serian, Sarawak — weekly average API 108.4 (Unhealthy), peak 160

Sabah, Sarawak & Labuan · Borneo Malaysia

0255075100125150175State 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 115.8Wed 01:00 MYT — API 116.3Wed 02:00 MYT — API 116.8Wed 03:00 MYT — API 117.3Wed 04:00 MYT — API 117.8Wed 05:00 MYT — API 118.4Wed 06:00 MYT — API 118.8Wed 07:00 MYT — API 119.5Wed 08:00 MYT — API 120Wed 09:00 MYT — API 120.5Wed 10:00 MYT — API 121.2Wed 11:00 MYT — API 121.9Wed 12:00 MYT — API 122.5Wed 13:00 MYT — API 123.3Wed 14:00 MYT — API 124.3Wed 15:00 MYT — API 124Wed 16:00 MYT — API 123.3Wed 17:00 MYT — API 123.3Wed 18:00 MYT — API 123Wed 19:00 MYT — API 123.3Wed 20:00 MYT — API 123.8Wed 21:00 MYT — API 124.4Wed 22:00 MYT — API 124.8Wed 23:00 MYT — API 125.2ThuThu 00:00 MYT — API 125.4Thu 01:00 MYT — API 125.9Thu 02:00 MYT — API 126Thu 03:00 MYT — API 126.3Thu 04:00 MYT — API 126.4Thu 05:00 MYT — API 126.4Thu 06:00 MYT — API 126.5Thu 07:00 MYT — API 126.7Thu 08:00 MYT — API 126.8Thu 09:00 MYT — API 127Thu 10:00 MYT — API 127.2Thu 11:00 MYT — API 127.1Thu 12:00 MYT — API 127.2Thu 13:00 MYT — API 127Thu 14:00 MYT — API 126.6Thu 15:00 MYT — API 126.6Thu 16:00 MYT — API 126.3Thu 17:00 MYT — API 125.6Thu 18:00 MYT — API 125.3Thu 19:00 MYT — API 124.8Thu 20:00 MYT — API 124.3Thu 21:00 MYT — API 123.9Thu 22:00 MYT — API 123.7Thu 23:00 MYT — API 123.6FriFri 00:00 MYT — API 123.7Fri 01:00 MYT — API 123.6Fri 02:00 MYT — API 123.9Fri 03:00 MYT — API 124.1Fri 04:00 MYT — API 124.4Fri 05:00 MYT — API 124.8Fri 06:00 MYT — API 125Fri 07:00 MYT — API 125Fri 08:00 MYT — API 124.9Fri 09:00 MYT — API 124.8Fri 10:00 MYT — API 124.8Fri 11:00 MYT — API 124.7Fri 12:00 MYT — API 124.9Fri 13:00 MYT — API 125Fri 14:00 MYT — API 125.1Fri 15:00 MYT — API 125Fri 16:00 MYT — API 124.6Fri 17:00 MYT — API 124.5Fri 18:00 MYT — API 124.5Fri 19:00 MYT — API 124.6Fri 20:00 MYT — API 124.8Fri 21:00 MYT — API 124.8Fri 22:00 MYT — API 124.7Fri 23:00 MYT — API 124.6SatSat 00:00 MYT — API 124.3Sat 01:00 MYT — API 123.9Sat 02:00 MYT — API 123.4Sat 03:00 MYT — API 123.1Sat 04:00 MYT — API 122.9Sat 05:00 MYT — API 122.5Sat 06:00 MYT — API 121.9Sat 07:00 MYT — API 121.2Sat 08:00 MYT — API 120.8Sat 09:00 MYT — API 120.6Sat 10:00 MYT — API 120.1Sat 11:00 MYT — API 119.4Sat 12:00 MYT — API 118.4Sat 13:00 MYT — API 117.5Sat 14:00 MYT — API 116.1Sat 15:00 MYT — API 115.4Sat 16:00 MYT — API 114.5Sat 17:00 MYT — API 113.5Sat 18:00 MYT — API 112.3Sat 19:00 MYT — API 111.2Sat 20:00 MYT — API 110.5Sat 21:00 MYT — API 109.9Sat 22:00 MYT — API 109.1Sat 23:00 MYT — API 108.3SunSun 00:00 MYT — API 107.1Sun 01:00 MYT — API 106.4Sun 02:00 MYT — API 105.5Sun 03:00 MYT — API 103.3Sun 04:00 MYT — API 101.1Sun 05:00 MYT — API 99.4Sun 06:00 MYT — API 98Sun 07:00 MYT — API 96.5Sun 08:00 MYT — API 94.7Sun 09:00 MYT — API 93.1Sun 10:00 MYT — API 92.3Sun 11:00 MYT — API 91.7Sun 12:00 MYT — API 91Sun 13:00 MYT — API 90.1Sun 14:00 MYT — API 89.5Sun 15:00 MYT — API 89Sun 16:00 MYT — API 88.7Sun 17:00 MYT — API 89.1Sun 18:00 MYT — API 88.8Sun 19:00 MYT — API 89.3Sun 20:00 MYT — API 89.9Sun 21:00 MYT — API 91Sun 22:00 MYT — API 91.5Sun 23:00 MYT — API 91.8MonMon 00:00 MYT — API 92Mon 01:00 MYT — API 92Mon 02:00 MYT — API 91.9Mon 03:00 MYT — API 92Mon 04:00 MYT — API 92.2Mon 05:00 MYT — API 92.5Mon 06:00 MYT — API 93.2Mon 07:00 MYT — API 93.9Mon 08:00 MYT — API 94.4Mon 09:00 MYT — API 94.3Mon 10:00 MYT — API 94.4Mon 11:00 MYT — API 94.1Mon 12:00 MYT — API 93.8Mon 13:00 MYT — API 94.8Mon 14:00 MYT — API 95.4Mon 15:00 MYT — API 96.3Mon 16:00 MYT — API 97.2Mon 17:00 MYT — API 97Mon 18:00 MYT — API 97Mon 19:00 MYT — API 96.4Mon 20:00 MYT — API 95.9Mon 21:00 MYT — API 95.1Mon 22:00 MYT — API 94.9Mon 23:00 MYT — API 94.6TueTue 00:00 MYT — API 94.1Tue 01:00 MYT — API 93.8Tue 02:00 MYT — API 93.7Tue 03:00 MYT — API 93.7Tue 04:00 MYT — API 93.7Tue 05:00 MYT — API 93.5Tue 06:00 MYT — API 93.3Tue 07:00 MYT — API 93.1Tue 08:00 MYT — API 92.9Tue 09:00 MYT — API 93Tue 10:00 MYT — API 93.6Tue 11:00 MYT — API 94.2Tue 12:00 MYT — API 94.8Tue 13:00 MYT — API 95.4Tue 14:00 MYT — API 96.1Tue 15:00 MYT — API 97.2Tue 16:00 MYT — API 98.8Tue 17:00 MYT — API 101.2Tue 18:00 MYT — API 103Tue 19:00 MYT — API 103.9Tue 20:00 MYT — API 104.5Tue 21:00 MYT — API 105.4Tue 22:00 MYT — API 105.7Tue 23:00 MYT — API 1060003060912151821
050100150APIBrighter cells ran hazier than the rest of this week (88.7 – 127.2 API)

Haziest hour of the week: Thu at 10:00 MYT, averaging API 127.2 nationwide.

View the hourly figures as a table
National average API by hour, Malaysia Time
Day000102030405060708091011121314151617181920212223
Wed115.8116.3116.8117.3117.8118.4118.8119.5120120.5121.2121.9122.5123.3124.3124123.3123.3123123.3123.8124.4124.8125.2
Thu125.4125.9126126.3126.4126.4126.5126.7126.8127127.2127.1127.2127126.6126.6126.3125.6125.3124.8124.3123.9123.7123.6
Fri123.7123.6123.9124.1124.4124.8125125124.9124.8124.8124.7124.9125125.1125124.6124.5124.5124.6124.8124.8124.7124.6
Sat124.3123.9123.4123.1122.9122.5121.9121.2120.8120.6120.1119.4118.4117.5116.1115.4114.5113.5112.3111.2110.5109.9109.1108.3
Sun107.1106.4105.5103.3101.199.49896.594.793.192.391.79190.189.58988.789.188.889.389.99191.591.8
Mon929291.99292.292.593.293.994.494.394.494.193.894.895.496.397.2979796.495.995.194.994.6
Tue94.193.893.793.793.793.593.393.192.99393.694.294.895.496.197.298.8101.2103103.9104.5105.4105.7106

How the readings split

Pecahan bacaan mengikut kategori IPU

Good: 3% (309 readings)Moderate: 55% (6,270 readings)Unhealthy: 42% (4,841 readings)55%Moderate
  • GoodBaik3%309
  • ModerateSederhana55%6,270
  • UnhealthyTidak Sihat42%4,841
  • Very UnhealthySangat Tidak Sihat0%4
  • HazardousBerbahaya0%0

Based on 11,424 hourly station readings.

What it meant for your week

Panduan kesihatan mengikut kategori kualiti udara

Limit prolonged outdoor activity. Children, older adults, pregnant women and people with respiratory or heart conditions should stay indoors where possible. A well-fitted N95 mask helps outdoors.

Hadkan aktiviti luar yang berpanjangan. Kanak-kanak, warga emas, ibu mengandung dan pesakit pernafasan atau jantung dinasihatkan berada di dalam bangunan. Pelitup muka N95 membantu di luar.

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. Johor168.3Unhealthy · 8 stations
  2. Melaka158.1Unhealthy · 3 stations
  3. Negeri Sembilan157.4Unhealthy · 3 stations
  4. Putrajaya150.7Unhealthy · 1 station
  5. Kuala Lumpur144.3Unhealthy · 2 stations
  6. Selangor128.7Unhealthy · 6 stations
  7. Pahang125.8Unhealthy · 5 stations
  8. Perak111.8Unhealthy · 5 stations
  9. Terengganu106.6Unhealthy · 4 stations
  10. Penang84.6Moderate · 4 stations
  11. Sarawak82.8Moderate · 13 stations
  12. Kelantan75.7Moderate · 2 stations
  13. Kedah74.1Moderate · 4 stations
  14. Sabah70.8Moderate · 6 stations
  15. Labuan67.2Moderate · 1 station
  16. Perlis60.7Moderate · 1 station

Cleanest air of the week

Lima stesen dengan purata IPU terendah

Scale 0 – 250
  1. Langkawi47.2avg
    Kedah
    24Good76
  2. Kangar60.7avg
    Perlis
    26Moderate93
  3. Pulau Pinang
    25Moderate96
  4. Sandakan61.9avg
    Sabah
    41Moderate100
  5. Kimanis62.1avg
    Sabah
    54Moderate82

Highest readings of the week

Lima stesen dengan bacaan IPU tertinggi

Scale 0 – 250
  1. Batu Pahat211peak
    Johor
    145Unhealthy211
  2. Johor
    167Unhealthy191
  3. Segamat191peak
    Johor
    94Unhealthy191
  4. Selangor
    77Unhealthy191
  5. Cheras190peak
    WP Kuala Lumpur
    80Unhealthy190

Major cities

Purata dan puncak mingguan bagi bandar utama Malaysia

  • Johor BahruJohor173.7Unhealthy · Tidak SihatPeak 188Larkin
  • Kuala LumpurKuala Lumpur150.2Unhealthy · Tidak SihatPeak 190Cheras
  • KuchingSarawak98.9Moderate · SederhanaPeak 154Kuching
  • Alor SetarKedah79.2Moderate · SederhanaPeak 153Alor Setar
  • Kota BharuKelantan77.5Moderate · SederhanaPeak 100Kota Bharu
  • MelakaMelaka158.8Unhealthy · Tidak SihatPeak 184Bandaraya Melaka
  • SerembanNegeri Sembilan165Unhealthy · Tidak SihatPeak 189Seremban
  • KuantanPahang134.3Unhealthy · Tidak SihatPeak 166Indera Mahkota Kuantan
  • George TownPulau Pinang92.2Moderate · SederhanaPeak 156Minden
  • IpohPerak124.2Unhealthy · Tidak SihatPeak 183Tasek Ipoh
  • KangarPerlis60.7Moderate · SederhanaPeak 93Kangar
  • Kota KinabaluSabah62.7Moderate · SederhanaPeak 81Kota Kinabalu
  • Shah AlamSelangor136.3Unhealthy · Tidak SihatPeak 180Shah Alam
  • Kuala TerengganuTerengganu95.8Moderate · SederhanaPeak 165Kuala 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 7 – 13 Oct 2026, the latest Wednesday-to-Tuesday reporting week in Malaysia Time. The national weekly average of 110.8 API falls in the Unhealthy 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,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 7 – 13 Oct 2026, Malaysia averaged an Air Pollutant Index of 110.8, which sits in the Unhealthy band (Tidak Sihat). 58% 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 47.2 (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 00:00 MYT, 7 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.