CO2

Carbon dioxide (CO₂)

The single nutrient that decides whether a planted tank lights up or limps along. Calculated from pH and KH, dangerous when over-injected.

Ideal range15–35 mg/L
Critical above> 40 mg/L

What it is

Dissolved carbon dioxide. Plants pull it from the water column to drive photosynthesis; fish exhale it as a metabolic waste. In a non-injected tank, CO₂ sits at the equilibrium with the atmosphere (~3 mg/L) — enough for slow-growing low-tech plants, not enough for the demanding stems, carpets, and red species that planted-tank hobbyists are usually after.

CO₂ injection rigs push pressurised gas through a diffuser; the dissolved concentration is what matters, and it's not what the rig flow rate tells you.

Why it matters

The difference between 5 mg/L CO₂ and 25 mg/L CO₂ is the difference between a tank that grows algae and a tank that grows plants. CO₂ is the limiting nutrient in 90% of "I dose everything but nothing grows" cases.

It's also the parameter most likely to kill fish suddenly. Above 40 mg/L sustained, fish can't unload metabolic CO₂ across their gills into water already saturated with it, and they suffocate even though oxygen is plenty.

How to test

Three options. A drop checker (4 °dKH solution + bromothymol indicator) lags by 24 hours but reads honestly — yellow = too much, green = target, blue = not enough. A pH probe + KH reading runs through the pH + KH formula; the free guide explains the chemistry and when the formula lies. A direct CO₂ meter is most accurate but expensive.

What high and low look like

Below 10 mg/L: slow plant growth, algae bias toward green hair and brown diatoms. 15–30 mg/L: target band for most planted tanks. Above 35 mg/L: fish gasping at the surface, particularly at lights-off when the photosynthetic O₂ production stops.

How to fix

Too low — add or increase CO₂ injection; aim for a 1.0 pH drop from non-injected baseline. Too high — back off injection, increase surface agitation (CO₂ off-gases through any turbulent surface), and run an air stone on a timer for the dark period as a fail-safe.

Stormy

Stormy watches this number over time and tells you before it drifts. Inside the app, on every tank you keep.

Open a free reefnotes account →