21 – 27 Oct 2026 · Malaysia

Malaysia weekly air quality

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

94.1Weekly mean AQI · Moderate

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

11303 eligible observations · 121 excluded.

-27.4 AQI compared with the previous week’s eligible mean of 121.5.

Peak AQI: 220 at IPD Serian · 25 Oct 2026, 15:00 (UTC+8).

Daily US AQI (PM2.5)

Low 16High 220AQI
0112.5225
21 Oct27 Oct
27 OctDaily mean · Peak 15268.6Avg AQI

Based on 1608 hourly readings.

24 observations excluded because their pollutant is unknown or unsupported.

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-21103.8Unhealthy for Sensitive Groups1821632 / 0
2026-10-22101.2Unhealthy for Sensitive Groups1751632 / 0
2026-10-23102.3Unhealthy for Sensitive Groups1661632 / 0
2026-10-24110.4Unhealthy for Sensitive Groups1891632 / 0
2026-10-2598Moderate2201602 / 30
2026-10-2673Moderate1961565 / 67
2026-10-2768.6Moderate1521608 / 24

Hourly means (UTC+8)

Day01234567891011121314151617181920212223
2026-10-21109.1108.3107.5106.9106.3105.7105.3104.9104.5104.2103.8103.3103.1102.4102101.7101.6101.4101.5101.5101.6101.8101.9101.8
2026-10-22101.7101.8101.8101.6101.7101.7101.5101.3101.1101.1101.4101.4101.2101.4101.5101.3101.1101.2101100.7100.5100.2100.3100.4
2026-10-23100.8101.1101.2101.4101.4101.5101.3101.3101.1101.1101.2101.1101.6101.9102.1102.3102.9103.1103.6103.8104.4104.8105.2105.5
2026-10-24106106.5106.9107.7107.9108.7109.5110.4110.9111.3111.6111.9112.1111.9112111.8111.7111.5111.6111.7111.8111.8111.6111.5
2026-10-25111110.2109.2108.2107.1105.5104102.2100.999.49897.297.296.195.19694.593.192.690.889.186.283.580.8
2026-10-26807877.376.475.774.975.274.774.275.373.97372.67271.170.469.869.969.87070.269.669.468.2
2026-10-2767.868.567.867.968.168.368.368.468.568.668.968.968.868.768.468.968.869.37069.868.869.168.768.5

Observation categories

Good: 787

Moderate: 6495

Unhealthy for Sensitive Groups: 2310

Unhealthy: 1690

Very Unhealthy: 21

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
Nilai137.3Unhealthy for Sensitive Groups173129.5168 / 0
Batu Muda137.1Unhealthy for Sensitive Groups167127.5168 / 0
Batu Pahat134.6Unhealthy for Sensitive Groups171120.4168 / 0
IPD Serian134.5Unhealthy for Sensitive Groups220118168 / 0
Seremban134.2Unhealthy for Sensitive Groups179127.1168 / 0
Kluang131.4Unhealthy for Sensitive Groups170111.9168 / 0
Pasir Gudang129.2Unhealthy for Sensitive Groups169115.5168 / 0
Sri Aman128Unhealthy for Sensitive Groups165116.4168 / 0
Bukit Rambai124.8Unhealthy for Sensitive Groups182116.6168 / 0
Tangkak124.7Unhealthy for Sensitive Groups167116.4168 / 0
Larkin123.8Unhealthy for Sensitive Groups177109.3168 / 0
JOHAN SETIA121.5Unhealthy for Sensitive Groups173109.9168 / 0
Samarahan120.9Unhealthy for Sensitive Groups194104.9168 / 0
Bandaraya Melaka118.9Unhealthy for Sensitive Groups170107.2165 / 3
Kuching118.5Unhealthy for Sensitive Groups203104.3168 / 0
Putrajaya118.3Unhealthy for Sensitive Groups165106.8165 / 3
Klang117.9Unhealthy for Sensitive Groups167109.1168 / 0
Cheras116.1Unhealthy for Sensitive Groups169102168 / 0
Alor Gajah115Unhealthy for Sensitive Groups160102.8168 / 0
Petaling Jaya114.3Unhealthy for Sensitive Groups166105.7168 / 0
Banting114.1Unhealthy for Sensitive Groups166100.2164 / 4
Segamat113.9Unhealthy for Sensitive Groups15696.7168 / 0
Paka113.9Unhealthy for Sensitive Groups15897.5168 / 0
Shah Alam111.8Unhealthy for Sensitive Groups169102.1168 / 0
Port Dickson111.2Unhealthy for Sensitive Groups15898.2168 / 0
Pengerang110.8Unhealthy for Sensitive Groups16092.5168 / 0
Sibu108.7Unhealthy for Sensitive Groups15890.9168 / 0
Kota Tinggi104.8Unhealthy for Sensitive Groups15286.3166 / 2
Bintulu101.8Unhealthy for Sensitive Groups13080168 / 0
Samalaju101.1Unhealthy for Sensitive Groups15282.8168 / 0
Rompin100.4Unhealthy for Sensitive Groups15481.7168 / 0
Sarikei98.9Moderate15984.6168 / 0
Kapit97.7Moderate15481.8168 / 0
Seri Manjung95.2Moderate13075.9168 / 0
Tasek Ipoh89.4Moderate12873.1168 / 0
Temerloh89.3Moderate13871.7168 / 0
Keningau87.9Moderate13271.8168 / 0
Tawau86Moderate10571.2168 / 0
Mukah86Moderate14270.8168 / 0
Jerantut83.4Moderate12665.1161 / 7
Balok Baru Kuantan82.9Moderate11768.8168 / 0
Seberang Perai80.4Moderate9967.5168 / 0
Kuala Selangor79.9Moderate11866.1168 / 0
Indera Mahkota Kuantan79.8Moderate11565.5168 / 0
Tanjung Malim78.6Moderate11363.5168 / 0
Pegoh Ipoh78.3Moderate12265.8168 / 0
Miri76.8Moderate10764.1168 / 0
Labuan75.9Moderate10564.2168 / 0
Kemaman74.2Moderate12061.4168 / 0
ILP Miri72.9Moderate10562.1168 / 0
Limbang67.9Moderate9956.7168 / 0
Kuala Terengganu67.8Moderate9357168 / 0
Politeknik Kota Kinabalu67.8Moderate10957.8168 / 0
Sandakan66.4Moderate8057168 / 0
Tanah Merah65.5Moderate9354.4168 / 0
Kota Kinabalu64.6Moderate10354.6168 / 0
Seberang Jaya63.8Moderate9052.9168 / 0
Kota Bharu63.4Moderate9152.9168 / 0
Taiping61.6Moderate9450.8168 / 0
Kimanis60.4Moderate10149.4168 / 0
Sungai Petani59.7Moderate8349.8168 / 0
Minden59.5Moderate8349.2168 / 0
Balik Pulau56.4Moderate8042.1133 / 35
Besut56.1Moderate7846.3168 / 0
Kulim Hi-Tech55.3Moderate8646.1166 / 2
Alor Setar55.1Moderate7541.4134 / 34
Kangar52.5Moderate8142.4160 / 8
Langkawi42.8Good6732.8145 / 23

States by US AQI

StateMean AQIOfficial API meanEligible / excluded
Negeri Sembilan127.5118.3504 / 0
Kuala Lumpur126.6114.7336 / 0
Johor121.7106.11342 / 2
Melaka119.6108.9501 / 3
Putrajaya118.3106.8165 / 3
Selangor109.998.91004 / 4
Sarawak101862184 / 0
Pahang87.270.6833 / 7
Perak80.665.8840 / 0
Terengganu7865.5672 / 0
Labuan75.964.2168 / 0
Sabah72.260.31008 / 0
Penang65.552.9637 / 35
Kelantan64.553.7336 / 0
Kedah53.542.5613 / 59
Perlis52.542.4160 / 8
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 21 – 27 Oct 2026, Malaysia recorded an overall average Air Pollutant Index (API) of 80.6 (Moderate).

National weekly average

80.6API

Moderate · Sederhana

28.1 API cleaner than the week before, which averaged 108.7

Daily averages56.6 – 97 APIWed → Tue
Explore the week
Week's highest reading
197IPD Serian, Sarawak15:00 MYT, 25 Oct 2026
Cleanest average
32.8Langkawi, KedahGood weekly average
Good to Moderate air
81%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 · 197

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 106.1 (Unhealthy), peak 170 across 8 stationsKedah: weekly average API 42.5 (Good), peak 71 across 4 stationsKelantan: weekly average API 53.6 (Moderate), peak 76 across 2 stationsMelaka: weekly average API 108.9 (Unhealthy), peak 174 across 3 stationsNegeri Sembilan: weekly average API 118.3 (Unhealthy), peak 172 across 3 stationsPahang: weekly average API 70.6 (Moderate), peak 153 across 5 stationsPerak: weekly average API 65.8 (Moderate), peak 96 across 5 stationsPerlis: weekly average API 42.4 (Good), peak 68 across 1 stationPenang: weekly average API 52.9 (Moderate), peak 80 across 4 stationsSelangor: weekly average API 98.9 (Moderate), peak 167 across 6 stationsTerengganu: weekly average API 65.6 (Moderate), peak 156 across 4 stationsKuala Lumpur: weekly average API 114.8 (Unhealthy), peak 164 across 2 stationsPutrajaya: weekly average API 106.8 (Unhealthy), peak 161 across 1 stationLangkawi, Kedah — weekly average API 32.8 (Good), peak 58Alor Setar, Kedah — weekly average API 41.4 (Good), peak 64Balik Pulau, Penang — weekly average API 42.1 (Good), peak 67Kangar, Perlis — weekly average API 42.4 (Good), peak 68Kulim Hi-Tech, Kedah — weekly average API 46.1 (Good), peak 71Besut, Terengganu — weekly average API 46.3 (Good), peak 66Minden, Penang — weekly average API 49.2 (Good), peak 69Sungai Petani, Kedah — weekly average API 49.8 (Good), peak 69Taiping, Perak — weekly average API 50.8 (Moderate), peak 77Seberang Jaya, Penang — weekly average API 52.9 (Moderate), peak 74Kota Bharu, Kelantan — weekly average API 52.9 (Moderate), peak 75Tanah Merah, Kelantan — weekly average API 54.4 (Moderate), peak 76Kuala Terengganu, Terengganu — weekly average API 57 (Moderate), peak 76Kemaman, Terengganu — weekly average API 61.4 (Moderate), peak 91Tanjung Malim, Perak — weekly average API 63.5 (Moderate), peak 87Jerantut, Pahang — weekly average API 65.1 (Moderate), peak 94Indera Mahkota Kuantan, Pahang — weekly average API 65.5 (Moderate), peak 88Pegoh Ipoh, Perak — weekly average API 65.8 (Moderate), peak 92Kuala Selangor, Selangor — weekly average API 66.1 (Moderate), peak 90Seberang Perai, Penang — weekly average API 67.5 (Moderate), peak 80Balok Baru Kuantan, Pahang — weekly average API 68.8 (Moderate), peak 89Temerloh, Pahang — weekly average API 71.7 (Moderate), peak 102Tasek Ipoh, Perak — weekly average API 73.1 (Moderate), peak 95Seri Manjung, Perak — weekly average API 75.9 (Moderate), peak 96Rompin, Pahang — weekly average API 81.7 (Moderate), peak 153Kota Tinggi, Johor — weekly average API 86.3 (Moderate), peak 152Pengerang, Johor — weekly average API 92.5 (Moderate), peak 158Segamat, Johor — weekly average API 96.7 (Moderate), peak 155Paka, Terengganu — weekly average API 97.5 (Moderate), peak 156Port Dickson, Negeri Sembilan — weekly average API 98.2 (Moderate), peak 156Banting, Selangor — weekly average API 100.2 (Unhealthy), peak 162Cheras, Kuala Lumpur — weekly average API 102 (Unhealthy), peak 164Shah Alam, Selangor — weekly average API 102.1 (Unhealthy), peak 164Alor Gajah, Melaka — weekly average API 102.8 (Unhealthy), peak 158Petaling Jaya, Selangor — weekly average API 105.7 (Unhealthy), peak 162Putrajaya, Putrajaya — weekly average API 106.8 (Unhealthy), peak 161Bandaraya Melaka, Melaka — weekly average API 107.2 (Unhealthy), peak 165Klang, Selangor — weekly average API 109.1 (Unhealthy), peak 163Larkin, Johor — weekly average API 109.3 (Unhealthy), peak 170JOHAN SETIA, Selangor — weekly average API 109.9 (Unhealthy), peak 167Kluang, Johor — weekly average API 111.9 (Unhealthy), peak 165Pasir Gudang, Johor — weekly average API 115.5 (Unhealthy), peak 164Tangkak, Johor — weekly average API 116.4 (Unhealthy), peak 163Bukit Rambai, Melaka — weekly average API 116.6 (Unhealthy), peak 174Batu Pahat, Johor — weekly average API 120.4 (Unhealthy), peak 166Seremban, Negeri Sembilan — weekly average API 127.1 (Unhealthy), peak 172Batu Muda, Kuala Lumpur — weekly average API 127.5 (Unhealthy), peak 163Nilai, Negeri Sembilan — weekly average API 129.5 (Unhealthy), peak 167

Peninsular Malaysia · Semenanjung Malaysia

Sabah: weekly average API 60.3 (Moderate), peak 97 across 6 stationsSarawak: weekly average API 86 (Moderate), peak 197 across 13 stationsLabuan: weekly average API 64.2 (Moderate), peak 83 across 1 stationKimanis, Sabah — weekly average API 49.4 (Good), peak 81Kota Kinabalu, Sabah — weekly average API 54.6 (Moderate), peak 82Limbang, Sarawak — weekly average API 56.7 (Moderate), peak 80Sandakan, Sabah — weekly average API 57 (Moderate), peak 67Politeknik Kota Kinabalu, Sabah — weekly average API 57.8 (Moderate), peak 85ILP Miri, Sarawak — weekly average API 62.1 (Moderate), peak 83Miri, Sarawak — weekly average API 64.1 (Moderate), peak 84Labuan, Labuan — weekly average API 64.2 (Moderate), peak 83Mukah, Sarawak — weekly average API 70.8 (Moderate), peak 117Tawau, Sabah — weekly average API 71.2 (Moderate), peak 83Keningau, Sabah — weekly average API 71.8 (Moderate), peak 97Bintulu, Sarawak — weekly average API 80 (Moderate), peak 96Kapit, Sarawak — weekly average API 81.8 (Moderate), peak 153Samalaju, Sarawak — weekly average API 82.8 (Moderate), peak 152Sarikei, Sarawak — weekly average API 84.6 (Moderate), peak 157Sibu, Sarawak — weekly average API 90.9 (Moderate), peak 156Kuching, Sarawak — weekly average API 104.3 (Unhealthy), peak 188Samarahan, Sarawak — weekly average API 104.9 (Unhealthy), peak 183Sri Aman, Sarawak — weekly average API 116.4 (Unhealthy), peak 161IPD Serian, Sarawak — weekly average API 118 (Unhealthy), peak 197IPD Serian · peak 197

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 97.3Wed 01:00 MYT — API 96.8Wed 02:00 MYT — API 96.2Wed 03:00 MYT — API 95.6Wed 04:00 MYT — API 94.9Wed 05:00 MYT — API 94.4Wed 06:00 MYT — API 94Wed 07:00 MYT — API 93.8Wed 08:00 MYT — API 93.7Wed 09:00 MYT — API 93.6Wed 10:00 MYT — API 93.3Wed 11:00 MYT — API 93Wed 12:00 MYT — API 92.8Wed 13:00 MYT — API 92Wed 14:00 MYT — API 91Wed 15:00 MYT — API 90.4Wed 16:00 MYT — API 90Wed 17:00 MYT — API 89.5Wed 18:00 MYT — API 89.7Wed 19:00 MYT — API 89.6Wed 20:00 MYT — API 89.6Wed 21:00 MYT — API 89.6Wed 22:00 MYT — API 89.3Wed 23:00 MYT — API 89.2ThuThu 00:00 MYT — API 89Thu 01:00 MYT — API 89Thu 02:00 MYT — API 88.9Thu 03:00 MYT — API 88.7Thu 04:00 MYT — API 88.7Thu 05:00 MYT — API 88.7Thu 06:00 MYT — API 88.4Thu 07:00 MYT — API 87.9Thu 08:00 MYT — API 87.6Thu 09:00 MYT — API 87.3Thu 10:00 MYT — API 87.4Thu 11:00 MYT — API 87.3Thu 12:00 MYT — API 87Thu 13:00 MYT — API 87.2Thu 14:00 MYT — API 87Thu 15:00 MYT — API 86.8Thu 16:00 MYT — API 86.3Thu 17:00 MYT — API 86.6Thu 18:00 MYT — API 86.4Thu 19:00 MYT — API 85.8Thu 20:00 MYT — API 85.4Thu 21:00 MYT — API 85.3Thu 22:00 MYT — API 85.6Thu 23:00 MYT — API 85.8FriFri 00:00 MYT — API 86.4Fri 01:00 MYT — API 87Fri 02:00 MYT — API 87.6Fri 03:00 MYT — API 88.2Fri 04:00 MYT — API 88.6Fri 05:00 MYT — API 88.7Fri 06:00 MYT — API 88.7Fri 07:00 MYT — API 88.6Fri 08:00 MYT — API 88.4Fri 09:00 MYT — API 88.2Fri 10:00 MYT — API 88.2Fri 11:00 MYT — API 88Fri 12:00 MYT — API 88.3Fri 13:00 MYT — API 88.5Fri 14:00 MYT — API 88.7Fri 15:00 MYT — API 88.5Fri 16:00 MYT — API 88.8Fri 17:00 MYT — API 88.7Fri 18:00 MYT — API 89.4Fri 19:00 MYT — API 89.9Fri 20:00 MYT — API 90.3Fri 21:00 MYT — API 90.5Fri 22:00 MYT — API 90.9Fri 23:00 MYT — API 91.3SatSat 00:00 MYT — API 91.9Sat 01:00 MYT — API 92.6Sat 02:00 MYT — API 93.2Sat 03:00 MYT — API 93.9Sat 04:00 MYT — API 94.2Sat 05:00 MYT — API 95.1Sat 06:00 MYT — API 96.2Sat 07:00 MYT — API 97.4Sat 08:00 MYT — API 97.5Sat 09:00 MYT — API 97.5Sat 10:00 MYT — API 97.6Sat 11:00 MYT — API 97.9Sat 12:00 MYT — API 98.2Sat 13:00 MYT — API 98.3Sat 14:00 MYT — API 98.6Sat 15:00 MYT — API 98.5Sat 16:00 MYT — API 99Sat 17:00 MYT — API 98.7Sat 18:00 MYT — API 98.6Sat 19:00 MYT — API 98.7Sat 20:00 MYT — API 98.7Sat 21:00 MYT — API 98.7Sat 22:00 MYT — API 98.3Sat 23:00 MYT — API 97.9SunSun 00:00 MYT — API 97Sun 01:00 MYT — API 95.8Sun 02:00 MYT — API 94.6Sun 03:00 MYT — API 93.6Sun 04:00 MYT — API 92.3Sun 05:00 MYT — API 90.3Sun 06:00 MYT — API 88.1Sun 07:00 MYT — API 86.3Sun 08:00 MYT — API 85.3Sun 09:00 MYT — API 84.2Sun 10:00 MYT — API 83.2Sun 11:00 MYT — API 82.2Sun 12:00 MYT — API 81.1Sun 13:00 MYT — API 79.7Sun 14:00 MYT — API 78.5Sun 15:00 MYT — API 77.7Sun 16:00 MYT — API 76.8Sun 17:00 MYT — API 75.7Sun 18:00 MYT — API 74.9Sun 19:00 MYT — API 74.4Sun 20:00 MYT — API 73.1Sun 21:00 MYT — API 71.6Sun 22:00 MYT — API 70.1Sun 23:00 MYT — API 68.4MonMon 00:00 MYT — API 66.8Mon 01:00 MYT — API 65.6Mon 02:00 MYT — API 65Mon 03:00 MYT — API 64.2Mon 04:00 MYT — API 63.6Mon 05:00 MYT — API 63Mon 06:00 MYT — API 62.4Mon 07:00 MYT — API 62Mon 08:00 MYT — API 61.6Mon 09:00 MYT — API 61.1Mon 10:00 MYT — API 60.4Mon 11:00 MYT — API 59.7Mon 12:00 MYT — API 59.5Mon 13:00 MYT — API 59Mon 14:00 MYT — API 58.4Mon 15:00 MYT — API 57.4Mon 16:00 MYT — API 56.5Mon 17:00 MYT — API 55.8Mon 18:00 MYT — API 55.5Mon 19:00 MYT — API 55.2Mon 20:00 MYT — API 55.1Mon 21:00 MYT — API 55Mon 22:00 MYT — API 54.9Mon 23:00 MYT — API 54.8TueTue 00:00 MYT — API 55Tue 01:00 MYT — API 55.3Tue 02:00 MYT — API 55.5Tue 03:00 MYT — API 55.8Tue 04:00 MYT — API 56.2Tue 05:00 MYT — API 56.4Tue 06:00 MYT — API 56.7Tue 07:00 MYT — API 56.8Tue 08:00 MYT — API 56.9Tue 09:00 MYT — API 57.1Tue 10:00 MYT — API 57.6Tue 11:00 MYT — API 57.6Tue 12:00 MYT — API 57.5Tue 13:00 MYT — API 57.4Tue 14:00 MYT — API 57.1Tue 15:00 MYT — API 56.9Tue 16:00 MYT — API 56.8Tue 17:00 MYT — API 56.8Tue 18:00 MYT — API 56.9Tue 19:00 MYT — API 56.8Tue 20:00 MYT — API 56.6Tue 21:00 MYT — API 56.4Tue 22:00 MYT — API 55.9Tue 23:00 MYT — API 55.70003060912151821
0255075100125APIBrighter cells ran hazier than the rest of this week (54.8 – 99 API)

Haziest hour of the week: Sat at 16:00 MYT, averaging API 99 nationwide.

View the hourly figures as a table
National average API by hour, Malaysia Time
Day000102030405060708091011121314151617181920212223
Wed97.396.896.295.694.994.49493.893.793.693.39392.8929190.49089.589.789.689.689.689.389.2
Thu898988.988.788.788.788.487.987.687.387.487.38787.28786.886.386.686.485.885.485.385.685.8
Fri86.48787.688.288.688.788.788.688.488.288.28888.388.588.788.588.888.789.489.990.390.590.991.3
Sat91.992.693.293.994.295.196.297.497.597.597.697.998.298.398.698.59998.798.698.798.798.798.397.9
Sun9795.894.693.692.390.388.186.385.384.283.282.281.179.778.577.776.875.774.974.473.171.670.168.4
Mon66.865.66564.263.66362.46261.661.160.459.759.55958.457.456.555.855.555.255.15554.954.8
Tue5555.355.555.856.256.456.756.856.957.157.657.657.557.457.156.956.856.856.956.856.656.455.955.7

How the readings split

Pecahan bacaan mengikut kategori IPU

Good: 17% (1,890 readings)Moderate: 64% (7,297 readings)Unhealthy: 20% (2,237 readings)64%Moderate
  • GoodBaik17%1,890
  • ModerateSederhana64%7,297
  • UnhealthyTidak Sihat20%2,237
  • Very UnhealthySangat Tidak Sihat0%0
  • 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. Negeri Sembilan118.3Unhealthy · 3 stations
  2. Kuala Lumpur114.8Unhealthy · 2 stations
  3. Melaka108.9Unhealthy · 3 stations
  4. Putrajaya106.8Unhealthy · 1 station
  5. Johor106.1Unhealthy · 8 stations
  6. Selangor98.9Moderate · 6 stations
  7. Sarawak86Moderate · 13 stations
  8. Pahang70.6Moderate · 5 stations
  9. Perak65.8Moderate · 5 stations
  10. Terengganu65.6Moderate · 4 stations
  11. Labuan64.2Moderate · 1 station
  12. Sabah60.3Moderate · 6 stations
  13. Kelantan53.6Moderate · 2 stations
  14. Penang52.9Moderate · 4 stations
  15. Kedah42.5Good · 4 stations
  16. Perlis42.4Good · 1 station

Cleanest air of the week

Lima stesen dengan purata IPU terendah

Scale 0 – 200
  1. Langkawi32.8avg
    Kedah
    13Good58
  2. Alor Setar41.4avg
    Kedah
    17Good64
  3. Pulau Pinang
    12Good67
  4. Kangar42.4avg
    Perlis
    20Good68
  5. Kedah
    16Good71

Highest readings of the week

Lima stesen dengan bacaan IPU tertinggi

Scale 0 – 200
  1. IPD Serian197peak
    Sarawak
    57Unhealthy197
  2. Kuching188peak
    Sarawak
    60Unhealthy188
  3. Samarahan183peak
    Sarawak
    66Unhealthy183
  4. Melaka
    35Unhealthy174
  5. Seremban172peak
    Negeri Sembilan
    57Unhealthy172

Major cities

Purata dan puncak mingguan bagi bandar utama Malaysia

  • Johor BahruJohor109.3Unhealthy · Tidak SihatPeak 170Larkin
  • Kuala LumpurKuala Lumpur102Unhealthy · Tidak SihatPeak 164Cheras
  • KuchingSarawak104.3Unhealthy · Tidak SihatPeak 188Kuching
  • Alor SetarKedah41.4Good · BaikPeak 64Alor Setar
  • Kota BharuKelantan52.9Moderate · SederhanaPeak 75Kota Bharu
  • MelakaMelaka107.2Unhealthy · Tidak SihatPeak 165Bandaraya Melaka
  • SerembanNegeri Sembilan127.1Unhealthy · Tidak SihatPeak 172Seremban
  • KuantanPahang65.5Moderate · SederhanaPeak 88Indera Mahkota Kuantan
  • George TownPulau Pinang49.2Good · BaikPeak 69Minden
  • IpohPerak73.1Moderate · SederhanaPeak 95Tasek Ipoh
  • KangarPerlis42.4Good · BaikPeak 68Kangar
  • Kota KinabaluSabah54.6Moderate · SederhanaPeak 82Kota Kinabalu
  • Shah AlamSelangor102.1Unhealthy · Tidak SihatPeak 164Shah Alam
  • Kuala TerengganuTerengganu57Moderate · SederhanaPeak 76Kuala 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 21 – 27 Oct 2026, the latest Wednesday-to-Tuesday reporting week in Malaysia Time. The national weekly average of 80.6 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 197 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 21 – 27 Oct 2026, Malaysia averaged an Air Pollutant Index of 80.6, which sits in the Moderate band (Sederhana). 81% 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 32.8 (Good).

Which area had the worst haze?

The single highest reading of the week was API 197 (Unhealthy) at IPD Serian, Sarawak, recorded at 15:00 MYT, 25 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.