
Cyclone Freddy: five weeks, one storm
An interactive map story of Tropical Cyclone Freddy, the longest-lasting tropical cyclone on record. It follows the storm across the Indian Ocean and into the days of extreme rain over southern Malawi in March 2023, built from IBTrACS best-track data and CHIRPS satellite rainfall.
- Role
- Climate scientist and developer
- Duration
- 2026
- Client
- Personal project
Cyclone Freddy lasted 36 days, the longest tropical cyclone on record. It crossed the whole southern Indian Ocean, struck Madagascar and Mozambique, looped back over the Mozambique Channel, and then stalled over southern Malawi, where days of extreme rain turned hillsides into debris flows. This project tells that story on a map, from public scientific data. See it live.
The track
Freddy's best track comes from IBTrACS, NOAA's archive of every agency's cyclone records: 305 positions, one every three hours, from 4 February to 14 March 2023. Wind speeds are the US agency's one-minute winds, because those are what the Saffir-Simpson categories are defined on. The official agency for this ocean reports ten-minute winds, which run lower, so mixing the two would make the colours jump. Landfalls are found where the record's distance-to-land drops from above zero to zero: Madagascar on 21 February, Mozambique on 24 February, and Mozambique again on 11 March.
How much rain: CHIRPS
Daily rainfall for 6 to 16 March comes from CHIRPS, which blends satellite estimates with rain gauges on a grid of about 5 km. It is the standard dataset for rainfall monitoring across Africa. Each day is cut to a box around Malawi and central Mozambique, coloured in fixed classes, and accumulated. District averages come from overlaying the 28 district boundaries on the grid: over the whole window, Mulanje averaged 184 mm, Phalombe 183 mm and Thyolo 176 mm.
When and where: NASA IMERG
The hourly animation uses NASA's IMERG, which merges microwave and infrared satellite observations every half-hour on a 10 km grid. Instead of downloading 336 global files of about 10 MB each, the pipeline asks NASA's OPeNDAP server for just the cells over the story area, a few KB per half-hour. Pairs of half-hours are summed into 168 hourly grids and packed into one 1.7 MB file. As a check, the heaviest rain on the night of 11 March sits exactly where Freddy came ashore near Quelimane. The heaviest single hour in Malawi was 34.4 mm, at 03:00 local time on 14 March.
Why two rainfall datasets
Over the same days, IMERG and CHIRPS agree on the four districts hit hardest, but there IMERG's totals are about twice as large. Further north the two are closer, and sometimes reversed. Satellite estimates often run high in intense tropical rain, while CHIRPS smooths out local extremes and depends on sparse gauges, so the true amount for any one place can sit on either side. So the story uses each for what it does best: IMERG to show when and where the rain fell, CHIRPS for how much. Every figure on screen names its source.
Rain over 10 to 16 March 2023, district averages
View data
| District | CHIRPS (mm) | IMERG (mm) |
|---|---|---|
| Mulanje | 182 | 359 |
| Phalombe | 180 | 333 |
| Thyolo | 176 | 314 |
| Nsanje | 141 | 323 |
| Zomba | 135 | 196 |
| Machinga | 136 | 183 |
| Mangochi | 135 | 149 |
| Nkhotakota | 128 | 82 |
From data to pixels
The map is Mapbox GL JS, driven by one animation clock outside React, so the map updates every frame while the interface updates about ten times a second. The storm moves along a smooth curve through the three-hourly positions, and its symbol is the hurricane glyph, mirrored because Southern Hemisphere cyclones turn clockwise. The camera settles onto the storm and holds it still while the ocean scrolls past.
The hourly rain is coloured in the browser. Each frame blends the two neighbouring hours and smooths the 10 km grid four times finer, so the rain sweeps across the map instead of jumping. It fades in from 0.5 mm per hour, so light rain stays see-through and the downpours stand out.
What it cannot tell you
A 5 to 10 km grid cannot resolve Mulanje mountain, so the heaviest rain on its slopes is spread over neighbouring cells, and rain gauges in the worst-hit places recorded more than either dataset shows. The agencies stopped tracking Freddy on 14 March, but the rain continued to the 16th. And no formal attribution study of Freddy exists, so the story makes no claim about the role of climate change.
WMO: Freddy is the longest tropical cyclone on record · OCHA Malawi Flash Update No. 11 · IBTrACS, NOAA NCEI · CHIRPS, UCSB CHC · GPM IMERG V07B, NASA GES DISC · geoBoundaries
Gallery