New tool: a Rainwater Tank Calculator that actually simulates the tank

New tool, aimed at anyone weighing up a tank, whether that is a JoJo in a Joburg back garden or something bigger on a smallholding.

The reason I built it is that every rainwater calculator I could find does the same sum: roof area times annual rainfall times a loss factor. That tells you how much water lands on your roof, which is worth knowing, but it does not tell you what a tank will actually deliver, because a tank is limited by timing rather than by totals. Rain arriving while the tank is already full runs straight out the overflow, and demand arriving while the tank is empty is not met however much fell three months earlier.

So this one runs a day by day simulation instead, filling and drawing down the tank across ten years of real daily rainfall for your town, and reports the share of your demand it actually met. I tested a monthly calculation first and it is wrong by up to 21 percentage points for small tanks, because lumping a month of rain into one event overflows a tank that would really have refilled between showers.

Here is the bit that surprised me most, and it needs no comparison between towns at all. Take one town, one roof, one 5000 litre tank, and change only the shape of the demand: steady indoor use all year against summer peaked garden watering at the same peak day figure. The garden pattern uses about 35 percent less water over the year, so on volume alone it should do better everywhere. In Johannesburg it does, by 27 percentage points. In Cape Town it gains under one point. The same 35 percent saving is worth almost nothing there, because the rain falls in winter and the garden is thirsty in summer, and no 5000 litre tank bridges six months. Across towns that shows up as the same roof, tank and garden covering about 84 percent of the watering in Johannesburg and about 62 percent in Cape Town.

Two other things worth flagging for anyone who runs the numbers.

The money side is priced off your real stepped tariff, not an average rate, because the water you stop buying comes off your top block. On Johannesburg’s 2026/27 residential tariff a household on 12 kilolitres a month saves about R27 a kilolitre and one on 35 kilolitres saves about R74, so the same tank pays back nearly three times faster for the heavy user.

And a finding I did not expect: in Johannesburg, on a conventional meter, harvesting rainwater does not reduce your sanitation bill at all. Residential sanitation there is a flat monthly charge banded by erf size, from R397.85 up to 300 square metres to R1688.12 above 2000, and it does not move whatever your consumption does. The fixed R107.74 demand levy does not move either. Only the water blocks fall. Prepayment meter households are different, their sanitation is volumetric. I got that from the actual council tariff document, because the block rates quoted all over the web for Joburg water turn out to be the prepaid sanitation blocks, not the water ones.

Two honest caveats. Rainfall is modelled reanalysis data for 2015 to 2024 rather than a reading at your address, and that decade was genuinely 18 to 29 percent drier over the interior than the older normals most sources quote, which I have deliberately not corrected for since sizing a tank on 1970s rainfall would leave you short. There is a rainfall override in the advanced section if you have your own gauge, and it shows you how far the models disagree for your town. Tank and installation prices are indicative rather than quoted, and only Johannesburg tariffs are modelled so far, so if you are elsewhere please override the water price.

If you have a tank already, I would genuinely like to know how the tool’s estimate compares with what yours actually delivers. That is the one thing I cannot check from here.

A decent update to this one, prompted by a suggestion that the recommended size and the table of sizes were doing the useful work, but that the tool should make the diminishing returns obvious for people whose instinct is just to buy the biggest tank they can afford.

Fair point, so there is now a chart above that table showing coverage against tank size, and a new column showing what each step up actually costs you per extra percentage point of cover.

That second number turned out to be the interesting one. In Johannesburg, on a 120 square metre roof, every step up to 5 000 litres costs somewhere between R100 and R180 for each extra percentage point of cover. The step to 10 000 litres costs about R1 542 a point. The last step to 30 000 litres costs about R11 736 a point. Same tank, same roof, and the value falls off a cliff, largely because South African tank prices jump so sharply above 5 000 litres.

Durban is blunter still. Past 10 000 litres the tank is already covering essentially everything the roof can catch, so the two largest sizes add nothing measurable while costing about R22 000 more.

Cape Town does the opposite, and this is the part I did not expect. Its best value point sits at 20 000 litres, four sizes higher than Johannesburg’s, and the step up to 20 000 litres is actually cheaper per point than the step below it. Getting cheaper as you go bigger is backwards for almost any purchase, and the reason is the thing this whole calculator is about: in a winter rainfall town a big tank stops being a buffer between showers and starts being a bridge across the dry season. That only starts working once it is big enough to carry the water, so the value shows up late instead of early.

So the tool no longer gives everyone the same “do not overbuy” advice, because that advice is only true in about half the country. It works out where the value actually stops for your town, your roof and your water use, and says so.

While building it I also found a real bug worth owning up to. In a very dry town, where your roof simply cannot catch enough water no matter what you store, the tool was highlighting the 30 000 litre tank as its pick. That is exactly backwards: when the roof is the limit rather than the tank, buying bigger is the one thing that definitely will not help. It now points at the smallest size that reaches what your roof can actually deliver, and says plainly that the roof is the constraint.

If you have a tank already, I would still like to know how the estimate compares with what yours really delivers. That remains the one thing I cannot check from here.

The timing point is exactly what makes Durban tricky to model, because our rain comes in hard afternoon thunderstorms in summer, often more in an hour than the tank can absorb, and then the dry winter months when we are actually watering gardens are the months with almost nothing falling. Curious what the simulation shows for Durban compared to Joburg, because our annual totals are not that different but the pattern is almost the opposite of a Cape Town winter rainfall setup. Did you include eThekwini in the town list?

That 84% for Joburg versus 62% for Cape Town gap is exactly what people get wrong when they assume more annual rainfall automatically means a better tank return, because it is the summer clustering of Highveld storms that makes the timing work in our favour. The monthly-calculation flaw you fixed is the one that had people buying undersized tanks and then wondering why they ran dry in August. Running it against real daily data for ten years is the only honest way to size it, and I wish someone had built this before I watched my neighbour drop fifteen grand on a 5000-litre tank that cannot cover him through a dry July stretch.

1 Like

That 62% Cape Town figure makes sense the moment you remember our rainfall is almost entirely winter, so the tank fills from May to August and then gets drawn down across six dry southeaster months with almost no refill. Day Zero taught me that annual totals are close to meaningless, what matters is that the rain is front-loaded and demand peaks in December when nothing is falling. Good to see a calculator that actually models that instead of just multiplying roof area by a SAWS average and calling it done.

1 Like