A nowcast answers a simple question: will it rain here in the next hour or two, and when? It starts from the rain that is already falling, and moves it forward in time.
Start from the rain you can see
A weather radar sends out short pulses of microwaves and listens for the echo from raindrops. The stronger the echo, the harder it rains (see radar coverage for how an echo becomes millimetres per hour). A network of radars turns these echoes into one picture of where it is raining, and how hard, every 5 minutes, on a grid of squares 1 or 2 km wide.
rate = np.load("radar_2025-03-19T1200.npz")["rate"] # mm/h
plt.imshow(rate, cmap=map_colours, norm=BoundaryNorm(stops, 8))
Most of the rain is light
Look at any radar image and most of the coloured area is drizzle or light rain. Heavy rain is a small core inside it, and it is the part people care most about. Figure 2 counts it: for each rain rate, the share of the rainy area that reaches at least that rate.
wet = rate[rate >= 0.1] # the rainy squares
x = np.logspace(-1, 2, 200) # 0.1 to 100 mm/h
share = [(wet >= v).mean() for v in x]
plt.loglog(x, share)
On the storm image, a third of the rainy area reaches 1 mm/h, one square in fifty reaches 10 mm/h, and one in five thousand reaches 50 mm/h. Two things follow. A forecast’s score for heavy rain rests on few squares, so it swings more from day to day. And a forecast that smears its rain out will look fine on light rain while losing almost all of the heavy cores.
Move the rain
Put several radar images in a row and you can see the rain move. The classic nowcast, called extrapolation, does two things:
- Estimate the motion. Compare the last few images and find, for every area, the shift that best maps one image onto the next (optical flow, the same idea as video compression). The result is a field of arrows, one per area.
- Carry the rain along the arrows. For each square of the future image, follow the arrows backwards in time and read the rain that was there. Repeat step by step for each 5 or 10 minutes ahead.
Open-source tools such as pySTEPS do this well, and it is the baseline every newer method is compared with.
Moving is not enough
Rain does not only move. Showers grow, merge and die out within an hour; heavy cores fade or flare up. Plain extrapolation keeps every cell as it is, and smoothing schemes that account for uncertainty spread heavy rain into a wide area of light rain as time goes on.
Newer methods learn from years of radar images how rain usually evolves, so they can move the rain and let it grow or decay at the same time. NowcastNet, published in the journal Nature in 2023, is a well-known example. Nimbo is a nowcast of this learned kind.
Why it gets less sharp with time
Every nowcast is best in its first minutes and loses skill as it looks further ahead, because the rain that will fall in three hours may not exist yet. Figure 3 shows how fast, with the hit score explained in how to measure a rain forecast (1 is perfect, 0 is no skill).
url = "https://nimboweather.com/results/europe_bench.summary.json"
radar = pd.DataFrame(httpx.get(url).json()["radar"])
csi = (radar.query("zone == 'EUROPE' and threshold == 1.0")
.pivot(index="lead_min", columns="method", values="csi"))
csi[["product", "sprog_raw", "persistence"]].plot()
Holding the rain still is already worth something for a quarter of an hour, then falls away fastest: moving the rain is what makes the first hour. In the first 90 minutes Nimbo and pySTEPS lose about 40 % of their score, still rain almost 60 %; after that all three fade more slowly, and the gaps between them narrow. That is why a nowcast is a tool for the next few hours, and a weather model takes over after that (see nowcast or weather forecast).
What a nowcast is good for
- “Rain starting in 20 minutes” in a weather app or on a watch.
- Closing an awning, a skylight or a roof before the rain arrives.
- Planning a delivery round, a match, a site pour or a run around the next shower.
- Showing the rain moving on a map, with the next hours after the radar loop.
It is not a warning service. For severe weather, national weather services issue the official warnings.