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:
- Station. Where a monitoring station reporting to the World Air Quality Index project (WAQI) is close enough to represent the city, its measurement is used. A station measures the air at one place; it is the most direct evidence there is, but it can miss smoke a few kilometres away.
- Model. Everywhere else, the reading comes from the Copernicus Atmosphere Monitoring Service (CAMS) model, served by Open-Meteo. A model estimates the air for any coordinate from satellite observations, emissions and weather; it covers every city but smooths over local peaks.
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.
| Class | US AQI | PM2.5 µg/m³ |
|---|---|---|
| Good Baik | 0–50 | 0–9 |
| Moderate Sedang | 51–100 | 9.1–35.4 |
| Sensitive groups Tidak sehat bagi kelompok sensitif | 101–150 | 35.5–55.4 |
| Unhealthy Tidak sehat | 151–200 | 55.5–125.4 |
| Very unhealthy Sangat tidak sehat | 201–300 | 125.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.
- Open the windows.
- Outdoor activity is fine for everyone.
Moderate (51–100)
Fine for most people. Unusually sensitive people may notice it.
- Normal activity is fine.
- If you are unusually sensitive to smoke, take it easy on long outdoor exertion.
Sensitive groups (101–150)
Children, older adults, and people with asthma or heart conditions should ease up outdoors.
- Sensitive groups: shorten outdoor exertion.
- Keep reliever inhalers within reach.
- Everyone else can carry on as normal.
Unhealthy (151–200)
Everyone may start to feel effects; sensitive groups will feel them more.
- Limit time outdoors and avoid hard exercise.
- Wear an N95 outside — a cloth mask does not stop PM2.5.
- Keep windows shut during the worst hours.
Very unhealthy (201–300)
Health warning. Everyone may feel serious effects.
- Avoid outdoor activity; move exercise indoors.
- Keep windows shut and run an air purifier if you have one.
- Wear an N95 if you must go out.
Hazardous (301+)
Health emergency. Everyone is likely to be affected.
- Stay indoors with the windows shut.
- Run an air purifier, or make one room the clean room.
- Wear an N95 for any trip outside, however short.
- Seek care for breathing difficulty, chest pain, or dizziness.
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 class | Index |
|---|---|
| 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.
- "Last 24 hours", never "now". Near-real-time data arrives about three hours after the satellite pass, and a satellite sees a given place only a few times a day. A fire that started an hour ago is not on the map yet.
- Counted once. Kabut collects fires for Indonesia and its neighbours in overlapping rectangles, so that no strip of land falls between two of them. A fire in an overlap is counted once, by its position and time; the total on the home screen and the one on the map are the same number.
- Province counts are approximate. For Kalimantan and Sumatra, where the fire season is concentrated, fires are grouped by province using rectangles that approximate the borders. A fire near a border can be counted in the neighbouring province.
"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:
- Erupting comes from the Smithsonian Institution's Global Volcanism Program, which records whether a volcano's eruption is continuing.
- Ash advisory comes from SIGMETs published through the NOAA Aviation Weather Center: warnings to aircraft that describe where a volcanic ash cloud is, how high it reaches, and which way it is moving.
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
- One number per city. A city's air varies street by street, and a reading is one station or one model cell.
- Models smooth peaks. In a dense haze event, a model reading can sit below what a station in the same city measures.
- Data can be late. If a provider does not answer, the site keeps showing the last good reading, says when it is from, and shows a notice.
- Not an official warning. For official statements, follow BMKG, the Ministry of Environment and your local government.
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.