The role of ads in WaterWatch
I need to have a word with you about ads. Not because I particularly enjoy this conversation — I'd honestly rather be writing about dissolved oxygen levels — but because you're looking at a page that has quite a few of them, and you deserve a straight answer for why.
The situation, plainly stated
I'm 17. I built WaterWatch in my bedroom, between homework and A-level revision, because I got annoyed that nobody had put Thames Water's discharge data somewhere a normal person could actually read it. I did not foresee that "building something useful" would eventually mean "paying a monthly AWS bill indefinitely." Here we are.
The platform runs on a proper production stack: AWS Lambda ingestion jobs that wake up every 15 minutes around the clock to check Thames Water's API, Cloudflare Workers and D1 for the live layer, Supabase for the historical database, and Vercel for the frontend. I've been obsessive about keeping costs low — the kind of obsessive where I've genuinely lost sleep over a Athena query scanning 2TB when it should have scanned 40GB — but "low" still isn't zero, and zero is what I have when the credits run out.
AWS gave me $160 in startup credits. They expire in August 2026. After that, the choice is: ads, a donation button that nobody clicks, or watching the Lambda jobs quietly die at 2am while I'm asleep. I picked ads.
A paywall was never an option. The whole point of WaterWatch is that anyone — swimmers, journalists, angry river-swimmers, local councillors, bored hydrologists — can see exactly what their local water company is pumping into waterways. Putting that behind a subscription would be like building a public noticeboard and then charging people to read it. Donations are lovely in theory and deeply unreliable in practice. Ads are the one model that scales with traffic, costs the reader nothing, and doesn't require me to send guilt-trip emails every quarter.
The good news: most of WaterWatch doesn't have any
This is the part I actually feel good about. You can open the map, click into any of the 700+ CSO sites, scroll through years of discharge history, check rainfall readings, inspect river levels, set up email alerts for your local site, read methodology posts, and do basically everything the platform exists to do — without a single ad appearing anywhere on screen.
That was a deliberate decision, not an oversight. If you're staring at a sensor reading telling you Thames Water discharged sewage outside your house for eleven hours on a Sunday, the absolute last thing I want appearing next to that timestamp is a banner ad for a meal-kit delivery service. Context matters. A 728×90 leaderboard beside discharge event data would be disrespectful to the data and to the person reading it.
Ads only surface in two places: the CSV download gate and this blog. Both were chosen because the stakes are lower — you're not in the middle of something urgent. The reasoning behind each is slightly different, and both are worth explaining.
The CSV gate: ten seconds that keep the servers on
Downloading a CSV is a power move. It means you're not just browsing — you want the raw data to do something serious with: drop it into a spreadsheet, run it through a GIS tool, put it in a dissertation, or write a piece of journalism. I love that people do this. I built the export feature specifically so they could.
But a CSV download is also the most computationally expensive thing the platform does for a single user. It runs a database query across potentially years of events, serialises the results, and ships the file to your browser. The people pulling CSVs are getting the maximum possible value out of WaterWatch — and ten seconds of their time, in exchange for that, seems like a reasonable ask.
Think of the CSV gate as a toll booth, except instead of money you pay in mild inconvenience, and instead of a road you get a spreadsheet full of sewage data. Honestly a better deal than most toll roads.
If you download CSVs regularly and the gate is genuinely getting in your way, there's a Premium accountthat removes it completely. I'm not trying to extract money from casual visitors — I'm trying to make the people who get the most out of the platform contribute something proportionate to what they get out of it. That feels fair to me. If it doesn't feel fair to you, I'm genuinely open to hearing why.
Why this particular page has quite a lot of ads
You've definitely noticed. In the spirit of the transparency this post is ostensibly about: yes, I absolutely put more ads on this page on purpose. Here's the logic, and I promise it's not as cynical as it sounds.
The blog is the one part of WaterWatch where the content is leisure reading. You are not here in a crisis. Nobody is pacing their kitchen waiting for this blog post to load so they can make a time-sensitive decision about river safety. You're reading an essay about ad policy, which is, let's be honest, a fairly relaxed activity. An ad between paragraphs here costs you almost nothing compared to an ad beside a discharge event timestamp — and the revenue is the same either way.
So I lean into it. The blog earns its keep. If you're going to run ads at all, run them where they cause the least disruption — and then actually run them, rather than making a grand principled statement about ad placement and then burying a single 60×60 pixel unit in the footer where nobody will ever see it.
The line I won't cross
There are a few things that are categorically off the table, regardless of what they might earn:
- No ads anywhere near live discharge data, site pages, or alerts — ever
- No autoplay video ads (I find them as insufferable as you do)
- No page-blocking interstitials — if you want to leave, you can leave
- No ads for logged-in Premium subscribers, who are literally paying to avoid this
- No selling your data — WaterWatch doesn't profile you beyond what Google AdSense collects by default, which you can read about in their privacy policy
- No sketchy ad networks — it's Google AdSense or nothing
I use Google AdSense because it's the most audited, most regulated, most widely trusted ad platform on the internet. They handle content quality filtering and UK/EU GDPR compliance so I don't have to. I don't have any additional tracking layers, third-party analytics scripts, or mystery pixels. Vercel collects basic edge analytics (page views, country, device type). That's genuinely the whole list.
How to make me slightly less stressed about money
Option one: just leave ads enabled when you visit. I know ad blockers are basically default browser behaviour at this point, and I'm not going to pretend I've never used one. But if you find WaterWatch useful and want it to keep existing, whitelisting water-watch.co.uk costs you nothing and genuinely helps. A few pence per page load, multiplied across thousands of sessions, is what keeps the Lambda jobs running at 2am without me having to think about it.
Option two: Premium. You get rid of ads entirely, unlock SMS alerts, higher subscription limits, and early access to features I'm building. You also get the quiet satisfaction of knowing you're directly funding a sixth-former's slightly obsessive river data project, which is, I think, a genuinely good use of a few pounds a month.
Option three: just keep using the free version. That's what it's there for. The map, the site pages, the alerts — none of that is going away. I'm not going to start gating the core data. The moment WaterWatch stops being free to access, it stops being what it set out to be, and that's not a trade I'm willing to make.
700+ Thames Water discharge sites, updated every 15 minutes, completely free to explore. No paywall. No account required. Just the numbers.