Why pH Rises and Falls Every Day With CO2 Injection

Written 2026-11-10

A daily pH swing is normal in a CO2-injected tank. pH is set by KH (buffering capacity) and how much CO2 is dissolved in the water, and a solenoid valve on a timer only injects CO2 while the lights are on. Overnight, with the valve shut, CO2 off-gasses and pH climbs back up; once the lights come on and CO2 builds back up, pH drops again. Running a 60cm tank (KH 4) with a timed solenoid at 100% in Water Kiwoogi’s simulator, pH climbs to 7.62 right before the lights turn on and drops to 6.67 right before they turn off — a swing of 0.95 every single day.

Why it swings with the light cycle

The simulator sets pH as "pH = 6.35 + log10(KH × 15.71 ÷ CO2)" — the same KH/pH/CO2 chart aquarists already use. More CO2 shrinks the denominator and pulls pH down; less CO2 lets it climb back up. A solenoid only injects while the timer says the lights are on, and once it shuts off at night, CO2 escapes through the surface and pH recovers on its own. The size of the swing depends only on the ratio between the highest and lowest CO2 level, not on KH — KH just shifts the whole band up or down without changing how wide it is.

No swing isn’t automatically better

A manual needle valve left running 24 hours a day barely swings at all. But it also holds pH low the entire day, which slows nitrifying bacteria around the clock instead of just half the time. Running the same setup through the simulator, the tank with no CO2 finishes cycling on day 21, the timed solenoid (pH low only half the day) finishes on day 24, and the 24-hour manual valve (pH low all day) finishes last, on day 29. Peak nitrite also came out highest on the manual valve, at 0.83ppm on a standard test kit, versus 0.18ppm with no CO2 and 0.37ppm on the solenoid. Getting even a few hours of higher pH back each night helps the cycle finish faster.

The numbers

CO2 setupDaily pH rangeCycling donePeak nitrite (test kit ppm)
NoneFlat at 7.64 (no swing)Day 210.18
Timed solenoid (100%)6.67 – 7.62 (swing 0.95)Day 240.37
Manual valve (24h)Flat at 6.74 (no swing)Day 290.83

Turning the same solenoid down from 100% to 50% shrinks the swing to 6.97 – 7.63 (0.66). Dosing only as much CO2 as the plants can actually use, instead of running it at full blast, saves both the swing and the electricity.

How much swing is too much

The swing itself isn’t dangerous. What matters is whether both ends of the daily range stay inside the fish’s comfortable pH range. Neon tetras (comfortable between 5.5 and 7.5) fit entirely inside the solenoid tank’s swing (6.67–7.62) above, and all 6 survive 30 days with zero stress warnings. If a swing gets much wider than 1.0, or either end lands outside a species’ comfortable range, it’s worth talking to a fish store or an experienced keeper about turning down the CO2 rate or the lighting hours.

The button below runs this guide’s 60cm tank · timed solenoid CO2 at 100% · 6 neon tetras. Try lowering the injection rate in the CO2 settings to see the swing shrink for yourself.

Run this tank yourself

The numbers in this guide come from the Water Kiwoogi simulator model; real tanks can differ.