Planted tank tool

Aquarium CO2 Calculator

Enter a pH and carbonate hardness (dKH) reading from your planted tank to estimate dissolved CO2 in ppm. The result is placed in a color-coded band — low, below target, target, high or excessive — and the pH/KH grid below shows the same estimate across the usual planted-tank range.

Your water readings

Use a calibrated pH pen or a liquid test read in daylight. Take the reading at a consistent point in the photoperiod.

Take KH from the same water sample as the pH reading. 1 dKH is about 17.8 ppm CaCO3.

The estimate assumes carbonate is the main buffer in the water and uses CO2 (ppm) = 3 × KH (dKH) × 10(7 − pH). Phosphate buffers, pH adjusters and other non-carbonate buffers make the number unreliable.

Runs in your browser. Your pH and KH readings are not uploaded or saved.

pH and KH CO2 reference grid

Estimated CO2 in ppm for carbonate hardness from 1 to 30 dKH and pH from 6.0 to 8.0. Find your KH row and pH column; the cell is the same calculation the form runs.

Estimated dissolved CO2 in ppm by pH and carbonate hardness. Assumes carbonate is the main buffer.
KH (dKH)6.06.26.46.66.87.07.27.47.67.88.0
130.018.911.97.54.83.01.91.20.80.50.3
260.037.923.915.19.56.03.82.41.51.00.6
390.056.835.822.614.39.05.73.62.31.40.9
4120.075.747.830.119.012.07.64.83.01.91.2
5150.094.659.737.723.815.09.56.03.82.41.5
6180.0113.671.745.228.518.011.47.24.52.91.8
7210.0132.583.652.733.321.013.38.45.33.32.1
8240.0151.495.560.338.024.015.19.66.03.82.4
9270.0170.4107.567.842.827.017.010.76.84.32.7
10300.0189.3119.475.447.530.018.911.97.54.83.0
11330.0208.2131.482.952.333.020.813.18.35.23.3
12360.0227.1143.390.457.136.022.714.39.05.73.6
13390.0246.1155.398.061.839.024.615.59.86.23.9
14420.0265.0167.2105.566.642.026.516.710.56.74.2
15450.0283.9179.1113.071.345.028.417.911.37.14.5
16480.0302.9191.1120.676.148.030.319.112.17.64.8
17510.0321.8203.0128.180.851.032.220.312.88.15.1
18540.0340.7215.0135.685.654.034.121.513.68.65.4
19570.0359.6226.9143.290.357.036.022.714.39.05.7
20600.0378.6238.9150.795.160.037.923.915.19.56.0
Low (under 10 ppm)Below target (10 to 15 ppm)Target range (15 to 30 ppm)High (30 to 40 ppm)Excessive (over 40 ppm)

pH is a log scale: each full unit is a tenfold change in the estimate, and 0.1 pH is roughly a 26% change. That is why small pH measurement errors matter. The grid assumes carbonate buffering only.

How to use the CO2 calculator

  1. Measure pH with a calibrated instrument and read it in daylight, not under coloured room lighting.
  2. Measure KH from the same water sample. Enter dKH or the ppm CaCO3 value printed by your test kit — the unit selector converts it.
  3. Calculate. The result is an estimate of dissolved CO2 in ppm, shown with the band it falls into and the pH that would correspond to 30 ppm at your KH.
  4. Repeat at the same time on another day before acting. One reading is a snapshot; a pattern is information.

How the pH and KH reading becomes a CO2 number

The calculator uses the standard hobby relationship: CO2 in ppm equals3 × KH in dKH × 10(7 − pH). At 4 dKH and pH 6.8 that is 3 × 4 × 100.2, or about 19 ppm. At the same KH and pH 6.6 it is about 30 ppm.

Because pH is logarithmic, the estimate moves fast near the edges. Drop the pH by a full unit at the same KH and the calculated CO2 rises tenfold; drop it by 0.1 and the estimate rises by about 26%. A pH pen that is off by 0.1 therefore moves a 19 ppm reading to roughly 24 ppm without any change in the tank.

Worked example

A 20 US gallon planted tank reads pH 6.8 and 4 dKH. The estimate is about 19.0 ppm, inside the usual 15 to 30 ppm target band. At that KH, 30 ppm corresponds to roughly pH 6.60 — about 0.20 lower than the reading. That gap is a reference for where the relationship sits, not an instruction to add acid. In an injected tank the pH moves because CO2 dissolved in the water forms carbonic acid.

Why the estimate can be wrong

The formula assumes the only buffer in the water is carbonate. That is often not true in a planted tank:

  • Phosphate-based pH adjusters and some buffer products hold pH at a different point for the same KH, so the estimate drifts.
  • pH controllers, CO2 reactors and mineral-rich aquasoils can change the relationship between KH and dissolved CO2.
  • A pH reading taken before the CO2 system has run for the day, or long after it switched off, describes a different tank than one taken mid-photoperiod.
  • An uncalibrated pH probe, expired test reagent or a KH test read past its endpoint produces a confident number from bad inputs.

A drop checker is a second, slower opinion. When the two disagree, trust the livestock: gasping at the surface, lethargy or shrimp climbing the glass means CO2 is too high for that tank regardless of what either reading says.

Reading the CO2 bands

  • Low (under 10 ppm): often CO2-limited for demanding plants. Check whether the injection is running at all before changing anything else.
  • Below target (10 to 15 ppm): workable for slow-growing plants, below the usual target for high-demand carpets and stems.
  • Target range (15 to 30 ppm): the common planted-tank band. Keep watching fish and shrimp behaviour; the number does not override a gasping fish.
  • High (30 to 40 ppm): above the usual target. Recheck the pH and KH readings and the timing before increasing injection.
  • Excessive (over 40 ppm): the range where livestock stress is common. Increase surface agitation or reduce injection, then recheck.

What this calculator does not do

  • It does not measure CO2. It estimates it from two other readings, so errors in either input carry straight through.
  • It does not account for phosphate or other non-carbonate buffers, and it cannot tell you which buffer your tank is running.
  • It does not recommend a bubble rate, regulator setting or dosing schedule. Those depend on the tank, diffuser, flow and livestock.
  • It is not a substitute for a drop checker, a CO2 test or watching livestock during the photoperiod.

If you are still working out how much water the tank actually holds, ouraquarium tank volume calculatorgives the net volume first. If KH is the number you are trying to change rather than read, see the buffer side in our guide toraising alkalinity in a reef tank.

Frequently asked questions

How is CO2 calculated from pH and KH?

The calculator uses the common hobby relationship CO2 (ppm) = 3 × KH (dKH) × 10^(7 − pH). At pH 6.8 and 4 dKH that gives about 19 ppm. It is an estimate of dissolved CO2 based on the carbonate buffer, not a direct measurement of the gas in the water.

What CO2 level should a planted tank run at?

Most planted tanks aim for roughly 15 to 30 ppm during the photoperiod, with 30 ppm treated as the usual upper target. Above 40 ppm is the range where fish and shrimp often show stress, so the number matters less than livestock behaviour. If fish are gasping at the surface, increase surface agitation or reduce injection regardless of the calculated value.

Why does the calculator give a different number from my drop checker?

A drop checker reads a separate indicator solution and responds over tens of minutes, while this estimate comes from a single pH and KH reading. The pH/KH method also assumes carbonate is the only buffer. Phosphate buffers, pH adjusters, mineral-rich substrate and freshly mixed water can all break that assumption and move the estimate away from real CO2.

Does KH cause CO2 to change?

No. KH is buffering capacity, not a CO2 source. At a fixed pH, though, the formula scales the estimate with KH: raising KH from 4 to 8 dKH doubles the calculated CO2 without adding any gas. That is why the pH/KH method only works when KH is stable and the water is carbonate-buffered.

Why does my CO2 reading change during the day?

Plants consume CO2 while the lights are on and release it in the dark. In an injected tank the pH typically rises through the photoperiod as CO2 is used, so the same water can estimate lower CO2 at 7 pm than at 10 am. Measure at the same point in the lighting schedule, and compare readings from the same time of day.

Can I use this to set a CO2 regulator?

Use it as a starting reference, not a setpoint. A regulator is tuned by bubble rate, surface agitation and livestock response, then checked with a drop checker or a CO2 test. Do not add acid to chase a target pH from this table: pH movement in a planted tank should come from CO2 injection, and pH is not a safe dosing dial on its own.

Does temperature matter?

The relationship is defined near 25 °C (77 °F) and is commonly used across normal tropical tank temperatures. pH readings themselves shift with temperature and with probe calibration, so let the sample reach room temperature, calibrate the pH pen, and treat small differences as noise rather than a CO2 change.