Aquarium CO2 Calculator: CO2 ppm from KH & pH

Free aquarium CO2 calculator: enter KH and pH to get dissolved CO2 in ppm via 3 × KH × 10^(7−pH). Target 20-30 ppm for planted tanks.

An aquarium CO2 calculator estimates the dissolved carbon dioxide in your planted tank from two numbers you can test at home: pH and carbonate hardness (KH, in dKH). The tool above runs the standard hobby formula, CO2 (ppm) = 3 × KH × 10^(7 − pH), in two directions. In measure mode, enter your pH and KH to read CO2 in ppm. In target mode, enter your KH and a desired ppm and it returns the pH to aim for. It then flags where you land: under 10 ppm is low for demanding plants, 20-30 ppm is the planted-tank sweet spot, and over 35 ppm pushes fish toward stress. Because the math assumes carbonic acid is the only thing moving your pH, treat every result as an estimate, not a lab reading — the sections below explain when the chart lies and how a drop checker keeps it honest.

How much CO2 should a planted aquarium have?

A planted aquarium should hold 20-30 ppm of dissolved CO2, with 30 ppm treated as the safe ceiling for a tank containing fish or shrimp. That range gives plants enough carbon for strong photosynthesis while staying below the roughly 35 ppm point where livestock begin gasping and losing color. Heavily stocked tanks should target the low 20s; plant-dominant aquascapes with few animals can sit at the top of the range.

Calculate Now

Aquarium CO₂ Calculator (pH/KH)

Dissolved CO₂
19.0 ppm
Assessment
Low-moderate
Formula
CO₂ = 3 × KH × 10⁽⁷⁻ᵖᴴ⁾
ℹ️ The pH/KH method assumes carbonates are your only buffer — phosphate buffers, peat, or heavy organics make it read high. Cross-check with a drop checker (4 dKH solution turning green ≈ 30 ppm).

How the calculator converts KH and pH into ppm

The calculator above needs only two inputs because dissolved CO2, pH, and KH are locked together by one equation: CO2 in ppm equals 3 × KH (in dKH) × 10 raised to the power of (7 − pH). Type your tested pH and KH into measure mode and it does the exponent for you. A tank at KH 4 and pH 6.6 returns 3 × 4 × 10^0.4 = 30 ppm — the classic planted-tank number. Drop the pH to 6.4 at the same KH and CO2 climbs to about 48 ppm, well into danger. Raise KH to 5 at pH 6.6 and you get roughly 38 ppm, which is why hard-water tanks need less of a pH drop for the same result. Target mode runs the equation backward: give it your KH and the ppm you want, and it solves pH = 7 − log10(ppm ÷ (3 × KH)). Ask for 25 ppm at KH 5 and it tells you to hold pH near 6.78. Use these numbers to set your bubble rate and solenoid timing, then confirm with a physical test rather than trusting the digits alone.

Where the 3 × KH × 10^(7−pH) formula comes from

The formula is a rearrangement of the carbonate buffer equilibrium. When CO2 dissolves in water it forms carbonic acid, which releases hydrogen ions and lowers pH; carbonate hardness (bicarbonate) resists that shift. Chemists express the balance with an equilibrium constant, and the aquarium version folds that constant, plus unit conversions, into the tidy factor of 3. The result: at a fixed KH, every 1.0 drop in pH corresponds to a tenfold rise in CO2. That elegance hides one large caveat. The equation assumes carbonic acid from CO2 is the only acid touching your pH. Real tanks are messier. Phosphate buffers from some pH-adjusting products, tannins leached from driftwood, and organic acids from decaying plants and aqua soil all push pH down without adding a single molecule of CO2. When they do, the chart reads a lower pH and reports more CO2 than is actually dissolved — often by 10 ppm or more. Aqua soil substrates are the usual culprit for a stubbornly acidic reading. That is why the KH/pH method is best treated as a ballpark, cross-checked against a drop checker or a controlled degassing test.

Reading a KH/pH/CO2 chart with worked examples

Every KH/pH/CO2 chart you have seen is just this formula tabulated. KH runs down one axis, pH across the other, and each cell is 3 × KH × 10^(7 − pH). A few anchor points make the pattern obvious. At KH 1 and pH 7.0 the chart shows 3 ppm — close to the natural equilibrium a tank reaches with room air. At KH 3 and pH 6.6 you get about 22 ppm. At KH 4 and pH 6.6 it is 30 ppm, the single most-quoted target in the hobby. At KH 4 and pH 6.4 the value jumps to roughly 48 ppm. Notice how a swing of just 0.2 pH units can move CO2 by 10 ppm or more at typical hardness — pH is a sensitive dial, so small measurement errors matter. To use a printed chart, test KH once (it changes slowly) and pH at the same time each day, then read the intersecting cell. The calculator above removes the rounding baked into most charts, which usually list values only in whole or half dKH steps and pH in 0.2 increments.

Why 20-30 ppm is the planted-tank target

Twenty to thirty ppm is the range where two competing needs overlap. Aquatic plants photosynthesize faster as CO2 rises, but the benefit flattens once dissolved CO2 reaches the mid-20s ppm — pushing higher buys little extra growth. Fish and shrimp sit on the other side of the trade. Dissolved CO2 interferes with their ability to offload it from their blood, so as levels climb past roughly 30 ppm they start gasping at the surface, hanging near filter outflows, and losing color. Thirty ppm is the widely cited safe ceiling for a stocked community tank, and over 35 ppm is genuinely risky. The safe number is not fixed: it moves with oxygen. A tank with strong surface movement and high dissolved O2 tolerates CO2 better than a still, oxygen-poor one, because fish under CO2 stress rely on available oxygen to compensate. That is the logic behind running CO2 hard during the photoperiod while keeping the surface rippling. Aim for the low-20s ppm if your tank is heavily stocked, and reserve the upper end of the range for plant-dominant aquascapes with few animals.

The drop checker: a physical second opinion

A drop checker sidesteps the buffer problem by measuring CO2 optically. You fill a small glass reservoir with a 4 dKH reference solution — laboratory water of known, fixed carbonate hardness — plus a few drops of bromothymol blue pH indicator. The reservoir hangs in the tank with an air gap, so only CO2 gas crosses between the tank water and the reference fluid. Because the reference KH is fixed at 4, its color reports CO2 directly and is immune to the tannins and phosphate buffers that fool a tank-water reading. Blue means under about 15 ppm, green means roughly 20-30 ppm, and yellow warns of 40 ppm or more. Green is the target. The catch is lag: the solution takes about two hours to equilibrate, so it shows you where CO2 was, not where it is right now. Read it in the afternoon once injection has been running for hours, never at lights-on. Use the calculator for a fast numeric estimate and the drop checker as the slow, honest confirmation — when the two disagree, an unaccounted acid is usually skewing your pH.

Safe CO2 practices and non-injected tanks

Introduce CO2 gradually. Add it in small increments and raise the rate over one to two weeks while watching livestock each afternoon, rather than chasing 30 ppm on day one. Run injection only during the photoperiod: plants use no CO2 in the dark, so put the system on a solenoid timed to switch on 1-2 hours before the lights and off 30-60 minutes before they go out. Overnight, CO2 accumulates without being consumed, and dawn is when fish are most at risk. Surface agitation is the safety valve — a rippling surface drives off excess CO2 and pulls in oxygen, which is exactly why heavily injected tanks pair strong CO2 with an active surface or an air stone at night. Non-injected tanks need none of this. A planted tank with fish but no CO2 gas sits near 2-3 ppm, the equilibrium it reaches with room air plus a little from respiration. That is far below the plant saturation point, which is why low-tech tanks favor slow growers like Anubias, Java fern, and cryptocoryne that get by on ambient carbon.

Key Information

ParameterDetails
CO2 Formula (measure mode)3 × KH × 10^(7 − pH) = ppm
Target-pH FormulapH = 7 − log10(ppm ÷ (3 × KH))
Planted-Tank Target20-30 ppm (30 ppm safe cap)
Non-Injected Equilibrium~2-3 ppm CO2

Frequently Asked Questions

How much CO2 should a planted aquarium have?

A planted aquarium should hold 20-30 ppm of dissolved CO2, with 30 ppm treated as the safe ceiling for a tank containing fish or shrimp. That range gives plants enough carbon for strong photosynthesis while staying below the roughly 35 ppm point where livestock begin gasping and losing color. Heavily stocked tanks should target the low 20s; plant-dominant aquascapes with few animals can sit at the top of the range.

How do I calculate aquarium CO2 from KH and pH?

Calculate dissolved CO2 with the formula CO2 (ppm) = 3 × KH × 10^(7 − pH), where KH is carbonate hardness in dKH. For example, KH 4 and pH 6.6 gives 3 × 4 × 10^0.4 = about 30 ppm. Every 1.0 drop in pH at fixed KH multiplies CO2 tenfold. The calculator above does this instantly, and its target mode reverses it to tell you which pH produces the ppm you want.

Is 30 ppm of CO2 safe for fish?

Thirty ppm is generally safe for most community fish and shrimp, but it is a ceiling, not a comfort zone. Safety depends on oxygen: a tank with strong surface agitation and high dissolved O2 tolerates 30 ppm well, while a still, oxygen-poor tank can stress fish at the same level. Watch for surface gasping, and always keep CO2 off at night, when levels build up unused.

Are these calculators free to use?

Yes, all calculators on CalcCorp are completely free — no registration, no login, no hidden charges. Results are calculated instantly in your browser and we do not store any of your data.

How accurate are these calculations?

Our calculators use standard financial formulas updated with the latest tax rates, interest rates, and government policies for 2026. Results are accurate for planning purposes but should be verified with a professional for final decisions.

Related Calculators

More Hobby Calculators

View all Hobby Calculators

Popular Calculators

Need a calculator we don't have?Request One
Found an issue?Let us know

Last updated: August 2026