Seven places, one of them a different country. Everything above rests on air measured at the cities marked on that map — and that is the whole list. OpenAQ has zero PM2.5 locations in Riau and zero in all of Kalimantan. The cities this case is about have never had an open sensor, so tier 3 substitutes the CAMS EAC4 reanalysis and calls it a model.
Every dry season, land burns across Sumatra and Kalimantan and the smoke travels. This work tracks it as far as the cities where the air is actually measured, over 9,594 days on which those instruments recorded smoke.
What this gives you: a ranked list, a day ahead, of which 28-kilometre squares are most likely to burn — more accurate than the operational index in use today. Useful to anyone deciding where to send a crew tomorrow.
What it does not give you: a warning that the air in your city will be bad on Thursday. The fire forecast and the smoke-tracking model exist separately and have never been joined — the smoke model runs on fires that have already been detected, not on predicted ones. Joining them is the obvious next step and it has not been done.
How good is "most likely to burn"?
The land is divided into squares about 28 kilometres across — 1,955 of them — and for each square the model answers one question: will there be fire here tomorrow?
It is right far more often than chance, and the honest way to say how much is this: given one square that burned and one that did not, it puts them in the right order 87% of the time a day ahead. Fire is rare — only about 4% of squares burn on a given day — so getting the order right is what matters. A list you can act on beats a probability you cannot.
There is already an official way to do this. It is called the Fire Weather Index, it is used operationally around the world, and on the same days and the same places it puts those two squares in the right order 79% of the time. This model gets 88%, on the same 266,658 days and places. That gap is the entire practical claim being made here — and the technical page states a way in which the comparison flatters the model, which you should read before believing the gap is that large.
Is that good? Two ways to check
First: is the index it beats a fair opponent? It is. A 2025 study scored the Fire Weather Index over almost exactly this region and this task, and got it right between 75% and 79% of the time. The index as measured here scores 78% — inside that range. The comparison in the box above is not a straw man being knocked down.
One disagreement is worth recording. That same study found the Drought Code — one part of the index — to be the best single predictor, at 79%–83%. Here it is the worst part, at 76%, below the full index. Two careful measurements of the same thing over the same islands do not agree, and this page cannot tell you which is right.
Second: is 87% a good score? Another 2025 study reports 96% for a machine-learning model on Indonesian fire data — far above this one. But it balanced its data so that fires and non-fires appeared about equally, and split its test set at random. Fires are rare — about 4% of squares here burn on a given day — and this page's whole argument is that both of those choices make a score look better than the thing it measures. Scored the harder way that number would fall; the paper does not report what it would fall to, so the two cannot be laid side by side, and this page will not pretend otherwise.
The test that mattered
A model that works in ordinary years is no use, because ordinary years are not the problem. 2015 and 2019 were the bad ones.
So those two years were removed completely — not used for learning anything, held back like an unseen exam — and the model was asked about them afterwards. It scored 91% on 2015 and 90% on 2019. Slightly better than its ordinary-year performance, not worse. That is the single result here worth trusting.
What it cannot do, and this is the part usually left out
When smoke covers a city, the question everyone asks is where did it come from. There is a second model for that: it takes the wind, runs it backwards from the city, and follows 287,820 air parcels across 9,594 smoky days to see where they had been.
It works often enough to be useful. It is also wrong in ways worth knowing:
- On 8% of smoky days — 773 days out of 9,594 — it cannot name a source at all. The air came from too many places, or from none the model can see. On those days the answer is "we do not know", and that is what it says.
- When you check the direction the smoke actually came from against the direction the model says, they agree within 30 degrees on 61% of days. The target was 70%. It missed.
Of five checks set before any of this was built, 3 passed and 2 failed. Both failures are in this second half — the part that assigns blame — and none are in the part that predicts fire. That distinction is the most useful sentence on this page. Believe the warning. Be careful with the accusation.
Why "where did it come from" is so much harder
Predicting fire uses things that sit still: how dry the ground is, how much peat is underneath, what burned nearby last month. Peat is the reason these fires are so hard to stop — it burns downward and underground, and it holds carbon from thousands of years of accumulation.
Blaming a fire for a city's smoke needs something that does not sit still: the wind, hours ago, several kilometres up. Small errors in wind compound into large errors in origin. That is not a flaw in the code. It is why the honest version of this tool refuses to answer one day in twelve.
What a government or an NGO can actually do with this
Three things follow, and the second is the one that gets skipped.
- Pre-position crews, do not react to smoke. On the two fire seasons held out of training entirely, the model put a cell that actually burned ahead of one that did not 91% of the time in the first and 90% in the second. That is good enough to rank where ignition is likely days ahead — a deployment schedule rather than a warning, telling you where to move people, water and aircraft before anything is burning. A forecast that arrives with the haze has no operational value at all.
- Keep prediction and blame as separate jobs — the second one failed here. Across 8,286 plume-hours the back-trajectory bearing agreed with the fire direction 61% of the time against a pre-registered target of 70%, with a median error of 19.68°. That check is published as a failure. A concession boundary under a hot pixel is not evidence a fire began there, and an enforcement case built on this overlay will not survive being contested.
- Weight peat above hectares. 642 cells in this grid sit on peat, and the same burned hectare produces drastically different amounts of smoke depending on what is under it. A programme that counts hectares treats the cheap fires and the expensive ones as equal; depth is the variable that connects burning to the health cost.
What this is not. It does not identify who lit a fire, and no model can. It says a square is likely to burn, and separately that smoke over a city probably came from a direction. Turning either into an accusation against a company or a person needs evidence of a kind that satellites do not provide.
Could this run in daily operations?
DEPLOYABLE WITH LIMITS — next-day ignition risk. NOT attribution — where the smoke came from must not be used to name a province.
Every pipeline here is a batch backfill: it fetches a season or an archive, not a live feed. Anything operational means rebuilding the ingest for near-real-time arrival, whatever the verdict below says.
What stops it. The attribution check failed: the modelled direction agrees with where the smoke actually came from on fewer days than the bar set in advance required. A second check, replaying past seasons for severity, also failed.
What it would need. A rebuilt ingest. Today it backfills whole seasons, and a queue bug in this pipeline once cost three years of data before anyone noticed.
If you want the detail
Everything above is stated precisely, with the methods, the failures and the things that remain uncertain, on the technical article — and you can move the controls yourself on the dashboard. The numbers on this page are read from the same record as those, so they cannot fall out of step with each other.
Data vintage 2026-08-31. Written to be read without a background in remote sensing or statistics; nothing was rounded to make a point.
Words on this page, in plain language 5 terms
- Fire Weather Index
- A long-established weather-based measure of how easily fires start and spread. Any new fire model has to beat it to be worth having.
- a look
- One pass of the satellite over a field. More looks means the crop's cycle is sampled more often; too few and a short stage — flooding, heading — can happen entirely between two looks and never be seen.
- median
- The middle value: half are higher, half lower. Unlike an average, one extreme case cannot drag it.
- concession
- A licensed area a company may operate in — for palm, timber or mining. Who holds which concession is often not public, which limits what can be attributed to whom.
- peatland
- Waterlogged ground made of partly decayed plants, holding enormous amounts of carbon. Drained peat burns underground for weeks and is very hard to extinguish.
Found something wrong on this page? Report a correction — it opens a pre-filled issue — or email taufik.adi@openstudy.id. Corrections are credited by name in the errata, and one that changes a finding says so on the page.