Calcium Carbonate Scaling / Solubility Calculator

Explore an illustrative calcite saturation curve with temperature, pH, alkalinity, calcium and additional background NaCl. See the corresponding salt recipe and counterions.

Educational demonstration — not a validated engineering calculator  ·  Curves, thresholds and boiling estimates are illustrative. This preview does not run a carbonate equilibrium model.

Your water conditions

Move a slider or enter a value.

°C
0 °C — 99.5 °C max (illustrative)

Maximum temperature depends on salinity and operating pressure. The slider stops 0.5 °C below boiling.

pH
6 pH — 10.5 pH

Proposed control: adjust dissolved CO₂ at fixed alkalinity. The required CO₂ addition or removal is not calculated in this preview.

mg/L as CaCO₃
10 mg/L as CaCO₃ — 1000 mg/L as CaCO₃

Reported as mg/L CaCO₃ equivalent. In this independent-control mode, alkalinity is introduced through NaHCO₃; see the explanation below.

mg/L as Ca
0 mg/L as Ca — 2000 mg/L as Ca

Enter mg/L as Ca. CaCl₂ supplies one Ca²⁺ and two Cl⁻; the corresponding chloride is included in the salt recipe below.

g/L
0 g/L — 250 g/L

Additional NaCl, on top of chloride from CaCl₂ and sodium from NaHCO₃. It is not total dissolved salts.

Advanced conditions

Atmospheric default: 1.013 bar(a). Explore vacuum or pressurised operation (0.2–5 bar(a)).

Prototype temperature ceiling: 150 °C. The production ceiling must follow validated model data.

Proposed synthetic-water recipe
Demineralised water + CaCl₂ + NaHCO₃ + additional NaCl.
Set pH through dissolved CO₂ adjustment; calcium and final alkalinity remain the selected targets.

Where does your water sit?

Calcium threshold vs. temperature · calcite (CaCO₃)

ILLUSTRATIVE PREVIEW

Blue curve: calcium at calcite saturation · Dashed grey curve: no additional NaCl · Dark point: your water · Brown line: boiling boundary

SUPERSATURATEDUNDERSATURATEDCa (mg/L)Temperature (°C)
Estimated boiling point: ≈ 100.0 °C (illustrative)  ·  1.013 bar(a)

Slider maximum: 99.5 °C, just below the illustrative boiling point.

Illustrative estimate only · evaporation and concentration changes are not simulated.
Curve shown at 2 g/L NaClIllustrative response · not a mineral equilibrium calculation
Saturation status · illustrative
Undersaturated (illustrative)
Default example: calcium is below the illustrative calcite threshold.
Calcium at calcite saturation
101.0 mg/L as Ca
Illustrative · at selected conditions
Concentration / saturation limit
79 %
Illustrative calcium / threshold ratio
Counterions included in the recipe

What accompanies your calcium and alkalinity?

Stoichiometric salt additions per litre of final solution, before any precipitation. Salt masses below use anhydrous CaCl₂ and pure NaHCO₃.

SourceSalt amountAccompanying ion
CaCl₂ → Ca²⁺ + 2 Cl⁻221.5 mg/L141.5 mg/L Cl⁻
NaHCO₃ → Na⁺ + HCO₃⁻251.8 mg/L68.9 mg/L Na⁺
Additional NaCl2,000.0 mg/L786.8 mg/L Na⁺ + 1,213.2 mg/L Cl⁻

Total from the default recipe: sodium 855.7 mg/L as Na · chloride 1,354.7 mg/L as Cl.

pH assumption: CO₂ addition or removal changes inorganic carbon and pH without directly changing alkalinity in the ideal carbonate system. This preview does not calculate CO₂ demand or carbonate speciation. Strong-acid/base adjustment would require accounting for changed alkalinity and its counterions.

What is calculated here: the salt masses and their sodium/chloride contributions only. Charge-balanced salt additions are specified, but a full equilibrium and aqueous charge-balance calculation is still required. These added counterions are not yet used in the illustrative saturation curve or boiling estimate.

Understanding the alkalinity slider

“As CaCO₃” is a reporting unit—not necessarily the salt added

Alkalinity measures how much acid water can neutralise. Expressing it as mg/L as CaCO₃ puts that acid-neutralising capacity on a common equivalent basis. It does not say how much calcium is present or mean that solid calcium carbonate was added.

CURRENT MODE

Adjust calcium and alkalinity independently

Calcium is supplied as CaCl₂ and alkalinity through NaHCO₃. Their chloride and sodium contributions appear in the recipe table. This lets you explore changes in calcium without automatically changing alkalinity, and vice versa.

IF YOU ADD CaCO₃ INSTEAD

Calcium and alkalinity must move together

Each 100 mg/L of CaCO₃ that actually dissolves adds approximately 40 mg/L calcium as Ca and 100 mg/L alkalinity as CaCO₃. Adding 100 mg/L of solid does not guarantee that all of it dissolves.

SUGGESTED FUTURE MODE

Add limestone / CaCO₃

A separate mode could take a limestone dose and calculate how much dissolves, linking calcium and alkalinity. That calculation needs a validated model for pH, CO₂ availability and mineral equilibrium; it is not implemented in this preview.

Why CO₂ matters
In CO₂-containing water, limestone dissolution can be represented as CaCO₃ + CO₂ + H₂O ⇌ Ca²⁺ + 2 HCO₃⁻. Adding or removing CO₂ alone does not directly change alkalinity in the ideal carbonate system; dissolving or precipitating CaCO₃ does. The current pH slider assumes CO₂ adjustment, but does not calculate the required CO₂ amount.

Background: USGS · Alkalinity and carbonate speciation · USGS · Alkalinity reporting and solution composition

Three takeaways

Relationships to explore · illustrative values, not validated predictions.

01 / pH

A higher pH can favour carbonate scaling

At the same calcium and alkalinity, raising pH can increase the share of carbonate and the tendency toward calcite saturation.

02 / ALKALINITY & CALCIUM

Both sides of the chemistry matter

Increasing calcium or carbonate alkalinity can move a sample closer to saturation. Alkalinity “as CaCO₃” is a reporting unit, not a concentration of dissolved calcium carbonate.

03 / HEATING & CO₂

Heating and degassing can promote scale

Heated hard water can form calcium carbonate deposits. CO₂ loss can raise pH and favour precipitation. This preview holds pH and alkalinity fixed during the temperature sweep.

Compare with the Langelier Saturation Index

The Lenntech Langelier Saturation Index calculator also assesses calcium carbonate scaling tendency. It reports the saturation pH (pHs) and LSI = pH − pHs: positive values indicate supersaturation, zero indicates saturation, and negative values indicate undersaturation with respect to calcium carbonate.

What is different? This page plots an illustrative calcium concentration threshold and shows calcium as a percentage of that threshold. LSI instead expresses how far the water pH is above or below its calculated saturation pH. It is not a percentage, a predicted mass of precipitate or a scaling rate, and it is not a direct measure of corrosion.

This page is an educational demonstration, not a validated equilibrium calculation. The LSI formula also has method limits; high-salinity, high-temperature or complex waters need an appropriate geochemical model.

Real-world water streams

Where does calcium carbonate scaling occur?

It is common in hard water and concentrates containing calcium and carbonate alkalinity.

01 / WATER HEATING

Heaters & heat exchangers

Heating hard water can produce calcium carbonate deposits on hot surfaces, reducing heat transfer and restricting flow.

02 / COOLING WATER

Cooling towers & blowdown

Evaporation concentrates dissolved minerals in recirculating water. Calcium, alkalinity, pH and temperature influence carbonate scaling tendency.

03 / MEMBRANE TREATMENT

RO concentrate & brines

Retained calcium and alkalinity can become concentrated as RO recovers water. Carbonate speciation and pH help determine whether the concentrate approaches calcite saturation.

Water chemistry matters more than salinity alone.
A salty stream does not necessarily contain much calcium or alkalinity. A full analysis is needed for a real scaling assessment; this interface shows only a simplified synthetic composition.

Background: USGS · Hardness and heated-water deposits · US DOE · Cooling tower management · USBR · Membrane treatment

The calculations above are illustrative and may contain errors or omissions. No guarantee of accuracy or completeness is given; results should be independently verified before use in design, treatment selection or operating decisions.

Methodology & limitations

Understand what the interactive demonstration calculates, how its outputs are produced and what would be needed for a thermodynamic scaling assessment.

Model status: illustrative, not chemically validated. The plotted calcium threshold and boiling boundary are constructed demonstration functions. They are not fitted to laboratory data or derived from a carbonate equilibrium database. References below explain the chemistry; they do not validate these demonstration coefficients.

1. Scope and inputs

The controls describe a hypothetical synthetic water made from demineralised water, CaCl₂, NaHCO₃ and additional NaCl. Calcium and alkalinity are independent targets. The pH is an entered value at operating temperature; it is not calculated from that recipe.

InputInterface rangeMeaning
Temperature, T0 °C to the dynamic cap; ceiling 150 °CIndependent hypothetical conditions along the curve.
pH, H6–10.5Assumed CO₂ adjustment at fixed final alkalinity; CO₂ demand is not solved.
Alkalinity, A10–1,000 mg/L as CaCO₃Equivalent acid-neutralising capacity, supplied nominally through NaHCO₃.
Calcium, C0–2,000 mg/L as CaTotal calcium target, supplied nominally through anhydrous CaCl₂.
Additional NaCl, S0–250 g/LBackground salt in addition to the calcium and alkalinity salts; not total salinity.
Pressure, P0.2–5 bar absoluteUsed only by the illustrative boiling function.

These are interface ranges, not validated operating ranges. Extending a slider range does not establish chemical accuracy at those conditions.

2. Exact functions used by this demonstration

With the numerical inputs in the units above, the plotted calcium threshold L (mg/L as Ca) is:

L = 100 × exp[−0.018 × (T − 25)] × 10^(8 − H)
    × (150 / A) × [1 + 0.005 × S / (1 + S / 100)]

Displayed concentration ratio (%) = 100 × C / L

The exponential, pH, alkalinity and NaCl factors are chosen to illustrate responses. They do not solve carbonate speciation, ion pairing or activity coefficients. In particular, the NaCl factor is not a brine solubility correlation, and the temperature factor is not a thermodynamic calcite equilibrium constant.

The ratio is rounded to the nearest whole percent. The status uses the unrounded ratio: below 85% is labelled “Undersaturated”, 85–100% “Approaching saturation”, and above 100% “Supersaturated”. The 85% boundary is an interface warning choice. All three labels refer only to the illustrative threshold; they do not establish a water sample’s actual saturation state.

The grey comparison curve uses S = 0 while retaining the entered pH and alkalinity. This means no additional NaCl; it does not remove the calcium and alkalinity salts from the recipe.

The boiling estimate and temperature cap are:

B (°C) = 100 + 28 × ln(P / 1.01325) + 0.025 × S
Tmax (°C) = floor[10 × min(150, B − 0.5)] / 10

Here ln is the natural logarithm and floor rounds down. This is an illustrative pressure/salt response, not a steam-table or electrolyte boiling-point calculation. It omits the contributions of CaCl₂, NaHCO₃ and CO₂, and does not simulate evaporation or changing concentration. The 0.5 °C margin and 150 °C ceiling are interface choices.

3. Salt recipe and accompanying ions

The recipe table uses stoichiometric conversions before any precipitation. It assumes pure anhydrous CaCl₂ and pure NaHCO₃. Commercial hydrated products and product purity would require different dose conversions.

CaCl₂ (mg/L) = C × (40.078 + 2 × 35.45) / 40.078
Cl from CaCl₂ (mg/L) = C × 2 × 35.45 / 40.078

Equivalent weight of CaCO₃ = 100.0869 / 2 = 50.04345
NaHCO₃ (mg/L) = A × 84.00661 / 50.04345
Na from NaHCO₃ (mg/L) = A × 22.98977 / 50.04345

Na from additional NaCl (mg/L) = 1000 × S × 22.98977 / 58.43977
Cl from additional NaCl (mg/L) = 1000 × S × 35.45 / 58.43977

The molar-mass constants are in g/mol; 50.04345 g/equivalent is numerically 50.04345 mg/meq. Sodium and chloride totals sum their respective contributions. Values are displayed to one decimal place. These conversions specify electrically balanced salt additions, but do not solve the final aqueous speciation or charge balance. Their sodium and chloride contributions are not fed back into L or B.

4. Carbonate chemistry and system assumptions

“Alkalinity as CaCO₃” is an equivalent reporting unit, not dissolved CaCO₃ concentration. Adding CO₂ alone does not directly change alkalinity in the ideal carbonate system, while dissolving or precipitating CaCO₃ changes both calcium and alkalinity. Each 100 mg/L of CaCO₃ that actually dissolves adds approximately 40 mg/L calcium and 100 mg/L alkalinity as CaCO₃.

The temperature sweep holds entered pH, alkalinity and total calcium fixed. It compares separate hypothetical conditions, rather than following one water sample through heating, degassing or precipitation. Maintaining those targets in a real preparation may require a different CO₂ adjustment at each temperature. Liquid operating pressure is not CO₂ partial pressure.

5. How a thermodynamic calculation would differ

A calcite equilibrium model evaluates the ion activity product relative to the temperature-dependent solubility product:

SIcalcite = log₁₀[(aCa²⁺ × aCO₃²⁻) / Ksp,calcite(T)]

Activities a describe free ions rather than total analytical concentrations. SI = 0 denotes equilibrium, SI > 0 supersaturation and SI < 0 undersaturation. Even a positive thermodynamic SI does not specify the deposited mass or rate; kinetics, surfaces and residence time also matter.

This page does not currently calculate that SI. An engineering implementation needs a documented thermodynamic database, carbonate speciation, an activity model appropriate to the water and explicit gas-exchange assumptions. Calcite and aragonite should be reported as separate mineral phases. PHREEQC can provide an independent benchmark when composition, database, units, mineral phase and CO₂ boundary conditions are matched.

The Lenntech Langelier Saturation Index calculator instead reports LSI = pH − pHs. LSI is not this page’s concentration percentage and does not predict a scaling rate.

6. Validation status and reproducible check

No laboratory calibration dataset, thermodynamic benchmark or engineering accuracy range is established for the demonstration curves. Reproducing the formulas verifies implementation consistency, not physical accuracy.

At the reset settings (25 °C, pH 8.0, alkalinity 150 mg/L as CaCO₃, calcium 80 mg/L, additional NaCl 2 g/L and pressure 1.013 bar absolute), the current functions give L = 100.9804 mg/L (displayed 101.0), a ratio of 79.2233% (displayed 79%), and a temperature cap of 99.5 °C.

Before engineering use, a replacement model should be checked against independent equilibrium calculations and relevant measurements across its intended temperature and salinity range. Record the database/version, test compositions, tolerances and discrepancies. Agreement on a single default example would not validate the full range.

7. Known limitations and appropriate use

  • No carbonate speciation, activity correction, aqueous charge-balance solution or equilibrium precipitation calculation.
  • No magnesium, sulfate or other background ions beyond the displayed synthetic recipe.
  • No CO₂ demand, gas transfer, antiscalant performance, nucleation, scale growth, precipitation mass, recovery or concentration-factor simulation.
  • No validated high-salinity, high-temperature or pressurised-water predictions.

Use the interface to explore its controls and assumptions. Results are not a substitute for full geochemical modelling or pilot testing, particularly in high-recovery or high-temperature systems. The calculations may contain errors or omissions and should be independently verified before design or operating decisions.

8. References and model record

Methodology documentation v1.0 · prepared 24 October 2026. Documents the existing demonstration functions; does not introduce a new equilibrium model or change the calculator’s numerical behaviour.

Return to calculator