Learn

What is nowcasting?

A forecast of the next few hours, made from what the weather is doing right now.

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))
Radar map of Spain and Portugal on 19 March 2025 at 12:00 UTC: a long band of rain, mostly light with a yellow and red core of 5 to 20 mm/h, lies along the Portuguese coast; small showers sit off the Spanish east coast; the rest of the peninsula is dry. Radar map of Spain and Portugal on 19 March 2025 at 12:00 UTC: a long band of rain, mostly light with a yellow and red core of 5 to 20 mm/h, lies along the Portuguese coast; small showers sit off the Spanish east coast; the rest of the peninsula is dry.
Figure 1. One radar image: 19 March 2025, 12:00 UTC, a storm coming ashore in Portugal. Each pixel is a 2 km square, in the colours of the map. The tinted areas at the edges are out of radar range.

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)
Log-log chart of the share of the rainy area at or above each rain rate. On the storm image, 35 % of the rainy area reaches 1 mm/h, 2 % reaches 10 mm/h and almost none 50 mm/h. On the showers image the curve drops faster: 22 % at 1 mm/h and 0.2 % at 10 mm/h. Log-log chart of the share of the rainy area at or above each rain rate. On the storm image, 35 % of the rainy area reaches 1 mm/h, 2 % reaches 10 mm/h and almost none 50 mm/h. On the showers image the curve drops faster: 22 % at 1 mm/h and 0.2 % at 10 mm/h.
Figure 2. Share of the rainy area (0.1 mm/h or more) that reaches each rate, on the storm of figure 1 and on an afternoon of scattered showers (24 September 2025, 15:00 UTC). Shaded bands: the words the map uses for light, moderate, heavy and violent rain.

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:

  1. 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.
  2. 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()
Line chart of the hit score against time ahead, 15 minutes to 3 hours. Nimbo falls from 0.52 to 0.20, pySTEPS from 0.37 to 0.16, and rain held still from 0.35 to 0.09. All three fall fastest in the first hour. Line chart of the hit score against time ahead, 15 minutes to 3 hours. Nimbo falls from 0.52 to 0.20, pySTEPS from 0.37 to 0.16, and rain held still from 0.35 to 0.09. All three fall fastest in the first hour.
Figure 3. Hit score for rain of 1 mm/h or more against radar, on the whole map, over the scoreboard’s 39 rainy days (October 2024 to September 2026). “Rain stays put” holds the latest image still. Shaded: the 90 % range when the days are resampled. The file behind it is public: the code above runs as is.

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.

Next: Nowcast or weather forecast?