Help & guidance

Frequently asked questions

Everything you need to know about CO₂, water chemistry and using AquaCalc — whether you're just starting out or fine-tuning a high-tech planted tank.

CO₂ & pH

8 questions
The standard formula for calculating dissolved CO₂ in an aquarium is: CO₂ (ppm) = KH (dKH) × 12.839 / 10^(pH − 6.35). It works because carbonate hardness (KH) and pH are directly related to the amount of CO₂ dissolved in water — as CO₂ rises, pH falls in a predictable way. AquaCalc calculates this automatically the moment you enter your KH and pH readings.
The generally accepted target range is 20–35 ppm. Most planted tank keepers aim for around 30 ppm for good plant growth without stressing fish. Slower-growing or low-light tanks may thrive with less — around 15–20 ppm. AquaCalc calculates your target pH from your KH value and your chosen CO₂ target, so you know exactly what pH to aim for at lights-on.
When CO₂ dissolves in water it forms carbonic acid (H₂CO₃), which lowers the pH. This is completely normal and expected — it is the principle behind using pH as an indirect measure of CO₂. A drop of around 1.0 pH unit from your degassed reading typically corresponds to approximately 30 ppm CO₂, though the exact relationship depends on your KH.
A degassed pH reading is your tank water measured after all CO₂ has been removed — typically by shaking a sample vigorously for 2–3 minutes and then testing it. This gives you the "baseline" pH with no CO₂ influence. In the standard KH method, you can use it as a cross-check: your target pH at lights-on should be approximately 1.0 unit below your degassed reading. AquaCalc shows both target values side by side.
Most planted tank keepers turn CO₂ on 1–2 hours before lights-on. This gives the CO₂ time to build up in the water so it is at or near the target level when photosynthesis begins. AquaCalc's pH reading log helps you track this build-up — log a reading every 30 minutes from CO₂-on to lights-on and watch the chart fill in.
CO₂ should typically be turned off 1 hour before lights-off. Once the lights go out, plants stop consuming CO₂ via photosynthesis, so levels continue to rise. Turning CO₂ off early prevents dangerous overnight accumulation, especially in tanks with fish.
Several things can cause this: high KH buffers pH strongly and requires more CO₂ to see a meaningful drop; a poorly diffusing CO₂ system (e.g. a clogged diffuser or low pressure) may not be dissolving CO₂ efficiently; or excessive surface agitation from filters or wavemakers may be off-gassing CO₂ faster than it is being added. Check your diffuser output and reduce surface movement if needed. See our surface agitation guide and CO₂ stability guide for more detail on balancing gas exchange.
A gradual overnight pH drop without CO₂ is often caused by CO₂ produced by fish respiration and bacterial activity in the substrate. It can also indicate low KH (poor buffering capacity) or the early stages of a pH crash. AquaCalc uses the morning pH reading (CO₂ off, overnight) as your starting baseline — if this is drifting lower over time, it may be worth testing KH and checking for substrate buffering issues.

Aquasoil & pH drop method

6 questions
Aquasoil (and similar buffering substrates like Fluval Stratum or UNS Controsoil) releases ions that actively lower the water's KH and buffer the pH independently of CO₂. This breaks the fundamental assumption behind the KH/pH/CO₂ formula — that KH and pH changes are driven solely by CO₂. The formula can still give a number, but it will not reflect the actual dissolved CO₂ in your water.
The pH drop method bypasses the KH relationship entirely. Instead, it uses your overnight pH reading — taken in the morning before CO₂ has been on — as the "degassed baseline" for that specific tank. CO₂ is then estimated using the formula 3 × 10^(overnight pH − current pH). The logic is that 3 ppm represents the CO₂ content of water in equilibrium with the atmosphere, and each 1.0 pH unit drop from that baseline represents a 10× increase in CO₂.
In a standard tank, you shake a water sample to drive off CO₂ and get a true degassed reading. But in an aquasoil tank, the water chemistry is already being influenced by the substrate — a shaken sample still reflects that buffered chemistry, not a neutral baseline. The overnight reading (with CO₂ off and fish respiration at its lowest) is the closest you can get to a degassed baseline in a heavily buffered system.
It is an approximation, not a precise measurement — AquaCalc clearly labels it as an estimate (≈). The 3 ppm baseline is a widely used convention in the planted aquarium hobby and gives a useful guide, but actual values can vary depending on temperature, the specific ionic composition of your water, and how heavily the substrate is buffering. Use it alongside a drop checker as a cross-reference rather than as an absolute figure.
Yes — a drop checker uses its own reference water (usually 4 dKH) isolated from the tank, so the substrate's effect on the tank water does not interfere with it. A drop checker showing green is a useful confirmation that CO₂ is in a reasonable range, regardless of what the tank pH is doing. Use AquaCalc's pH drop method alongside your drop checker for the most complete picture.
Yes, this is very common. Many aquasoils buffer water to a pH of 5.8–6.8 depending on the brand, water hardness and how long the substrate has been running. As the substrate ages (usually 6–12 months) the buffering effect weakens and the pH will gradually rise toward your tap water's natural level. During this transition, revisit AquaCalc's settings and consider switching to the KH method once the substrate is no longer significantly buffering.

RO water mixing

6 questions
Reverse osmosis (RO) water has had virtually all dissolved minerals removed, giving you a near-blank slate to work with. Mixing it with tap water lets you precisely control the final hardness, KH, TDS and individual mineral concentrations — which is particularly valuable if your tap water is very hard, has high nitrates from agricultural runoff, or contains other parameters you want to reduce. It gives you far more control over your water chemistry than tap water alone. Bear in mind that tap water also contains chlorine or chloramines that must be neutralised before it enters the tank — our chlorine & chloramines guide covers what to use and why it matters.
For most planted tanks with CO₂ injection, a TDS of 100–200 ppm is a good target. Lower TDS (50–100 ppm) suits soft water species like discus, cardinal tetras and most South American fish. Higher TDS (200–300 ppm) is fine for harder water fish and plants. AquaCalc's RO Mixer calculates your mixed TDS live as you adjust the ratio and syncs it to the pH Monitor tab.
Perfectly normal. A well-functioning RO membrane typically removes 95–98% of dissolved solids, so some residual TDS is expected. If your TDS is significantly higher (e.g. 50+ from an RO unit), the membrane may be aged and due for replacement. Enter your actual RO TDS in AquaCalc's RO Mixer so the calculations reflect your real water rather than assuming pure zero.
In the UK, your water supplier is legally required to publish annual water quality reports. Search for your supplier's name plus "water quality report" or "drinking water quality" — most have a postcode lookup tool. Common parameters to note are hardness (as CaCO₃ or as Clark degrees), KH/alkalinity, calcium, magnesium, nitrate, iron and TDS. If you cannot find the data online, your supplier must provide it on request. While you're reading the report, it's also worth noting whether your supplier uses chlorine or chloramines — they require different dechlorinators, as explained in our chlorine & chloramines guide.
Calcium and magnesium compete for uptake by plant roots. A Ca:Mg ratio of roughly 3:1 to 4:1 (by weight, in ppm) is considered ideal for planted tanks. If magnesium is too low relative to calcium, plants may show yellowing between the veins (interveinal chlorosis) even when overall hardness appears fine. AquaCalc's RO Mixer shows your mixed calcium and magnesium values so you can check the ratio and add Epsom salt (MgSO₄) if needed.
Yes — pure RO water contains virtually no buffering capacity (KH ≈ 0) or essential minerals. Without remineralisation, pH will swing unpredictably and plants and fish can suffer from mineral deficiencies. You can remineralise by blending with tap water (AquaCalc's RO Mixer), or by adding a commercial remineralisation product such as Seachem Equilibrium, Salty Shrimp GH/KH+, or individual dry salts. AquaCalc's dosing calculator can help with the dry salt approach.

Fertiliser dosing

7 questions
Estimative Index (EI) is a fertilisation method developed by Tom Barr that deliberately doses nutrients in excess of plant requirements — typically 2–3 times per week for macros and micros separately. The theory is that by always keeping nutrients above limiting levels, you remove nutrient deficiency as a variable and let light and CO₂ drive plant growth. Excess nutrients are reset with a large weekly water change (typically 50%). It is well-suited to high-light, CO₂-injected tanks.
PPS-Pro (Perpetual Preservation System) doses small amounts of nutrients daily, matched to what plants actually consume. Unlike EI, it aims to maintain nutrients at optimal levels rather than in excess — which means no large weekly water change is required just for nutrient management. It requires more careful monitoring and adjustment but uses less fertiliser and is better suited to tanks where water changes are less frequent.
Lean dosing provides minimal nutrients, typically once per week, matched to low plant demand in low-light or low-tech tanks without CO₂ injection. In a slow-growth system, plants consume nutrients slowly and excess nutrients can fuel algae — including stubborn types like black beard algae, which often signals CO₂ or nutrient instability. Lean dosing keeps levels just sufficient without creating excess. If plants show deficiency signs, you can increase doses gradually.
Macronutrients are needed in larger quantities: nitrogen (N, usually as nitrate NO₃), phosphorus (P, as phosphate PO₄) and potassium (K). These drive primary plant growth. Micronutrients (or trace elements) are needed in tiny amounts: iron (Fe), manganese (Mn), boron (B), copper (Cu), zinc (Zn), molybdenum (Mo) and others. Both are essential — deficiency in any one can cause visible symptoms even when others are plentiful.
Dry fertiliser compounds contain other elements besides the target nutrient. For example, potassium nitrate (KNO₃) is 61.3% nitrate (NO₃) by weight — the rest is potassium. If you want to raise nitrate by 10 ppm, you need to account for the fact that only 61.3% of the salt you add is actually nitrate. AquaCalc includes the correct element fractions for all common dry salts and shows them in the dropdown, so you don't need to calculate this manually.
Common deficiency signs include: yellow older leaves → nitrogen deficiency; purple undersides or dark green leaves → phosphate deficiency; yellowing between veins on young leaves → iron or magnesium deficiency; small, deformed new growth → calcium or boron; pale new leaves → iron. However, similar symptoms can also result from CO₂ deficiency or poor light — always check CO₂ and light before assuming a nutrient problem.
At the levels used in planted tanks, most fertilisers are safe for fish. The main risk comes from elevated nitrate (NO₃) — levels above 40–50 ppm can stress sensitive species over time. Phosphate, potassium and trace elements at recommended planted tank levels are generally harmless. AquaCalc's dosing calculator shows you the result in ppm so you can see exactly what you're adding and check it against known safe ranges.

Water changes

5 questions
You enter your current level of a parameter (e.g. nitrate at 40 ppm), your target level (e.g. 10 ppm), and the concentration of that parameter in your replacement water (from your RO Mixer or tap water report). AquaCalc then calculates the exact percentage and volume of water change required using the dilution formula: change fraction = (current − target) / (current − new water). It also shows how many smaller changes of 25%, 30% or 50% would achieve the same result.
Yes — if your replacement water has a higher concentration of a parameter than your tank water, a water change will raise the tank level. For example, if your tank KH is 2 dKH but your tap water KH is 8 dKH, a water change will raise KH. AquaCalc handles both directions and tells you which way each change will move. If you need to raise a parameter but your replacement water is lower, AquaCalc will flag it as not achievable via water change and suggest using the dosing calculator instead.
It depends on your dosing method. With EI dosing, a weekly 50% water change is a core part of the method — it resets accumulated nutrients and prevents build-up. With PPS-Pro or lean dosing, water changes are driven by nitrate levels and fish waste rather than nutrient management — typically 20–30% every 1–2 weeks is sufficient. In low-tech, low-fish tanks, less frequent changes may be fine as long as parameters stay in range.
Yes — AquaCalc includes your filter volume in all calculations (tank volume + filter volume = total system volume). This matters because the water in your filter is part of the system and changes with water changes. A large external filter on a small tank can represent 10–15% of total water volume, which is significant for dilution calculations. Use the tank volume calculator if you need to work out your exact water volume first.
If nitrate is rising faster than water changes can control it, the primary cause is usually fish load — the more fish you have, the more waste is converted to nitrate by the nitrogen cycle. Solutions include reducing feeding, increasing the percentage or frequency of water changes, adding fast-growing plants (which consume nitrate directly), or reducing fish stocking. AquaCalc's water change calculator will show you if a larger change percentage is needed to bring nitrate into range. For a deeper look at the bacteria driving this process — including the recently discovered comammox Nitrospira that converts ammonia straight to nitrate — see our comammox guide.

CO₂ safety

5 questions
CO₂ levels above 30 ppm can begin to stress sensitive fish, though many hardy species tolerate up to 35 ppm without visible distress. At 40 ppm and above, CO₂ becomes dangerous for most fish — it interferes with the ability of haemoglobin to carry oxygen, causing fish to gasp at the surface. AquaCalc triggers a prominent danger alert when any reading exceeds 40 ppm and turns the affected log row red.
Gasping at the surface is a classic sign of CO₂ overdose or oxygen depletion (which often go together — high CO₂ suppresses the ability to use dissolved oxygen). Immediate action: turn off the CO₂ regulator, increase surface agitation immediately (point a powerhead at the surface, or temporarily add an airstone), and do a partial water change if you have treated water ready. Monitor fish closely. If they recover within 30–60 minutes of increased surface agitation, CO₂ was likely the cause. See our dissolved oxygen guide for a deeper explanation of how CO₂ and O₂ interact.
If CO₂ is still injecting after lights-off and through the night, it will accumulate because plants are no longer consuming it via photosynthesis. A CO₂ solenoid connected to your lighting timer is essential — it cuts off CO₂ injection automatically when lights go off. Without one, overnight CO₂ accumulation is a genuine risk, especially in smaller tanks. Always turn off CO₂ manually at least 1 hour before lights-off if you don't have a solenoid timer. Our CO₂ stability guide covers solenoid timing strategies in detail.
A drop checker with 4 dKH reference solution gives a continuous colour reading: blue = too little CO₂, green = ideal range (~30 ppm), yellow = too much. It lags 1–2 hours behind actual tank CO₂, so it is not real-time, but it is a valuable safety indicator. Combine it with AquaCalc's pH-based monitoring for the most complete picture — log your pH every 30 minutes during the CO₂-on period and watch the curve approach target without overshooting.
In a heavily planted tank with no CO₂ injection and moderate fish load, plant respiration and bacterial activity rarely produce enough CO₂ to reach dangerous levels. However, in a very densely planted, heavily stocked tank — particularly a smaller one — overnight CO₂ accumulation can occasionally cause morning gasping. Ensure good surface gas exchange overnight (many keepers increase surface agitation slightly after lights-off) and always check fish first thing in the morning. See our surface agitation guide for how to balance overnight gas exchange without disrupting CO₂ during the day.

Aquarium tools

12 questions
Use AquaCalc's tank volume calculator. Select your tank shape (rectangle, bowfront, hexagon, corner, cylinder or sphere), enter your dimensions, and adjust the fill level slider and substrate depth. The calculator outputs your net water volume in litres, US gallons and UK gallons. Use the net water volume figure as your tank volume in the pH Monitor tab. Also see the substrate calculator to work out exactly how many bags of aquasoil or substrate you need.
The bowfront calculation uses the average of your back depth and maximum bow depth, multiplied by length and height. This is an approximation — the true volume of a curved front is slightly less than this average would suggest, typically within 5–8%. For most planted tank calculations (CO₂ dosing, fertiliser dosing) this level of accuracy is perfectly sufficient.
Weigh your cylinder on kitchen scales and subtract the tare weight — the empty cylinder weight stamped or printed on the valve body. The difference is your remaining CO₂ in grams. Enter this into AquaCalc's CO₂ cylinder runtime estimator along with your bubble rate and daily injection hours to get an estimated days remaining, run-out date and a 7-day-early reorder reminder.
It is a useful guide rather than a precise measurement. Actual CO₂ usage varies with water temperature (warmer water dissolves CO₂ less efficiently), regulator pressure stability, diffuser condition and how airtight your system is. The estimator includes a 7-day reorder buffer for this reason — always order before the warning date rather than waiting until the last moment.
The aquarium hobby standard is 4 dKH — this is what most commercial drop checker reference solutions use and what most colour charts are calibrated to. Using 4 dKH gives a consistent, comparable reference regardless of your actual tank water hardness. AquaCalc's drop checker colour guide defaults to 4 dKH and shows you the CO₂ ppm and checker pH for each colour at that KH. You can also select 2, 3, 5 or 6 dKH if you are using a non-standard reference solution.
Use AquaCalc's substrate calculator. Enter your tank dimensions, choose flat or sloped layout, and select your substrate type. The calculator includes built-in data for ADA Amazonia, Tropica Aquarium Soil, Fluval Stratum, UNS Controsoil, JBL Manado, Seachem Flourite, sand and gravel. It returns the total volume in litres, weight in kg, and exactly how many bags to buy — including how much will be left over from the last bag. Once you know your substrate depth, enter it into the tank volume calculator so your net water volume is accurate for CO₂ and dosing calculations.
For most planted tanks, 6–8 cm is a good average depth — enough for roots to anchor and access nutrients, not so deep that anaerobic pockets form in the lower layers. Many aquascapers slope the substrate: shallower at the front (3–4 cm) rising to 8–10 cm at the back. This creates visual depth and gives background plants more root space. AquaCalc's substrate calculator supports both flat and sloped layouts and adjusts the bag count accordingly.
AquaCalc's filter capacity calculator estimates the biological surface area of your filter media and gives a rough fish load guide based on the media type you are using. Select your filter media from the dropdown — the calculator includes common types such as ceramic rings, biological balls, K1 media, sponge and sintered glass — then enter your filter volume or quantity. The output is based on surface area data from aquariumscience.org. Use it to check whether your filtration has capacity for your fish stocking before adding new fish.
The fish species lookup lets you search for any freshwater fish and instantly see its preferred temperature range, pH range, hardness (GH) tolerance, minimum tank size, and typical adult length. Data is sourced from FishBase, one of the most comprehensive fish biology databases available. Use it to check whether a species you are considering is compatible with your tank parameters — particularly useful when combining species from different water chemistry backgrounds.
Yes — the plant species lookup works similarly to the fish lookup. Search for any aquatic plant to see its preferred CO₂ requirements, temperature range, light demand, growth rate and substrate needs. It is useful for checking whether a plant you have seen at your local store is suitable for your tank conditions before buying.
The aquarium heat forecast gives you a 14-day temperature outlook for your location with risk indicators (Good / Warming / Extreme) based on how far ambient temperatures are likely to push your tank above safe limits. It uses Open-Meteo weather data and is available for any location worldwide. During summer heatwaves, this gives you advance warning to prepare cooling measures — fans, ice bottles, or reduced lighting hours — before your tank temperature becomes dangerous for fish.
Several things can cause this: the reference solution may be exhausted and need replacing (typically every 2–4 weeks); the air gap between the tank water and the reference solution may be compromised (check the checker is correctly inverted); or CO₂ levels in the tank may genuinely be too low. A drop checker lags 1–2 hours behind tank CO₂, so also check whether it turns green later in the photoperiod. Compare with AquaCalc's pH-based CO₂ reading in My Tank for a real-time cross-check, and use the drop checker colour guide to verify what colour to expect at your target CO₂ level.

Using AquaCalc

8 questions
No account is needed to get started — just open My Tank, create a named profile, and your settings save automatically. Everything works anonymously. If you would like your tanks backed up and synced across your phone, tablet and computer, you can optionally create a free, passwordless My Tank account (see the Privacy & data section below). Either way, you can keep as many tank profiles as you like.
Ask AquaCalc is the answer feature built into the search box at the top of every page. Switch it to the "Ask AquaCalc" tab, type a hobby question in plain English — for example "why are my plant leaves turning yellow?" or "what CO₂ should a low-tech tank run?" — and it replies using our science guides and 60+ plant profiles, with links to the sources it drew on.
Yes — AquaCalc for Business lets aquarium shops and retailers embed our calculators on their own sites, with a free Community plan plus optional paid upgrades. It is a separate product for businesses; the consumer tools here remain free and unchanged.
AquaCalc saves your profiles to our server, but they are linked only to a randomly-generated anonymous client ID stored in your browser's localStorage and a cookie named aqph_cid — never your name or email. If you cleared your browser's site data (both localStorage and cookies) for aquacalc.uk, switched to a different browser, or used a different device, that client ID is gone and an anonymous profile can no longer be reached. The simplest safeguard is the optional free My Tank account — sign in once and your tanks are stored against your email, so they survive a cache clear and reappear on any device you sign in on. If you prefer to stay anonymous, avoid clearing site data for aquacalc.uk and consider noting down your key settings as a backup.
Yes — AquaCalc is fully responsive and works on phones and tablets. My Tank adapts to smaller screens so you can use it right next to the tank when logging pH readings. The navigation collapses to a mobile-friendly menu on smaller screens.
Yes — this is exactly what profiles are designed for. Click "+ New profile" in the top bar and give each tank a descriptive name (e.g. "230L display", "Shrimp nano", "Quarantine"). All settings — tank volume, water chemistry, CO₂ mode, RO Mixer parameters, dosing preferences — save independently per profile. Switch between tanks in seconds using the profile dropdown.
Partially. The UI and charts will load from your browser's cache, but the calculation engine runs on our server — so number-crunching (CO₂ values, RO mixing, dosing doses) requires an internet connection. For a tank-side session, make sure you have a connection when logging readings.
AquaCalc's calculation engine runs server-side via PHP. If calculations are not updating, check your internet connection first. If you are self-hosting, ensure the dashboard/api/calc.php file is present and PHP 8.0+ is active on your server. Open your browser's DevTools → Network tab, trigger a calculation and look for requests to api/calc.php — a 404 means the file is missing, a 500 means a PHP error (check your server error logs).

Privacy & data

6 questions
No account is needed — AquaCalc is free and fully usable anonymously, and always will be. If you would like your tank kept safe from browser data loss and available on your phone, tablet and laptop, you can optionally create a free My Tank account. It is passwordless: we email you a one-time sign-in link (no password to remember), and you can add an authenticator app as a backup way in. Only account holders give us an email address — anonymous use collects no personal data. You can manage or delete it on the Your Account page.
Your profiles, tank parameters, pH readings, water chemistry data and RO mixer settings are saved to our server under a randomly-generated anonymous client ID stored in your browser. For anonymous use we hold no name, email or other identifying information. Calculations run server-side too, but calculation inputs are never logged. (If you create an optional My Tank account, your data is additionally linked to your email so you can reach it from any device — see the account question above.) See our Privacy Policy for full details.
AquaCalc uses two cookies, neither of which contains personal data. A functional cookie named aqph_cid stores your anonymous My Tank client ID for 2 years — this keeps your tank profiles intact if you clear your browser cache. A temporary PHP session cookie (PHPSESSID) is set only when you visit the feedback form for CSRF security; it is deleted when you close your browser. No advertising or tracking cookies are used, and our analytics (Plausible) operates without cookies entirely. See our Cookie Policy for full details.
No. We use Plausible Analytics, a privacy-friendly alternative that sets no cookies, collects no personal data, and does not track you across websites. It records only anonymous, aggregate page view counts — we can see that a page was visited, but not who visited it. Plausible is fully compliant with UK GDPR, EU GDPR and PECR.
Feedback submissions are saved securely to a protected file on our server. Your email address (if provided) is used only to respond to your message and is never shared or used for marketing. Your IP address is stored only as a one-way hash for rate-limiting purposes and cannot be used to identify you. See our Privacy Policy for full details.
Yes. AquaCalc is designed from the ground up to minimise data collection. We collect no personal data during normal My Tank use. Feedback form data is processed under legitimate interests and consent. We are based in the UK and comply with UK GDPR and PECR. See our Privacy Policy for full details.
Still have a question?
Can't find the answer you're looking for? Send us a message and we'll get back to you.
Send a question →