Aquarium CO₂ calculator: pH and KH to ppm

Enter your tank’s pH and KH, tested at the same time, a few hours after the CO₂ comes on. You get the CO₂ in ppm and whether it suits plants and fish.

For the example: 30 ppm. In the usual target for injected tanks. Your reading ↓

Worked example: a planted tank with injected CO₂ reading pH 6.6 and KH 4 dKH. Replace the numbers with yours.

The pH and KH table

Each cell is the CO₂ in ppm for that pair of readings. The usual target for a tank with injected CO₂ is shaded.

CO₂ in ppm by pH (across) and KH in dKH (down)
KHpH 6.4pH 6.6pH 6.8pH 7.0pH 7.2pH 7.4
1 dKH127.54.83.01.91.2
2 dKH24159.56.03.82.4
3 dKH3623149.05.73.6
4 dKH483019127.64.8
6 dKH72452918117.2
8 dKH96603824159.6

How the number is worked out

CO₂ dissolved in water turns part of itself into carbonic acid and lowers the pH. How far the pH falls depends on the KH, the carbonate that buffers it. The standard aquarium formula reverses that: CO₂ in ppm = 3 × KH in dKH × 10(7 − pH). Each step of 0.2 down in pH means about 60 percent more CO₂, so a small error in the pH reading moves the answer a lot. Use a pH meter or a fresh test, and test pH and KH from the same sample.

When the answer is wrong

The formula assumes carbonate is the only thing holding the pH. Driftwood and leaves release tannins, active planted-tank soils pull the KH down and some fertilizers and pH buffers add phosphate: each makes the calculated CO₂ read higher than it is. If your tank has any of these, check the result against a drop checker, a small glass bulb of 4 dKH reference water that turns from blue to green at about 30 ppm, or against the fish: gasping at the surface means too much, whatever the number says. Fish gasping

Turning it up safely

Raise the bubble rate a little at a time, over several days, and watch the fish for an hour after the CO₂ comes on each morning. Keep the surface rippling so oxygen gets in, run the CO₂ on a timer that switches it off before the lights go out, and measure again after each change. Light and CO₂ hours