16 – 22 Sep 2026 · Malaysia

Malaysia weekly air quality

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

111.3Weekly mean AQI · Unhealthy for Sensitive Groups

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

7963 eligible observations · 3414 excluded.

Peak AQI: 222 at JOHAN SETIA · 18 Sept 2026, 07:00 (UTC+8).

Daily US AQI (PM2.5)

Low 17High 222AQI
0112.5225
16 Sept22 Sept
22 SeptDaily mean · Peak 18998.9Avg AQI

Based on 1632 hourly readings.

5 of 7 days recorded.

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-16—Unavailable—0 / 1632
2026-09-17—Unavailable—0 / 1632
2026-09-18127.8Unhealthy for Sensitive Groups2221496 / 135
2026-09-19108.2Unhealthy for Sensitive Groups1901609 / 6
2026-09-20115.2Unhealthy for Sensitive Groups1941606 / 2
2026-09-21108.1Unhealthy for Sensitive Groups1811620 / 7
2026-09-2298.9Moderate1891632 / 0

Hourly means (UTC+8)

Day01234567891011121314151617181920212223
2026-09-16————————————————————————
2026-09-17————————————————————————
2026-09-18——130.1130.6130.9131.1131.3131.5131.4131130.4129.9129.7129128.7127.9126.8125.6125124.2122.9121.9120.9119.9
2026-09-19118.7117.6116.3114.8113.3111.6110.1108106.8106.3105.7105.5104.9104.3103.3103104.5104.8106.2106.6104.8105.7106.7107.4
2026-09-20108.3109.1110.1110.8111.9112.8113.7114.1114.7114.9115.4115.8116.2116.5117.4118.1118.4118.8118.8118.6118.2118.7117.5115.4
2026-09-21114.6113.7112.9112.3111.4110.3109.7109108.5108.2107.8107.4107.4106.8106.3105.6106.4106105.7105.2104.8104.7104.7103.8
2026-09-22103.9103.8103.9103.9103.8103.8103.5103.3102.9102.1101.2100.599.29897.195.894.694.193.693.39393.192.592

Observation categories

Good: 230

Moderate: 3280

Unhealthy for Sensitive Groups: 2447

Unhealthy: 1986

Very Unhealthy: 20

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 Serian177.1Unhealthy196150.4118 / 50
Kuching172.4Unhealthy210149.5118 / 50
Samarahan168.2Unhealthy197144118 / 50
Sri Aman166.6Unhealthy189136.3118 / 50
Sibu165.1Unhealthy188134.4118 / 50
Nilai155.7Unhealthy192152.9118 / 50
Bintulu155.5Unhealthy166124.3118 / 50
Putrajaya154.9Unhealthy185153.6118 / 50
Shah Alam152.4Unhealthy179151.5118 / 50
JOHAN SETIA151.9Unhealthy222145.4118 / 50
Cheras151.3Unhealthy174151.4118 / 50
Sarikei149.5Unhealthy for Sensitive Groups170112.5118 / 50
Mukah149.1Unhealthy for Sensitive Groups179103.872 / 49
Kapit143.1Unhealthy for Sensitive Groups181104.9118 / 50
Petaling Jaya139.6Unhealthy for Sensitive Groups170128.4118 / 50
Bukit Rambai138.4Unhealthy for Sensitive Groups166131.9118 / 50
Seremban138.1Unhealthy for Sensitive Groups178134.7118 / 50
Samalaju138.1Unhealthy for Sensitive Groups160102.4118 / 50
Batu Pahat136.8Unhealthy for Sensitive Groups156127.4118 / 50
Batu Muda134.5Unhealthy for Sensitive Groups175129.1118 / 50
Larkin134.4Unhealthy for Sensitive Groups166112.7118 / 50
Tangkak132.2Unhealthy for Sensitive Groups163123.5118 / 50
Bandaraya Melaka128.4Unhealthy for Sensitive Groups155119.5118 / 50
Segamat126.5Unhealthy for Sensitive Groups165112.2118 / 50
Banting125.3Unhealthy for Sensitive Groups173120.2118 / 50
Klang123.3Unhealthy for Sensitive Groups166115.9118 / 50
Miri122.3Unhealthy for Sensitive Groups16090.3118 / 50
Seri Manjung122.1Unhealthy for Sensitive Groups185128.4118 / 50
Pasir Gudang121.1Unhealthy for Sensitive Groups158102.9118 / 50
Alor Gajah121Unhealthy for Sensitive Groups170114.5118 / 50
Port Dickson120.2Unhealthy for Sensitive Groups163108.7118 / 50
Politeknik Kota Kinabalu119.1Unhealthy for Sensitive Groups15989118 / 50
Kluang116.2Unhealthy for Sensitive Groups154105.4118 / 50
ILP Miri112.8Unhealthy for Sensitive Groups15579.6118 / 50
Tanjung Malim109.5Unhealthy for Sensitive Groups154111.2118 / 50
Kuala Selangor108.8Unhealthy for Sensitive Groups150101.1118 / 50
Tawau106.8Unhealthy for Sensitive Groups14882.9118 / 50
Limbang103.6Unhealthy for Sensitive Groups14473118 / 50
Labuan103.1Unhealthy for Sensitive Groups13672.7118 / 50
Rompin100.9Unhealthy for Sensitive Groups14384.3118 / 50
Kota Tinggi100.7Unhealthy for Sensitive Groups14381.2118 / 50
Indera Mahkota Kuantan100.7Unhealthy for Sensitive Groups14191118 / 50
Balok Baru Kuantan100.5Unhealthy for Sensitive Groups14290.1118 / 50
Kota Kinabalu99.8Moderate15067.3118 / 50
Tasek Ipoh98.5Moderate188112.9118 / 50
Pengerang95.4Moderate12477.7118 / 50
Pegoh Ipoh95.1Moderate156102.6118 / 50
Temerloh92.7Moderate15695.9118 / 50
Kemaman87.4Moderate11884.7118 / 50
Jerantut86.5Moderate15495118 / 50
Paka85.5Moderate10783.1118 / 50
Kuala Terengganu82.1Moderate14093.6118 / 50
Keningau81.5Moderate10962.8118 / 50
Sandakan79.6Moderate9959.9118 / 50
Taiping78.8Moderate14893.1118 / 50
Kimanis74.8Moderate8862.2118 / 50
Minden71.9Moderate13888.9118 / 50
Kota Bharu71.2Moderate12070.3118 / 50
Sungai Petani70.9Moderate15188.6118 / 50
Seberang Jaya69.5Moderate13286.5118 / 50
Seberang Perai68.6Moderate13285.3118 / 50
Kulim Hi-Tech64.5Moderate11177.3118 / 50
Besut62.4Moderate10568.8116 / 52
Tanah Merah60.2Moderate9371.5118 / 50
Alor Setar59Moderate11162.4118 / 50
Balik Pulau56.9Moderate8472.2111 / 57
Kangar46.6Good8049.7116 / 52
Langkawi41.5Good7246.5114 / 54

States by US AQI

StateMean AQIOfficial API meanEligible / excluded
Putrajaya154.9153.6118 / 50
Sarawak147.9116.11488 / 649
Kuala Lumpur142.9140.3236 / 100
Negeri Sembilan138132.1354 / 150
Selangor133.6127.1708 / 300
Melaka129.3122354 / 150
Johor120.4105.4944 / 400
Labuan103.172.7118 / 50
Perak100.8109.6590 / 250
Pahang96.391.2590 / 250
Sabah93.670.7708 / 300
Terengganu79.482.6470 / 202
Penang66.983.2465 / 207
Kelantan65.770.9236 / 100
Kedah59.168.7468 / 204
Perlis46.649.7116 / 52
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 16 – 22 Sep 2026, Malaysia recorded an overall average Air Pollutant Index (API) of 102 (Unhealthy).

National weekly average

102API

Unhealthy · Tidak Sihat

9.3 API hazier than the week before, which averaged 92.7

Daily averages85.5 – 118 APIWed → Tue
Explore the week
Week's highest reading
198JOHAN SETIA, Selangor08:00 MYT, 18 Sept 2026
Cleanest average
46.5Langkawi, KedahGood weekly average
Good to Moderate air
62%of all hourly readings11,377 readings in total
Stations reporting
68of 68 DOE stations16 states and territories

Where the haze sat

Taburan kualiti udara mengikut negeri dan stesen

Peak: JOHAN SETIA · 198

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 105.4 (Unhealthy), peak 169 across 8 stationsKedah: weekly average API 68.7 (Moderate), peak 160 across 4 stationsKelantan: weekly average API 70.9 (Moderate), peak 155 across 2 stationsMelaka: weekly average API 122 (Unhealthy), peak 165 across 3 stationsNegeri Sembilan: weekly average API 132.1 (Unhealthy), peak 181 across 3 stationsPahang: weekly average API 91.3 (Moderate), peak 169 across 5 stationsPerak: weekly average API 109.6 (Unhealthy), peak 188 across 5 stationsPerlis: weekly average API 49.7 (Good), peak 90 across 1 stationPenang: weekly average API 83.2 (Moderate), peak 167 across 4 stationsSelangor: weekly average API 127.1 (Unhealthy), peak 198 across 6 stationsTerengganu: weekly average API 82.6 (Moderate), peak 164 across 4 stationsKuala Lumpur: weekly average API 140.3 (Unhealthy), peak 180 across 2 stationsPutrajaya: weekly average API 153.6 (Unhealthy), peak 176 across 1 stationLangkawi, Kedah — weekly average API 46.5 (Good), peak 100Kangar, Perlis — weekly average API 49.7 (Good), peak 90Alor Setar, Kedah — weekly average API 62.4 (Moderate), peak 135Besut, Terengganu — weekly average API 68.8 (Moderate), peak 151Kota Bharu, Kelantan — weekly average API 70.3 (Moderate), peak 123Tanah Merah, Kelantan — weekly average API 71.5 (Moderate), peak 155Balik Pulau, Penang — weekly average API 72.2 (Moderate), peak 165Kulim Hi-Tech, Kedah — weekly average API 77.3 (Moderate), peak 156Pengerang, Johor — weekly average API 77.7 (Moderate), peak 99Kota Tinggi, Johor — weekly average API 81.2 (Moderate), peak 147Paka, Terengganu — weekly average API 83.1 (Moderate), peak 155Rompin, Pahang — weekly average API 84.3 (Moderate), peak 136Kemaman, Terengganu — weekly average API 84.7 (Moderate), peak 159Seberang Perai, Penang — weekly average API 85.3 (Moderate), peak 160Seberang Jaya, Penang — weekly average API 86.5 (Moderate), peak 162Sungai Petani, Kedah — weekly average API 88.6 (Moderate), peak 160Minden, Penang — weekly average API 88.9 (Moderate), peak 167Balok Baru Kuantan, Pahang — weekly average API 90.1 (Moderate), peak 155Indera Mahkota Kuantan, Pahang — weekly average API 91 (Moderate), peak 163Taiping, Perak — weekly average API 93.1 (Moderate), peak 160Kuala Terengganu, Terengganu — weekly average API 93.6 (Moderate), peak 164Jerantut, Pahang — weekly average API 95 (Moderate), peak 169Temerloh, Pahang — weekly average API 95.9 (Moderate), peak 166Kuala Selangor, Selangor — weekly average API 101.1 (Unhealthy), peak 167Pegoh Ipoh, Perak — weekly average API 102.6 (Unhealthy), peak 160Pasir Gudang, Johor — weekly average API 102.9 (Unhealthy), peak 156Kluang, Johor — weekly average API 105.4 (Unhealthy), peak 153Port Dickson, Negeri Sembilan — weekly average API 108.7 (Unhealthy), peak 161Tanjung Malim, Perak — weekly average API 111.2 (Unhealthy), peak 166Segamat, Johor — weekly average API 112.2 (Unhealthy), peak 161Larkin, Johor — weekly average API 112.7 (Unhealthy), peak 162Tasek Ipoh, Perak — weekly average API 112.9 (Unhealthy), peak 188Alor Gajah, Melaka — weekly average API 114.5 (Unhealthy), peak 165Klang, Selangor — weekly average API 115.9 (Unhealthy), peak 168Bandaraya Melaka, Melaka — weekly average API 119.5 (Unhealthy), peak 154Banting, Selangor — weekly average API 120.2 (Unhealthy), peak 167Tangkak, Johor — weekly average API 123.5 (Unhealthy), peak 169Batu Pahat, Johor — weekly average API 127.4 (Unhealthy), peak 155Seri Manjung, Perak — weekly average API 128.4 (Unhealthy), peak 181Petaling Jaya, Selangor — weekly average API 128.4 (Unhealthy), peak 169Batu Muda, Kuala Lumpur — weekly average API 129.1 (Unhealthy), peak 173Bukit Rambai, Melaka — weekly average API 131.9 (Unhealthy), peak 164Seremban, Negeri Sembilan — weekly average API 134.7 (Unhealthy), peak 175JOHAN SETIA, Selangor — weekly average API 145.4 (Unhealthy), peak 198Cheras, Kuala Lumpur — weekly average API 151.4 (Unhealthy), peak 180Shah Alam, Selangor — weekly average API 151.5 (Unhealthy), peak 175Nilai, Negeri Sembilan — weekly average API 152.9 (Unhealthy), peak 181Putrajaya, Putrajaya — weekly average API 153.6 (Unhealthy), peak 176JOHAN SETIA · peak 198

Peninsular Malaysia · Semenanjung Malaysia

Sabah: weekly average API 70.7 (Moderate), peak 157 across 6 stationsSarawak: weekly average API 116.1 (Unhealthy), peak 192 across 13 stationsLabuan: weekly average API 72.7 (Moderate), peak 99 across 1 stationSandakan, Sabah — weekly average API 59.9 (Moderate), peak 80Kimanis, Sabah — weekly average API 62.2 (Moderate), peak 76Keningau, Sabah — weekly average API 62.8 (Moderate), peak 85Kota Kinabalu, Sabah — weekly average API 67.3 (Moderate), peak 149Labuan, Labuan — weekly average API 72.7 (Moderate), peak 99Limbang, Sarawak — weekly average API 73 (Moderate), peak 127ILP Miri, Sarawak — weekly average API 79.6 (Moderate), peak 154Tawau, Sabah — weekly average API 82.9 (Moderate), peak 141Politeknik Kota Kinabalu, Sabah — weekly average API 89 (Moderate), peak 157Miri, Sarawak — weekly average API 90.3 (Moderate), peak 158Samalaju, Sarawak — weekly average API 102.4 (Unhealthy), peak 158Mukah, Sarawak — weekly average API 103.8 (Unhealthy), peak 172Kapit, Sarawak — weekly average API 104.9 (Unhealthy), peak 173Sarikei, Sarawak — weekly average API 112.5 (Unhealthy), peak 165Bintulu, Sarawak — weekly average API 124.3 (Unhealthy), peak 162Sibu, Sarawak — weekly average API 134.4 (Unhealthy), peak 178Sri Aman, Sarawak — weekly average API 136.3 (Unhealthy), peak 179Samarahan, Sarawak — weekly average API 144 (Unhealthy), peak 185Kuching, Sarawak — weekly average API 149.5 (Unhealthy), peak 192IPD Serian, Sarawak — weekly average API 150.4 (Unhealthy), peak 184

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 123.8Wed 01:00 MYT — API 123.2Wed 02:00 MYT — API 122.9Wed 03:00 MYT — API 122.7Wed 04:00 MYT — API 122.7Wed 05:00 MYT — API 122.8Wed 06:00 MYT — API 122.6Wed 07:00 MYT — API 122.3Wed 08:00 MYT — API 122.2Wed 09:00 MYT — API 122.2Wed 10:00 MYT — API 121.3Wed 11:00 MYT — API 120.4Wed 12:00 MYT — API 119.4Wed 13:00 MYT — API 118.4Wed 14:00 MYT — API 117.8Wed 15:00 MYT — API 117.1Wed 16:00 MYT — API 115.8Wed 17:00 MYT — API 114.5Wed 18:00 MYT — API 112.7Wed 19:00 MYT — API 111.1Wed 20:00 MYT — API 110.2Wed 21:00 MYT — API 109.3Wed 22:00 MYT — API 108.3Wed 23:00 MYT — API 107.6ThuThu 00:00 MYT — API 107Thu 01:00 MYT — API 106.3Thu 02:00 MYT — API 105.6Thu 03:00 MYT — API 105.1Thu 04:00 MYT — API 104.7Thu 05:00 MYT — API 104.4Thu 06:00 MYT — API 104.3Thu 07:00 MYT — API 104.4Thu 08:00 MYT — API 104Thu 09:00 MYT — API 103.6Thu 10:00 MYT — API 104.5Thu 11:00 MYT — API 105.4Thu 12:00 MYT — API 106.1Thu 13:00 MYT — API 107.6Thu 14:00 MYT — API 108.1Thu 15:00 MYT — API 109.2Thu 16:00 MYT — API 110.1Thu 17:00 MYT — API 111Thu 18:00 MYT — API 111.8Thu 19:00 MYT — API 113.1Thu 20:00 MYT — API 114Thu 21:00 MYT — API 115Thu 22:00 MYT — API 115.2Thu 23:00 MYT — API 115.4FriFri 00:00 MYT — API 116.3Fri 01:00 MYT — API 116.7Fri 02:00 MYT — API 117.2Fri 03:00 MYT — API 117.7Fri 04:00 MYT — API 117.8Fri 05:00 MYT — API 118Fri 06:00 MYT — API 117.8Fri 07:00 MYT — API 117.9Fri 08:00 MYT — API 117.9Fri 09:00 MYT — API 117.8Fri 10:00 MYT — API 117.7Fri 11:00 MYT — API 117.6Fri 12:00 MYT — API 117.9Fri 13:00 MYT — API 117.4Fri 14:00 MYT — API 117.2Fri 15:00 MYT — API 116.3Fri 16:00 MYT — API 115Fri 17:00 MYT — API 113.9Fri 18:00 MYT — API 113.6Fri 19:00 MYT — API 113.1Fri 20:00 MYT — API 111.8Fri 21:00 MYT — API 110.4Fri 22:00 MYT — API 109Fri 23:00 MYT — API 107.4SatSat 00:00 MYT — API 106.1Sat 01:00 MYT — API 104.9Sat 02:00 MYT — API 103.8Sat 03:00 MYT — API 102Sat 04:00 MYT — API 99.7Sat 05:00 MYT — API 97.6Sat 06:00 MYT — API 95.4Sat 07:00 MYT — API 92.8Sat 08:00 MYT — API 91.7Sat 09:00 MYT — API 91Sat 10:00 MYT — API 90.6Sat 11:00 MYT — API 90.1Sat 12:00 MYT — API 89.1Sat 13:00 MYT — API 87.7Sat 14:00 MYT — API 86.4Sat 15:00 MYT — API 86.4Sat 16:00 MYT — API 87Sat 17:00 MYT — API 87.3Sat 18:00 MYT — API 87.9Sat 19:00 MYT — API 88.7Sat 20:00 MYT — API 89.5Sat 21:00 MYT — API 90.3Sat 22:00 MYT — API 91.3Sat 23:00 MYT — API 91.8SunSun 00:00 MYT — API 92.6Sun 01:00 MYT — API 93Sun 02:00 MYT — API 93.8Sun 03:00 MYT — API 94.1Sun 04:00 MYT — API 95Sun 05:00 MYT — API 95.7Sun 06:00 MYT — API 96.6Sun 07:00 MYT — API 97Sun 08:00 MYT — API 97.3Sun 09:00 MYT — API 97.5Sun 10:00 MYT — API 98.1Sun 11:00 MYT — API 100Sun 12:00 MYT — API 100.7Sun 13:00 MYT — API 101Sun 14:00 MYT — API 102.7Sun 15:00 MYT — API 103.9Sun 16:00 MYT — API 104.8Sun 17:00 MYT — API 105.5Sun 18:00 MYT — API 105.6Sun 19:00 MYT — API 105.4Sun 20:00 MYT — API 105.2Sun 21:00 MYT — API 104.6Sun 22:00 MYT — API 103.4Sun 23:00 MYT — API 102.6MonMon 00:00 MYT — API 102Mon 01:00 MYT — API 101.6Mon 02:00 MYT — API 100.8Mon 03:00 MYT — API 100Mon 04:00 MYT — API 99.1Mon 05:00 MYT — API 97.8Mon 06:00 MYT — API 96.9Mon 07:00 MYT — API 95.7Mon 08:00 MYT — API 95Mon 09:00 MYT — API 94.1Mon 10:00 MYT — API 93.6Mon 11:00 MYT — API 92.7Mon 12:00 MYT — API 92.6Mon 13:00 MYT — API 92.2Mon 14:00 MYT — API 91.7Mon 15:00 MYT — API 90.6Mon 16:00 MYT — API 90.6Mon 17:00 MYT — API 90.8Mon 18:00 MYT — API 90.6Mon 19:00 MYT — API 90Mon 20:00 MYT — API 89.7Mon 21:00 MYT — API 89.7Mon 22:00 MYT — API 89.9Mon 23:00 MYT — API 90.2TueTue 00:00 MYT — API 90.4Tue 01:00 MYT — API 90.4Tue 02:00 MYT — API 90.5Tue 03:00 MYT — API 90.5Tue 04:00 MYT — API 90.5Tue 05:00 MYT — API 90.5Tue 06:00 MYT — API 90.1Tue 07:00 MYT — API 89.4Tue 08:00 MYT — API 88.3Tue 09:00 MYT — API 87.1Tue 10:00 MYT — API 86.2Tue 11:00 MYT — API 85.4Tue 12:00 MYT — API 84.5Tue 13:00 MYT — API 83.8Tue 14:00 MYT — API 83.3Tue 15:00 MYT — API 82.5Tue 16:00 MYT — API 81.4Tue 17:00 MYT — API 81.3Tue 18:00 MYT — API 81.3Tue 19:00 MYT — API 81.3Tue 20:00 MYT — API 81.3Tue 21:00 MYT — API 81.3Tue 22:00 MYT — API 81Tue 23:00 MYT — API 80.60003060912151821
050100150APIBrighter cells ran hazier than the rest of this week (80.6 – 123.8 API)

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

View the hourly figures as a table
National average API by hour, Malaysia Time
Day000102030405060708091011121314151617181920212223
Wed123.8123.2122.9122.7122.7122.8122.6122.3122.2122.2121.3120.4119.4118.4117.8117.1115.8114.5112.7111.1110.2109.3108.3107.6
Thu107106.3105.6105.1104.7104.4104.3104.4104103.6104.5105.4106.1107.6108.1109.2110.1111111.8113.1114115115.2115.4
Fri116.3116.7117.2117.7117.8118117.8117.9117.9117.8117.7117.6117.9117.4117.2116.3115113.9113.6113.1111.8110.4109107.4
Sat106.1104.9103.810299.797.695.492.891.79190.690.189.187.786.486.48787.387.988.789.590.391.391.8
Sun92.69393.894.19595.796.69797.397.598.1100100.7101102.7103.9104.8105.5105.6105.4105.2104.6103.4102.6
Mon102101.6100.810099.197.896.995.79594.193.692.792.692.291.790.690.690.890.69089.789.789.990.2
Tue90.490.490.590.590.590.590.189.488.387.186.285.484.583.883.382.581.481.381.381.381.381.38180.6

How the readings split

Pecahan bacaan mengikut kategori IPU

Good: 8% (912 readings)Moderate: 54% (6,114 readings)Unhealthy: 38% (4,351 readings)54%Moderate
  • GoodBaik8%912
  • ModerateSederhana54%6,114
  • UnhealthyTidak Sihat38%4,351
  • Very UnhealthySangat Tidak Sihat0%0
  • HazardousBerbahaya0%0

Based on 11,377 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. Putrajaya153.6Unhealthy · 1 station
  2. Kuala Lumpur140.3Unhealthy · 2 stations
  3. Negeri Sembilan132.1Unhealthy · 3 stations
  4. Selangor127.1Unhealthy · 6 stations
  5. Melaka122Unhealthy · 3 stations
  6. Sarawak116.1Unhealthy · 13 stations
  7. Perak109.6Unhealthy · 5 stations
  8. Johor105.4Unhealthy · 8 stations
  9. Pahang91.3Moderate · 5 stations
  10. Penang83.2Moderate · 4 stations
  11. Terengganu82.6Moderate · 4 stations
  12. Labuan72.7Moderate · 1 station
  13. Kelantan70.9Moderate · 2 stations
  14. Sabah70.7Moderate · 6 stations
  15. Kedah68.7Moderate · 4 stations
  16. Perlis49.7Good · 1 station

Cleanest air of the week

Lima stesen dengan purata IPU terendah

Scale 0 – 200
  1. Langkawi46.5avg
    Kedah
    13Good100
  2. Kangar49.7avg
    Perlis
    18Good90
  3. Sandakan59.9avg
    Sabah
    35Moderate80
  4. Kimanis62.2avg
    Sabah
    49Moderate76
  5. Alor Setar62.4avg
    Kedah
    22Moderate135

Highest readings of the week

Lima stesen dengan bacaan IPU tertinggi

Scale 0 – 200
  1. Selangor
    75Unhealthy198
  2. Kuching192peak
    Sarawak
    69Unhealthy192
  3. Tasek Ipoh188peak
    Perak
    44Unhealthy188
  4. Samarahan185peak
    Sarawak
    63Unhealthy185
  5. IPD Serian184peak
    Sarawak
    59Unhealthy184

Major cities

Purata dan puncak mingguan bagi bandar utama Malaysia

  • Johor BahruJohor112.7Unhealthy · Tidak SihatPeak 162Larkin
  • Kuala LumpurKuala Lumpur151.4Unhealthy · Tidak SihatPeak 180Cheras
  • KuchingSarawak149.5Unhealthy · Tidak SihatPeak 192Kuching
  • Alor SetarKedah62.4Moderate · SederhanaPeak 135Alor Setar
  • Kota BharuKelantan70.3Moderate · SederhanaPeak 123Kota Bharu
  • MelakaMelaka119.5Unhealthy · Tidak SihatPeak 154Bandaraya Melaka
  • SerembanNegeri Sembilan134.7Unhealthy · Tidak SihatPeak 175Seremban
  • KuantanPahang91Moderate · SederhanaPeak 163Indera Mahkota Kuantan
  • George TownPulau Pinang88.9Moderate · SederhanaPeak 167Minden
  • IpohPerak112.9Unhealthy · Tidak SihatPeak 188Tasek Ipoh
  • KangarPerlis49.7Good · BaikPeak 90Kangar
  • Kota KinabaluSabah67.3Moderate · SederhanaPeak 149Kota Kinabalu
  • Shah AlamSelangor151.5Unhealthy · Tidak SihatPeak 175Shah Alam
  • Kuala TerengganuTerengganu93.6Moderate · SederhanaPeak 164Kuala 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 16 – 22 Sep 2026, the latest Wednesday-to-Tuesday reporting week in Malaysia Time. The national weekly average of 102 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 198 API at JOHAN SETIA in Selangor. 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,377 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 16 – 22 Sep 2026, Malaysia averaged an Air Pollutant Index of 102, which sits in the Unhealthy band (Tidak Sihat). 62% 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 46.5 (Good).

Which area had the worst haze?

The single highest reading of the week was API 198 (Unhealthy) at JOHAN SETIA, Selangor, recorded at 08:00 MYT, 18 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.