I built hazynot to help me decide whether to cancel my tennis, golf or padel sessions. Hope this helps others!
Independent, not affiliated with NEA. Official readings and health advisories are at haze.gov.sg. Forecasts can be wrong; they're a guide, not health advice.
Everything uses NEA's 1-hour PM2.5 bands (µg/m³). We split Band 1 at 35 for colour only.
A hazy day is 2 hours or more at Elevated between 06:00 and 22:00. NEA's next-day outlook is a 24-hour PSI band, so we always label it as NEA's and never show it as a "now" number.
Today is forecast at 5 am from the night's readings, nearby airport visibility and the fire picture. It's the most reliable tile.
The next 3 days are forecast at 1 pm from four kinds of evidence: this morning's readings; how bad the past week has been; the fires in Sumatra and Kalimantan and how long the peat has gone without heavy rain; and, most importantly, where the smoke is. The European CAMS model forecasts smoke across the region, and we measure how much of it sits in each direction from Singapore at 100–300, 300–600 and 600–1,000 km, especially to the south and east-south-east, where our haze comes from. A statistical model trained on past haze seasons (2015, 2019, 2022, 2023, 2026) turns that into the chance of a hazy day. We also measure the smoke itself: the Japanese Himawari satellite sees how thick the haze is across the region every hour, which sharpens how bad a day is likely to get.
At 11 pm the next 3 days are forecast again, with the evening's readings, a newer smoke forecast and the whole day's satellite view. It catches more hazy days and is closer on the level, so from 11 pm until 1 pm the next day the tiles show that update.
Hazy means more likely than not: the chance is over 50%, or it's already hazy today. Maybe hazy means a 20–50% chance; Clear, under 20%. The chance itself is printed on every tile, because a 44% day and a 94% day deserve different plans. Days 4 and 5 show "Too far": that far ahead we were no better than assuming it stays the same, so we don't pretend.
The next 48 hours blend three things, hour by hour: the latest reading, an hourly model of how readings usually change from here, and the day forecasts above for that part of the day. The nearest hours lean on the latest reading; further out, when haze is expected, the line leans on the day forecast, which knows about the smoke on its way. The blend was tuned on past seasons and beats "it stays where it is" at every hour ahead. When the satellite shows a thick plume within 300 km, the chart stops forecasting a decline and lifts the top of its range, because in those spells a surge can come at any hour.
Every model was tested on a season it had never seen, and every forecast we publish is checked against what happened. See Accuracy.