On 16 December 2021, a tropical depression made landfall on the eastern coast of Peninsular Malaysia, bringing torrential downpours throughout the peninsula for three days. The resulting floods affected eight states across the peninsula, and left at least 54 dead and 2 missing. During its furthest extent, it caused the concurrent displacement of more than 71,000 residents, and have affected over 125,000 people overall.

Declared by government officials as a "once in a century" disaster, it is the worst flood in the country in terms of displaced residents since the 2014–2015 Malaysia floods. It has also been historically compared with the 1971 Kuala Lumpur floods. It is the deadliest tropical cyclone-related disaster to hit Malaysia since Tropical Storm Greg of 1996, which killed 238 people and left 102 more missing.

Record-high precipitations were measured at weather stations at Selangor and Kuala Lumpur. Widespread damages were reported in the states of Selangor and Pahang, especially the district of Hulu Langat and the city of Shah Alam. The Malaysian government has suffered criticism over its delayed response and apathy towards the disaster. Scientists, climate activists, and the media have largely made connections of this disaster as an example of extreme weather attributed to climate change.

Weather events

On 14 December 2021, the Japan Meteorological Agency (JMA) upgraded a westward-moving low-pressure area to a tropical depression. The Joint Typhoon Warning Center (JTWC) began monitoring the system by the next day, noting the presence of a consolidated low-level circulation within the system. The system's chances of developing into a tropical cyclone slowly increased, and on 16 December at 17:30 UTC, the JTWC issued a Tropical Cyclone Formation Alert (TCFA) for the system despite the outflow of Typhoon Rai partially exposing the system's low-level circulation. By 21:00 UTC, the JTWC upgraded the system to a tropical depression, assigning it the designation 29W as it continued over marginally favorable developmental conditions. Shortly after, at 23:00 UTC, the depression made landfall north of the city of Kuantan in the state of Pahang, and began to weaken afterwards, prompting the JTWC to issue its final advisory on the system by the next day. The JMA stopped monitoring the system on 17 December at 12:00 UTC.

Preparations

Prior to the floods, the Kelantan Welfare Department prepared RM1.3 million (US$309,500) for relief efforts. The National Disaster Command Centre (NDCC or NADMA) had planned 5,731 temporary shelters (known locally by its Malay abbreviation, PPS) that could accommodate over 1.6 million victims across the nation for emergency purposes.

On 16 December, the Malaysian Meteorological Department (MMA or MetMalaysia) issued an orange alert for all districts of Kelantan and Terengganu and yellow alerts for Pahang, Perak, Kedah and Penang until 17 December. On the same day, flood warnings were issued by the National Flood Forecasting and Warning Centre (PRABN) to two districts at Kelantan (Kuala Krai District and Jeli District). The NDCC advised on the activation of state- and district-level disaster management committees following the alert. MetMalaysia subsequently issued an amber alert for persisted rainfalls across the Klang Valley. This alert was later raised to a red alert (the maximum level), and was expanded to neighbouring states, including Pahang. The Klang Gates Dam released 25 per cent of its reservoir in stages after water levels exceeded acceptable ranges. By 18 December, flood operation centres were activated in all districts of Kelantan. Later that night, Tuan Ibrahim, the Minister of Environment and Water, released an emergency statement requesting immediate preparations at Kuala Lumpur from floods after the breaching of four main rivers across the city. The SMART Tunnel was activated amidst the increasing precipitation, and achieved record-high diversion volumes of approximately five-million cubic meters of flood water.

Staff and displaced residents of relief centres were regularly screened for COVID-19 to prevent outbreaks from occurring.