CO₂ calculator (pH & kH)
Dissolved CO₂ in a freshwater tank is estimated from two readings: CO₂ ≈ 3 × kH × 10^(7 − pH), with kH in dKH. At pH 6.8 and kH 4 that works out to 19 ppm — inside the 15–30 ppm range most injected planted tanks are run at.
Freshwater only — the formula assumes all alkalinity is carbonate, which is not true in marine water.
The formula
The 10^(7 − pH) part is exponential, which is why small pH movements mean large
CO₂ movements: every 0.1 of pH is roughly a 26% change in the estimate. It is also
why pH alone tells you nothing — you need kH.
Reference table
Estimated CO₂ in ppm for common freshwater readings. Green is the usual target range, amber is worth watching, red is a problem.
| kH ↓ / pH → | 6.4 | 6.6 | 6.8 | 7.0 | 7.2 | 7.4 |
|---|---|---|---|---|---|---|
| 2 | 24 | 15 | 10 | 6 | 4 | 2 |
| 4 | 48 | 30 | 19 | 12 | 8 | 5 |
| 6 | 72 | 45 | 29 | 18 | 11 | 7 |
| 8 | 96 | 60 | 38 | 24 | 15 | 10 |
| 10 | 119 | 75 | 48 | 30 | 19 | 12 |
How to use the number
- 15–30 ppm is where most CO₂-injected planted tanks sit. Below 10 ppm, growth stalls and slow growers lose the competition to algae.
- Above 40 ppm livestock start gasping at the surface, especially shrimp and small rasboras. Back the injection off and add surface agitation.
- Measure at the same time each day. pH rises through the photoperiod as plants strip CO₂, so an evening reading always looks "lower CO₂" than a morning one.
- Calibrate the inputs. A pH pen that is 0.2 off moves the estimate by roughly 60%; kH from a strip is a guess at best.
- Cross-check. A drop checker is a second opinion, not a replacement for the maths — but if the two disagree wildly, trust neither until you re-test pH.
What breaks the estimate
- Marine water. Borate alkalinity invalidates the carbonate assumption entirely.
- pH adjusters and buffers. pH-minus products, alkaline buffers and some substrates move pH without changing CO₂.
- Active aqua soil. Fresh soil strips kH and pulls pH down; the reading looks like high CO₂ when it is mostly the substrate.
- Organic acids and tannins. They lower pH without adding CO₂.
- A single reading. One number on one afternoon is a data point. Trends over a week tell you what the tank is actually doing.
Questions
What is the CO₂ formula from pH and kH?
CO₂ (ppm) ≈ 3 × kH × 10^(7 − pH), with kH in dKH. Every 0.1 of pH is roughly a 26% change in the result.
What is a good CO₂ level?
About 15–30 ppm for an injected planted tank; 30 ppm is the usual target. Under 10 ppm plants stall, over 40 ppm fish and shrimp suffer.
Why do two tanks at pH 6.8 read differently?
kH. At kH 4 you get 19 ppm; at kH 10 the same pH means 48 ppm.
Does this work for saltwater?
No — marine alkalinity is not mostly carbonate, so the formula does not apply.
Why does my reading change between morning and evening?
Plants consume CO₂ in the light and respire at night, so pH swings daily. Measure at the same time of day and look at the trend.
AquaGuru derives CO₂ automatically from every logged pH and kH reading and charts the trend — so AquaAI can see a CO₂ problem before the plants do.