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 Aquasoil & pH drop RO water mixing Fertiliser dosing Water changes CO₂ safety Aquarium tools Using AquaCalc Privacy & data
💨

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.
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.
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.
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. 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.
⚠️

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.
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.
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.
🔧

Aquarium tools

8 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.
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 the dashboard 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

7 questions
No — AquaCalc has no accounts, no sign-up and no login. Just open the dashboard, create a named profile for your tank, and your settings save automatically to your browser. You can have as many profiles as you like for different tanks.
AquaCalc stores your profiles in your browser's localStorage. This means your data is saved on the specific device and browser you used. If you cleared your browser data, switched browsers, used private/incognito mode, or accessed AquaCalc from a different device, your profiles will not be there. To avoid losing data, avoid clearing site data for AquaCalc, and consider noting down your key settings as a backup.
Yes — AquaCalc is fully responsive and works on phones and tablets. The dashboard 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.
If you are self-hosting AquaCalc, edit the file content/changelog.md on your server using any text editor, FTP client or your hosting control panel's file manager. The changelog page renders it automatically — no code changes needed. Follow the existing Markdown format: use ## v1.x.x — Title for version headings, ### New features for category labels, and - for bullet points.
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

5 questions
No. Your profiles, tank parameters, pH readings, water chemistry data and RO mixer settings are all stored exclusively in your browser's localStorage — they never leave your device. The only data sent to our server during normal use is the numerical inputs for the current calculation (e.g. your KH and pH values), which are used to compute the result and immediately discarded.
AquaCalc uses no advertising or tracking cookies. A temporary PHP session cookie is set only when you visit the feedback form, for security purposes (CSRF protection). It is deleted when you close your browser. Our analytics tool (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 dashboard 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 →