Overhead.

Why your weather app’s rain radar is blank over South Africa

The short version: over South Africa, the rain radar layer in weather apps isn’t showing you a dry country. It’s showing you nothing at all. We checked it pixel by pixel — every pixel of the coverage file over Gauteng says “no radar here”, and the file is identical to one of the open ocean. The South African Weather Service does operate radars, but their live feed isn’t published openly, so the services those apps buy their radar layer from simply stop at our borders. So we built the thing that is open instead: a rain picture of the whole country, taken from a satellite, refreshed about every ten minutes, free and without a sign-up. It is an estimate rather than radar, and this page is careful about the difference.

Two coverage tiles side by side. The South African tile is entirely marked “no radar coverage”; the Kansas tile is entirely covered.
RainViewer’s own coverage map, fetched 16 August 2026. Every pixel over South Africa says “no radar coverage”; not one pixel over Kansas does. Recoloured for legibility on a dark page — in the original file, “no coverage” is solid black. Coverage data: RainViewer.

What we actually measured

Here is what those measurements actually were.

A radar-tile service publishes a coverage mask: a picture in which transparent means “we have radar here” and black means, in its own documentation’s words, that coverage “is not” available. We asked for that mask over South Africa, at the zoom level your phone uses when you look at your province. Every single one of the 65,536 pixels came back black.

Then we did the plainer test. We saved that tile, and a tile of the open Atlantic Ocean, and compared the two files. They are identical, byte for byte. As far as a rain radar map is concerned, South Africa is the sea.

Two coverage tiles side by side, both entirely marked “no radar coverage”: one over South Africa, one over the open Atlantic Ocean.
South Africa’s coverage tile and one of the open Atlantic. The two files are identical, byte for byte. Fetched 16 August 2026. Coverage data: RainViewer.

Rain drawn in the same frame, at the same moment (16 August 2026):

WhereRain pixels drawn
South Africa0
Kansas, USA21,349
Europe8,798

And the size of the tile that arrives, as a file (16 August 2026):

WhereFile size
Johannesburg334 bytes
Cape Town334 bytes
Europe8,565 bytes
Kansas, USA23,173 bytes

These are two different readings of the same request: what the picture contains, and what the file weighs. An empty image still has a file size — 334 bytes is what “nothing” weighs. Both checks take a couple of minutes to repeat, and here is how.

Don’t take our word for it

Every number above came from a public web address and about two minutes of work. If you want to check it — or check whether it’s still true — this is all of it.

# 1. The coverage mask over Gauteng, KwaZulu-Natal and Limpopo.
#    Black pixels mean "no radar coverage" — that is RainViewer's own definition.
curl -s "https://tilecache.rainviewer.com/v2/coverage/0/256/5/18/18/0/0_0.png" -o za.png

# 2. The same file over the Western Cape.
curl -s "https://tilecache.rainviewer.com/v2/coverage/0/256/5/17/19/0/0_0.png" -o wcape.png

# 3. The same file over Kansas, USA — for comparison.
curl -s "https://tilecache.rainviewer.com/v2/coverage/0/256/5/7/12/0/0_0.png" -o kansas.png

# 4. And the open Atlantic, about 1,700 km from the nearest land.
curl -s "https://tilecache.rainviewer.com/v2/coverage/0/256/5/12/20/0/0_0.png" -o atlantic.png

# 5. Compare 1 and 4. On 16 August 2026 these two files were identical.
sha256sum za.png atlantic.png

# 6. Count the opaque pixels in each. (Any image tool will do.)
python3 -c "from PIL import Image; im=Image.open('za.png').convert('RGBA'); \
px=list(im.getdata()); print(sum(1 for p in px if p[3]==255), 'of', len(px), 'opaque')"

For the live rain pictures rather than the coverage map, first fetch the frame index at https://api.rainviewer.com/public/weather-maps.json, take the newest frame path it lists, and request the same tile coordinates from it. Over South Africa you will get an empty image — 334 bytes, with nothing drawn in it. Over Kansas you will get weather.

We re-check this every three months. If it ever changes — if the radar services add South Africa, or the Weather Service opens its feed — we will change this page and say so, gladly. Last re-checked: 16 August 2026.

Why a blank map is worse than no map

A blank map and a dry day look identical on a phone.

That is the whole problem. An app with no data over you doesn’t tell you it can’t see. It draws an empty map, and an empty map reads as good news. On a Highveld afternoon in December, that is the difference between packing the car and getting caught in the hail.

We know because we did it. Overhead used to draw that same empty layer, on by default, over the whole country — and the app’s own wording, reading nothing on the map, would tell you there was “no rain showing there right now”. It was saying the opposite of what it knew. We were reading a blank page and reporting it as good news.

Fixing that is where this whole thing started. The first change wasn’t a satellite feed — it was deleting a sentence.

So we mapped the rain from space

One person can’t build a radar network. But you don’t have to, because something is already up there looking.

Europe’s weather satellite agency, EUMETSAT, keeps a satellite parked about 36,000 km above the equator, watching Africa continuously. On its own, it can only see the tops of clouds. Combined with instruments on lower satellites that pass overhead a few times a day and can see through cloud to the rain itself, it produces something better than either: a rain-rate picture — how hard it is raining, everywhere it can see — refreshed roughly every ten minutes. It is free, it is openly licensed, and it covers every corner of South Africa, including the towns that have never had a radar in range.

It does not stop at the border either, and neither do the blank radar maps: most of Africa is in exactly the same position. Since August 2026 the picture we publish covers the whole continent, from the Cape to the Mediterranean — where rain is falling, and nothing else. The verdict, the forecasts and the town pages remain South African.

Nobody had pointed it at South African phones and written the answer in plain language. That is all we did.

A new picture is published every ten minutes or so, about eighteen minutes after the satellite actually looked, and we pick each one up shortly after it appears — so what you are looking at is usually between eighteen and twenty-five minutes old. Everywhere we show it, we print when it was taken and how old it is, because a weather picture without a timestamp is a rumour.

Here is the current one, straight off that pipeline:

Overhead’s satellite rain estimate for South Africa right now, observed 13:20 SAST.
Observed 13:20 SAST — about 20 minutes old. Satellite rain estimate: contains modified EUMETSAT Meteosat data 2026, processed by EUMETSAT’s H SAF and made available under CC BY 4.0. It is an estimate from satellite, not weather radar.

Is this radar? No — and the difference matters

We are careful with the word radar, and we would ask anyone repeating this to be careful too. Overhead does not have a radar and this map is not one.

Radar works from the ground up. An antenna fires a pulse into the sky and listens for the echo coming back off the raindrops. It measures rain almost exactly where you are standing, refreshes every few minutes, and can resolve a shower a few hundred metres across — but only within a few hundred kilometres of the antenna itself.

Ours works from the top down, and it is an estimate rather than a measurement of the rain at your feet.

Where our coverage stops, we draw the edge rather than filling it in. Outside that line, the honest answer is that we don’t know — which is not the same as dry.

How a satellite can see rain at all

For anyone who wants to know how this actually works. Everything below is optional reading.

What the satellite actually sees

A geostationary satellite sits far enough out that it turns with the Earth and stays over the same spot, watching one whole face of the planet without a pause. What it reads is mostly infrared: the temperature of whatever surface is facing it. Over cloud, that surface is the cloud top. Cold cloud tops mean tall clouds, and tall clouds are usually the ones raining hard — but “usually” is doing real work in that sentence. A warm, shallow cloud drizzling steadily looks, from above, much like one doing nothing at all.

How cloud tops become a rain rate

That gap is filled by a different kind of instrument, carried on satellites in much lower orbits that sweep past any given place only a few times a day. Those read microwave wavelengths, which pass through cloud and interact with the raindrops and ice themselves — so they measure precipitation physically, rather than inferring it from the temperature of the cloud top. They are far more trustworthy and far less frequent. Blending the two gives you something with the honesty of the microwave readings at the refresh rate of the infrared ones. That blend, produced by EUMETSAT’s H SAF and published under CC BY 4.0, is what our map draws: about four to five kilometres per block, across everything the satellite can see, roughly every ten minutes.

Why it is an estimate, and where estimates go wrong

Radar measures rain from underneath, close to where it lands. This measures it from about 36,000 km up, and part of the answer is inferred rather than seen. That has consequences worth knowing about. Light drizzle under warm, shallow cloud is the main blind spot: from above, that cloud looks much like one producing nothing. Cold ground on a winter night makes the reading weaker. And at four kilometres a block, a small sharp shower can fall between two of them. It is a good estimate. It is still an estimate, and every place we show it says so.

What breaks it — and what happens then

Quietly, is how these things break. A feed stops, and a picture that has stopped arriving looks exactly like weather that has stopped happening. That is the same failure this entire page is about, so it is engineered against rather than hoped about. Every surface works out the picture’s age from the observation time itself, never from a stored label. Past a set age the layer hides itself and the page says it has no current picture instead of showing you an old one. We would rather show you nothing than show you something old as if it were now.

Who built this

Overhead is one person, working evenings, on a desktop PC in a spare room. There is no company behind it, no funding, no team, and no plan to charge anyone for it. It is free, there is no sign-up, there are no adverts, and there is nothing to buy. It is not costless to run — there is electricity, and there is bandwidth — but there is no cloud bill, because the satellite data is free under an open licence.

That is not a boast — it is the actual point. None of this needed a satellite, a budget or permission. The satellite was already up there. The data was already free and already open. What was missing was somebody bothering to point it at South Africa and write down the answer in plain language.

If this persuades someone with more resources to build something better, that is a good outcome and we will link to it. The same data is open to them too.

Questions people ask

Is South Africa the only country without rain radar coverage on these maps?

No — most of Africa is in the same position, and so are large parts of South America and Asia. Radar coverage on global maps follows whichever countries publish their radar feeds openly. South Africa has the radars; the live feed just isn’t published in a form anyone else can use. Our own satellite picture now covers our immediate neighbours too — Botswana, Namibia, Lesotho, Eswatini and the southern parts of Zimbabwe and Mozambique — for rain only, with no verdict and no forecast. It has never been checked against ground radar anywhere in southern Africa, ours included, because there is no open radar feed here to check it against.

Why can’t you just use the South African Weather Service’s radar?

Because there is nothing to use. SAWS operates radars and shows them on its own website, but there is no open live feed behind it that another application can read, and we would not republish someone else’s data without permission in any case. For official warnings, SAWS remains the authority — if their warning and our verdict ever disagree, theirs is the correct one.

How old is the picture I’m looking at?

Usually between eighteen and twenty-five minutes. The satellite picture is published about eighteen minutes after the observation, and we pick each new one up shortly after it appears. Every place we show the picture, we print the observation time and its age next to it.

What can’t the satellite see?

Light drizzle under a warm, shallow cloud deck is the main blind spot — from above, that cloud looks much like one producing nothing. It is also weaker over cold ground on winter nights, and at about four kilometres a pixel, a small sharp shower can fall between two pixels. It is an estimate. It is a good one, and it is honest about being an estimate.

Is it free? Do I have to sign up?

It is free, there is no sign-up, no account and no adverts. Open overheadweather.com and it works. You can add it to your home screen like an app if you want to.

What happens when the satellite feed goes down?

The map says so. Past a certain age the rain layer hides itself and the page tells you there is no current picture, rather than drawing an empty map — which would look exactly like a country with no rain in it. That mistake is what this page is about.

See it live

Overhead is a free guide built on live open weather data from Open-Meteo (CC BY 4.0). Satellite rain estimate: contains modified EUMETSAT Meteosat data 2026, processed by EUMETSAT’s H SAF and made available under CC BY 4.0. It is an estimate from satellite, not weather radar. It is advisory only — for official warnings and emergencies, follow the South African Weather Service.