Aquarium CO2 Concentration Estimator
For planted tanks running pressurised CO2, the classic way to estimate dissolved CO2 is from the relationship between pH and carbonate hardness (KH). Enter both readings below. Then read the limitations — this method has well-known failure modes, and serious CO2 injection should always be cross-checked with a drop checker and your fish’s behaviour.
Estimate dissolved CO2
Take the pH reading at the time of interest — CO2 swings across the day as injection and photosynthesis run. See the full pH/KH/CO2 chart.
The formula and its chemistry
Dissolved CO2, carbonate hardness and pH are linked by the carbonate buffering equilibrium: CO2 forms carbonic acid in water, and the ratio of acid to bicarbonate sets the pH (the Henderson–Hasselbalch relationship). Rearranged with hobby units and the standard equilibrium constants, this yields the formula used by virtually every aquarium CO2 chart and calculator:
Example: KH 4 and pH 6.6 gives 3 × 4 × 100.4 ≈ 30 ppm — right at the top of the usual target band. Uninjected tanks at atmospheric equilibrium sit around 2–3 ppm.
When this estimate is wrong
The formula assumes carbonate/bicarbonate is the only thing buffering your pH. Real tanks often violate that assumption:
- Other acids and buffers: humic acids from driftwood and botanicals, aquasoils that deliberately lower KH and pH, phosphate-based pH buffers, and nitrate accumulation all shift pH without CO2 being involved. In tannin-stained or aquasoil tanks the formula can overstate CO2 several-fold.
- Test kit precision: a pH reading off by 0.2 changes the CO2 estimate by ~60%. Liquid KH kits resolve only to ~0.5–1 dKH. Treat the output as a band, not a number.
- Very low KH: below ~2 dKH the arithmetic still works but both measurements get proportionally noisier, and pH itself becomes unstable.
This is why experienced planted-tank keepers use the pH-drop method instead: measure the pH of degassed tank water (left in a glass 24 h), then run CO2 until tank pH sits about 1.0 unit lower. A 1.0 pH drop corresponds to a ~10× rise in CO2 regardless of what else buffers the water — and a drop checker with 4 dKH reference fluid provides an independent visual cross-check.
Safe practice with livestock
CO2 tolerance varies by species, oxygenation and acclimation. Fish gasping at the surface, sitting listlessly at the bottom, or shrimp climbing out of the water are emergency signals: increase surface agitation immediately and cut injection. Introduce or raise CO2 gradually over days, run it on a timer (off at night), and never make large changes right before leaving the house. For persistent livestock health issues, consult an aquatic veterinarian or experienced specialist — CO2 stress can mask or mimic disease.
Frequently asked questions
What CO2 level should a planted tank target?
The mainstream target for injected tanks is 20–30 ppm during the photoperiod. Low-tech (non-injected) tanks run fine at 2–5 ppm with easy plants — the target only matters when you’re driving demanding plants with strong light.
Why does my drop checker disagree with this calculator?
The drop checker uses a sealed 4 dKH reference fluid, so it ignores your tank’s confounding buffers — when they disagree, trust the drop checker’s direction. Remember it lags the tank by 1–2 hours because gas must diffuse into it.
Does CO2 injection crash pH dangerously?
The pH drop from CO2 is real but different in kind from a mineral-acid crash: CO2-driven drops don’t strip KH, and fish generally tolerate a 1-unit CO2 pH swing well. The danger is the CO2 itself at high concentration, not the pH reading.
Can I raise KH to get more CO2?
No — that reads the chart backwards. KH doesn’t create CO2; the formula just describes the equilibrium. Raising KH while holding injection constant raises pH and leaves CO2 unchanged. Set CO2 with your injection rate, verified by drop checker and pH drop.