Pond water chemistry
A pH crash is not a slow drift. It is the moment the pond's carbonate buffer finally runs out and pH falls off a cliff, usually in the small hours of the morning while nobody is watching. Koi that looked normal at feeding time are found dead at sunrise with no marks, no ulcers, and nothing on them to explain it. The chemistry behind it is simple, predictable, and almost entirely preventable through one number that most owners never test.
Carbonate and bicarbonate ions in pond water absorb acid without the pH changing much. That capacity is measured as KH, or carbonate hardness, and on most American test kits it is labeled total alkalinity and reported in ppm as calcium carbonate. It behaves like a fuel tank: while there is anything in it, the gauge on the dashboard, pH, sits almost still. When it empties, pH has nothing holding it up and drops in hours rather than weeks.
That is why a crash feels sudden to the owner but is not sudden chemically. The pond had been running down its reserve for months, possibly years. The pH reading simply had no way of telling you. Understanding carbonate hardness and how it is consumed is the whole of the story; everything on this page is downstream of it.
Nothing unusual has to happen for a pond to acidify. It is the normal output of a stocked, filtered, fed system.
| Source | What it does to the buffer | When it bites hardest |
|---|---|---|
| Fish respiration | Exhaled CO2 dissolves into carbonic acid | Continuous; concentration peaks overnight |
| Filter nitrification | Converting ammonia to nitrate consumes alkalinity directly | Hardest through the warm months and after heavy feeding |
| Decaying food and leaves | Organic acids from uneaten pellets, leaf fall, bottom sludge | Fall and early winter; anywhere debris collects |
| Rain and soft top-up water | Dilutes what buffer is left rather than adding acid | After a storm, or on a pond topped up from a softener |
Of these, nitrification is usually the biggest single consumer in a well-run koi pond, which is an uncomfortable irony: the better your biofilter is working, the faster it eats your buffer.
Through daylight, plants, algae, and the green film on the walls pull CO2 out of the water. Less dissolved CO2 means less carbonic acid, and pH drifts up. After dark that reverses. Everything in the pond respires, nothing photosynthesizes, and dissolved CO2 climbs steadily until dawn. A pond with healthy alkalinity absorbs that swing and moves perhaps 0.2 to 0.3 of a pH unit between afternoon and sunrise. A pond with no reserve left has nothing to absorb it, and the same nightly CO2 build that used to be harmless takes pH down into the fives.
This is also why an afternoon pH test is the most flattering test you can take. Late afternoon is the daily high. If you want a reading that means something, take it at first light.
The warning signs of a crash are behavioral, and they appear after the water has already turned against the fish. There is no early visual tell.
If several fish are showing this at once and none of them show disease, water chemistry is the first place to look, not the last. A pond left several hours in a crashed state is lethal to koi, and by the time behavior tells you, a good part of that window is already spent.
The instinct in an emergency is to pour in a pH-up product and watch the reading climb. Resist it. A violently fast pH swing is itself dangerous, and there is a specific trap: at crashed pH most of the pond's ammonia sits in the relatively harmless ammonium form. Push pH up quickly and you convert it back to free ammonia, all at once, in a pond full of fish that are already compromised. Raise the buffer instead, in small steps, and let pH follow it on its own.
| Pond volume | Baking soda for about 1 dKH (~18 ppm) | Rough kitchen equivalent |
|---|---|---|
| 500 gal (1,900 L) | 57 g / 2.0 oz | about 4 tbsp |
| 1,000 gal (3,800 L) | 114 g / 4.0 oz | about 0.5 cup |
| 2,500 gal (9,500 L) | 285 g / 10.1 oz | about 1.3 cups |
| 5,000 gal (19,000 L) | 570 g / 20.1 oz | about 2.6 cups |
| 10,000 gal (38,000 L) | 1,140 g / 40.2 oz | about 5.2 cups |
Weigh it if you can. Baking soda packs differently depending on how it has settled in the box, and volume measures drift by a surprising amount. Also be honest about your pond volume: most owners quote the number from the day it was built, before the bog, the settlement chamber, and the second waterfall were added.
The dosing numbers on this page are the common rule of thumb in koi husbandry. They are widely used, they are a reasonable place to begin, and they are not a prescription for your pond. Every pond is different: the volume is almost always estimated rather than known, and your source water, the alkalinity already in the pond, dissolved CO2, stocking density and how hard the filter is working all change what a given dose actually does.
So calculate from your own pond rather than copying a figure, start lower than you think you need, measure, and adjust from what you measure. If the pond is already in trouble, with fish behaving abnormally or a parameter moving fast, talk to a koi health specialist or an aquatic veterinarian before you dose.
A pond that holds a carbonate reserve does not crash. That is the entire prevention strategy, and it is far simpler than the emergency it replaces.
| KH (dKH) | Total alkalinity (ppm) | What it means for a stocked koi pond |
|---|---|---|
| Under 3 | Under 55 | No reserve. A crash is not a risk here, it is a schedule |
| 3 to 5 | 55 to 90 | Thin. Overnight pH will move; a storm or a heavy feed can finish it |
| 6 to 10 | 105 to 180 | Target range. Comfortable margin against the nightly CO2 swing |
| 11 to 14 | 195 to 250 | More than needed, not harmful; common on hard well water |
| Over 14 | Over 250 | High, but usually unproblematic. Worth knowing where it comes from rather than correcting it |
Practically, that means testing KH on a schedule you actually keep, knowing the alkalinity of your source water, and keeping a passive carbonate reserve in the system so replenishment is not entirely dependent on you remembering. Crushed oyster shell or a carbonate media in a mesh bag in the filter dissolves as acid demands it and stops as soon as it does not. Regular partial water changes do the same job if your source water carries alkalinity, which on most municipal supplies it does.
The classic pH crash is an old, established, well-loved pond that has never had its buffer replenished. Nothing changed on the day it crashed. The reserve had simply been drawing down for years and finally reached zero on an ordinary summer night.
This is also where automated water changes earn their keep: a small continuous exchange keeps buffered make-up water arriving without anyone having to remember. H2Koi builds these to order alongside the monitoring, and we have never found another system that does it for koi ponds.
Manual testing is not wrong. It is just sampled at the wrong rate for what it is trying to catch.
KH falls continuously and slowly. If you test it monthly, you get twelve data points a year against a quantity that can go from a thin margin to zero inside a couple of warm weeks with a heavy-feeding filter. And pH, the parameter most people do test regularly, is the one that tells you least: it holds steady while the buffer drains, so months of comfortable readings are entirely consistent with a pond that is three weeks from a crash.
Then there is timing. Almost nobody tests at 4 a.m. The reading you take at 5 p.m. on a Saturday is the day's best-case number, taken at the point in the daily cycle furthest from the danger. A pond can show 7.6 every weekend for a month and still be dropping to 6.2 before dawn.
The gap, then, is not carelessness. It is that a crash develops on a timescale of hours in a parameter people check on a timescale of weeks, at the time of day it looks safest.
H2Koi monitors your pond continuously and tells you when something is moving in the wrong direction, so you find out from a trend rather than from behavior at the surface. It reports pH continuously, which is what makes the overnight fall visible instead of invisible, and it reports KH as a derived, computed value on a 0 to 20 dKH scale.
That KH figure is derived rather than titrated. It is an early-warning indicator on the parameter that moves first. H2Koi does not report GH, and it does not detect disease or parasites. It does not prevent anything on its own; it gives you the hours you would otherwise lose to not knowing.
Overnight deaths with clean, unmarked fish point at water rather than pathogens, and a pH crash is one of the common causes. Test KH and pH first thing, before you change anything. If KH reads at or near zero, you have your answer. Disease usually kills fish one at a time over days and leaves something visible; chemistry kills several at once and leaves nothing.
That is the normal daily cycle. Plants and algae consume CO2 during daylight, which lifts pH, and respire at night, which lowers it. A swing of a few tenths of a unit is healthy. A swing of a full point or more means your buffer is too thin to absorb the cycle, and that is a warning worth acting on.
Koi do well from about 7.0 to 8.5 and tolerate a slow drift outside that. What harms them is not a particular number but the speed of the change. A pond dropping from 7.8 to 6.0 in a few hours is far more dangerous than a pond that has sat quietly at 6.8 for a season, and several hours in a crashed pond is lethal.
About 3 g per 100 L raises KH by roughly 1 dKH, which works out to around 114 g, or 4 oz, per 1,000 gallons. Dissolve it in pond water first, add it to a well-mixed return, cap the change at 1 to 2 dKH per day, and re-test between doses. Do not calculate the whole distance to your target and dump it in one go.
It is the wrong tool. pH-up moves the reading without restoring the reserve that failed, so the pond crashes again on the next warm night. It can also move pH fast enough to be harmful in its own right, and it can convert a pond's ammonium back into toxic free ammonia. Rebuild the buffer and let pH come up with it.
No, and this is the single most common misreading in pond keeping. pH stays put precisely because buffer is being consumed to hold it there. A flat pH history tells you the buffer was still working on each of the days you tested. It says nothing about how much is left. Only a KH test answers that.
Rain does not usually cause one on its own; it exposes a pond that had no margin left. Rainwater carries no alkalinity, so a heavy storm dilutes what buffer remains and can take a thin pond over the edge. A pond holding 6 to 10 dKH shrugs off the same storm. If rain moves your pH noticeably, treat that as a KH problem.
Continuous monitoring will not make your pond immune to chemistry, but it does turn an overnight collapse into a trend you can see coming, verified against your own test kit. If you would like to talk through what that looks like on your pond, we are happy to.
Explore H2Koi