Paste this where you want the calculator to appear. It works on any site — WordPress, Squarespace, Webflow, Ghost or plain HTML — and needs no JavaScript of yours. It carries a link back here, which is the only thing we ask for it.
The bath is buffered five hundred times harder than the acid load needs. The soda is not there for pH.
Soda Ash to Charge
—kg
At the stated dose, corrected for purity
Buffer Chemistry & the Overshoot
Buffering Over What Is Needed
—x
Actual pH Drop from the Acid Load
—
Alkali Present as Carbonate
—%
Carbonate to Bicarbonate Ratio
—x
Buffer Capacity
—meq/L per pH
Total Acid Load
—meq
Alkalinity the Water Brings
—meq
Salt to Charge
—kg
The pKa of 10.33 is the second dissociation of carbonic acid at 25 deg C and shifts with temperature and ionic strength - at dyeing temperature and 60 g/L of salt the effective value is lower, which moves the carbonate fraction up. The buffer capacity expression treats the carbonate system in isolation and ignores the contribution of the substrate, of any sequestrant, and of the hydroxide term itself, which becomes significant above pH 12. Salt is reported as a charge only; its role in reducing the electrical barrier to dye uptake is not modelled here. The acid released by hydrolysis is an input rather than a prediction, since it depends on the dye class, the shade depth and how much dye hydrolyses rather than fixes.
Using this calculator
About the Reactive Dyeing Salt, Alkali & Carbonate Buffer Capacity
The formula
This is the expression the tool evaluates. Every term is named underneath, with the unit it must be supplied in.
The ratio of carbonate to bicarbonate is fixed by the distance between the target pH and the pKa of the step. At pH 11 against a pKa of 10.33 the ratio is 4.68, so 82% of the alkali is present as the carbonate ion that actually matters.
Van Slyke buffer capacitybufferCapacity = 2.303 x molarity x ratio / ( 1 + ratio )^2
How many equivalents of acid a litre absorbs per unit of pH. It peaks when the ratio is one - at the pKa - and falls away either side, so a bath held well above the pKa is buffering less efficiently per gram than it could.
What the acid load actually doesphDrop = acidLoadPerLitre / bufferCapacity
Dye hydrolysis and the substrate together release acid through the cycle. Divided by the buffer capacity it gives the pH movement, and at normal soda doses that movement is in the fourth decimal place.
The ratio between the buffering present and the buffering the acid load requires. A figure in the hundreds is the evidence that the dose is set by fixation chemistry rather than by pH control.
Symbols used above
Symbol
Stands for
Unit
pKa
Acid dissociation constant of the buffer step, as its negative log
—
beta
Buffer capacity, equivalents of acid absorbed per pH unit
meq/L per pH
meq
Milliequivalent, one thousandth of a mole of charge
meq
owf
On weight of fibre, the dosing basis for dye
%
How the result is derived
Step by step, from the values you type to the figure on screen.
The 11 inputs are read from the form on every keystroke: Bath Volume, Target pH, Buffer pKa, Soda Ash Dose, Soda Ash Purity, Salt Dose, Acid Released by Dye Hydrolysis, Substrate Acid Demand, Fabric Charge, Allowable pH Drop and Water Alkalinity as CaCO3.
Each value is checked against the accepted range in the input table below. A value outside its range stops the calculation rather than producing a misleading figure — the results blank out and a message appears.
The validated values are substituted into the expression above, which resolves Soda Ash to Charge together with every supporting figure in one pass — no value is carried over from a previous entry.
The supporting outputs — Buffering Over What Is Needed, Actual pH Drop from the Acid Load, Alkali Present as Carbonate, Carbonate to Bicarbonate Ratio, Buffer Capacity, Total Acid Load, Alkalinity the Water Brings and Salt to Charge — come from the same pass, so they always describe the same case as the headline figure.
Results are rounded for display only. The full-precision value is used throughout the chain, so reading a rounded intermediate figure back into the tool by hand can shift the last digit.
What each input means
Where to read each value on the floor, the unit it must be in, and the range the tool accepts.
Input
Unit
Accepted range
Default
What it means
Bath Volume
L
10 to 60000 L
3200
Target pH
—
8 to 13
11
Buffer pKa
—
6 to 13
10.33
Bicarbonate to carbonate step is 10.33 at 25 deg C
Soda Ash Dose
g/L
1 to 60 g/L
20
Soda Ash Purity
%
80 to 100 %
99.2
Salt Dose
g/L
0 to 120 g/L
60
Acid Released by Dye Hydrolysis
meq
0 to 5000 meq
45
Substrate Acid Demand
meq/kg
0 to 10 meq/kg
0.15
Fabric Charge
kg
1 to 5000 kg
400
Allowable pH Drop
—
0.01 to 2
0.3
Water Alkalinity as CaCO3
mg/L
0 to 800 mg/L
120
What the tool returns
The headline figure and every supporting value it is built from.
Output
Unit
What it tells you
Soda Ash to Charge (headline result)
kg
At the stated dose, corrected for purity
Buffering Over What Is Needed
x
Actual pH Drop from the Acid Load
—
Alkali Present as Carbonate
%
Carbonate to Bicarbonate Ratio
x
Buffer Capacity
meq/L per pH
Total Acid Load
meq
Alkalinity the Water Brings
meq
Salt to Charge
kg
Worked example
Given
0
3,200 L bath at pH 11.0, carbonate pKa 10.33
1
20 g/L soda ash at 99.2% purity, 60 g/L salt
2
45 meq of acid from hydrolysis, 0.15 meq/kg from 400 kg of cotton
3
Allowable pH drop 0.3, water alkalinity 120 mg/L as CaCO3
Substituting
ratio = 10 ^ (11.0 - 10.33) = 10 ^ 0.67 = 4.6774molarity = 20 / 105.99 = 0.18870 mol/Lbeta = 2.303 x 0.18870 x 4.6774 / 5.6774^2 = 0.06305 eq/L per pHacid per litre = (45 + 0.15 x 400) / 3,200 = 0.03281 meq/LphDrop = 0.03281 / 63.0506 = 0.0005
Answer
0
64.5161 kg of soda ash and 192 kg of salt
1
Buffered 576.4626 times harder than the acid load requires
2
Actual pH drop 0.0005 - not measurable
3
82.3862% present as carbonate, a ratio of 4.6774
4
Buffer capacity 63.0506 meq/L per pH against a 105 meq total acid load
The whole recipe is 576 times more buffer than pH stability needs, and the pH moves half a thousandth of a unit across the cycle. Soda ash in reactive dyeing is not a pH additive - it is a reagent that generates the cellulosate anion the dye reacts with, and it is dosed for fixation rate. Anyone cutting the soda to save chemical cost is cutting the reaction, not the buffer.
How to use it
Work through the input groups in order — Bath & Target and Acid Load & Water. The defaults are a realistic case, so you can change one value at a time and watch what moves.
There is no calculate button. Every figure recalculates as you type or drag, which is what makes this usable for a what-if sweep rather than a single answer.
Read Soda Ash to Charge in the dark results panel — that is the headline figure, expressed in kg.
Check the supporting rows underneath (Buffering Over What Is Needed, Actual pH Drop from the Acid Load, Alkali Present as Carbonate, Carbonate to Bicarbonate Ratio, Buffer Capacity, Total Acid Load, Alkalinity the Water Brings and Salt to Charge) before acting on the headline — they are where an implausible input usually shows itself first.
Reset to defaults returns every field to the reference case, which is the quickest way to check whether a surprising result came from the tool or from an input you had changed earlier.
Where this is used
Process planning — establishing Soda Ash to Charge before a trial is booked, so machine time and material in Dyeing, Printing, Color Management & Chemical Control are committed against a calculated figure rather than an estimate.
Costing and quotation — Soda Ash to Charge is an input to the cost sheet, and quoting from a worked number rather than a remembered one is what keeps a margin intact.
Troubleshooting — when the floor result drifts from plan, entering the measured values (starting with Bath Volume) shows how much of the gap in Soda Ash to Charge each variable explains.
Teaching and study — the accepted ranges bracket normal Dyeing, Printing, Color Management & Chemical Control practice, so moving one variable at a time shows the shape of the relationship rather than a single answer.
Reading the result
Typical bands and what each one is telling you.
Value
What it indicates
pH 10.8 - 11.2
Standard window for hot-brand reactive dyes on cotton.
15 - 20 g/L soda ash
Normal for medium to dark reactive shades.
Buffer excess above 100x
Expected. The dose is fixation-driven and pH will not drift.
Buffer excess under 10x
Unusually lean alkali. Check the pH through the cycle rather than trusting the start.
Assumptions and limits
The pKa of 10.33 is the second dissociation of carbonic acid at 25 deg C and shifts with temperature and ionic strength - at dyeing temperature and 60 g/L of salt the effective value is lower, which moves the carbonate fraction up. The buffer capacity expression treats the carbonate system in isolation and ignores the contribution of the substrate, of any sequestrant, and of the hydroxide term itself, which becomes significant above pH 12. Salt is reported as a charge only; its role in reducing the electrical barrier to dye uptake is not modelled here. The acid released by hydrolysis is an input rather than a prediction, since it depends on the dye class, the shade depth and how much dye hydrolyses rather than fixes.
Every input is bounded to the range normal practice occupies (Bath Volume 10 to 60000 L, Target pH 8 to 13 and Buffer pKa 6 to 13, and so on for the rest). Those bounds are guard rails against typing errors, not a claim that the formula fails one unit outside them.
The calculation is deterministic: the same inputs always give the same result. It carries no allowance for machine condition, operator skill, ambient conditions or lot-to-lot material variation unless an input above explicitly represents one.
Nothing is sent anywhere. The maths runs in your browser, so the numbers you type never leave the page.
Standards and further reading
ISO 105-C06 - colour fastness to domestic and commercial laundering, the property fixation is judged by.
AATCC 149 - Chelation Value of Aminopolycarboxylic Acids, for the water hardness interaction.
ISO 9963-1 - Water quality, determination of alkalinity, for the water alkalinity input.
Van Slyke, D. D. (1922), Journal of Biological Chemistry 52, 525 - the buffer capacity expression used here.
Questions people ask
If the pH barely moves, why is so much soda ash needed?
Because the alkali is a reagent, not a pH additive. Reactive fixation proceeds through the cellulosate anion, and the concentration of that anion depends on the hydroxide activity - so more alkali means a faster reaction and a higher fixation yield in the time available. The buffering that comes with it is incidental and enormous. This is why cutting the soda dose to save chemical cost shows up as unfixed dye and poor wash fastness rather than as a pH excursion: the reaction slowed, the pH did not.
Does buffer capacity peak at the target pH?
No - it peaks at the pKa, where carbonate and bicarbonate are equal, and falls away either side. At pH 11 against a pKa of 10.33 the system is already past its most efficient point, so each gram of soda is buying less buffering than it would at 10.33. That does not matter here because the excess is so large, but it does matter for any bath where buffering is genuinely the constraint - a peroxide bleach held near pH 10.5, for instance, sits much closer to its carbonate optimum.
What does the water alkalinity figure change?
It is reported as a credit rather than fed into the dose, because at 120 mg/L as CaCO3 the incoming water already carries 7,674 meq of alkalinity into the bath - seventy times the whole acid load. On soft water that term disappears and on hard water it is substantial, which is why a dyehouse changing water source can see a shade shift with no recipe change. It is also why alkalinity, not just hardness, belongs on the water specification.