Kabut

How Kabut measures the air

Last updated: 30 September 2026

This page explains where every number on Kabut comes from, how it is turned into the colour and the word you see, and what the numbers cannot tell you. If a reading on the site ever disagrees with this page, the page is what we intended and the reading is a bug — please tell us at hello@kabut.net.

One reading per city, every hour

A scheduled job runs on our server once an hour. For each tracked city it collects the latest data, computes the index, and stores the result. The website and the app never contact the data providers themselves; they read the stored result from our own server. That is why every screen shows when the data was last synced, and why a failed sync shows a notice and the previous hour's numbers rather than a blank page.

Each city's reading comes from one of two kinds of source, and the city page says which:

The hourly forecast on each city page is always the model's, because stations do not forecast.

From PM2.5 to a number

During the haze season, the pollutant that matters is PM2.5 — particles smaller than 2.5 micrometres, small enough to reach deep into the lungs, and the main component of smoke. Kabut's headline number is the US AQI computed from PM2.5, using the breakpoints of the US Environmental Protection Agency's 2024 revision.

WAQI publishes its station values as sub-indices rather than concentrations, so Kabut converts PM2.5 back to µg/m³ through the same EPA table before storing it. A station's other pollutants cannot be converted the same way, so they are left blank rather than shown as concentrations they are not.

The index is calculated once, on the server, and stored with the reading. The website and the app only colour it; they never recalculate it.

The six classes

Every reading falls into one of six classes. The colour, the word and the advice on each page come from this table and nothing else.

ClassUS AQIPM2.5 µg/m³
Good
Baik
0–500–9
Moderate
Sedang
51–1009.1–35.4
Sensitive groups
Tidak sehat bagi kelompok sensitif
101–15035.5–55.4
Unhealthy
Tidak sehat
151–20055.5–125.4
Very unhealthy
Sangat tidak sehat
201–300125.5–225.4
Hazardous
Berbahaya
301+225.5+

What each class means, and the advice that goes with it on every city page:

Good (0–50)

Air is clean. No precautions needed.

Moderate (51–100)

Fine for most people. Unusually sensitive people may notice it.

Sensitive groups (101–150)

Children, older adults, and people with asthma or heart conditions should ease up outdoors.

Unhealthy (151–200)

Everyone may start to feel effects; sensitive groups will feel them more.

Very unhealthy (201–300)

Health warning. Everyone may feel serious effects.

Hazardous (301+)

Health emergency. Everyone is likely to be affected.

Beside the class, the home screen shows how many times the WHO annual guideline the PM2.5 concentration is. The WHO guideline is 5 µg/m³; a city at 50 µg/m³ is at ten times the guideline. It is a way to read the number, not a separate class.

ISPU, Indonesia's own index

Indonesia publishes its own index, the Indeks Standar Pencemar Udara (ISPU), which BMKG and the Ministry of Environment use in their bulletins. Its scale and breakpoints differ from the US AQI, so the same air can score differently on each. Kabut computes ISPU on the server beside the US AQI and shows it on the page of every Indonesian city, with the pollutant that drove it.

ISPU classIndex
Baik
Good
0–50
Sedang
Moderate
51–100
Tidak Sehat
Unhealthy
101–200
Sangat Tidak Sehat
Very Unhealthy
201–300
Berbahaya
Hazardous
301–500

The health advice stays on the six US AQI classes. Two sets of advice about the same air could only contradict each other; ISPU is there so you can compare our number with the one in the official bulletin.

Fire hotspots

Fire detections come from NASA's Fire Information for Resource Management System (FIRMS), using the VIIRS instrument on the Suomi NPP satellite. A detection is a pixel the satellite saw as unusually hot when it passed overhead — usually a fire, occasionally a flare or a hot industrial roof.

"Nearest fire" on a city page is the straight-line distance to the closest detection in the last 24 hours. The page also shows which way the wind is coming from, so you can see whether the fire is upwind.

Volcanoes and ash

Two separate facts, from two separate sources, and neither implies the other:

A volcano can be erupting with no ash in the air, and ash can still be in the air after an eruption has paused. For a city, Kabut works out whether it sits under an advisory's ash cloud, whether the cloud is moving toward it, or only whether one is nearby — and it calls a cloud "heading your way" only within 300 km, so a volcano across the archipelago cannot. Kabut does not estimate when ash will arrive: an advisory states one direction at one height, and that is not enough to promise a time.

Kabut does not show PVMBG's official alert levels (Normal, Waspada, Siaga, Awas), because they have no public data feed. Check them at magma.esdm.go.id.

Limits worth knowing

Sources and licences

WAQI station data; Open-Meteo air quality and weather data (CC BY 4.0, modified: Kabut computes the US AQI from its values); NASA FIRMS; NASA GIBS for the smoke layer on the map; NOAA Aviation Weather Center; Smithsonian Global Volcanism Program; GeoNames place names (CC BY 4.0). Map data © OpenStreetMap contributors, via OpenFreeMap.

See also About Kabut and the privacy policy.