Skip to content

Development consumes alkali and releases acid. Every film that goes through a tank leaves the developer a little further from where it started, and if nothing resists that drift the tenth film gets a different developer from the first. Kodak understood the problem in 1924 and described the answer in a sentence: a carbonate acts as “a sort of reservoir of alkali, only a small amount of alkali being present at any time, but more being generated by dissociation of the carbonate as it is used up”, which lets a developer “employ a small concentration of alkali and yet keep that concentration nearly constant during use.” That is a buffer, described a decade before the word entered photographic practice, and this page is about how big the reservoir is and what happens when it empties.

Take two solutions, both at pH 10.5, and add acid to each.

The first is brought to pH 10.5 with sodium hydroxide alone. To sit at pH 10.5 it needs [OH⁻] = 10⁻³·⁵ = 3.16 × 10⁻⁴ mol/L — a tiny amount, about 13 milligrams of sodium hydroxide in a litre. There is nothing else in it. Add three ten-thousandths of a mole of acid per litre and the hydroxide is gone.

The second is a carbonate buffer: sodium carbonate and sodium hydrogencarbonate together, 0.20 mol/L in total — 21 g/L of carbonate, which is the order of magnitude a real developer carries, since Kodak’s D-71 uses 12.5 g of sodium carbonate per litre.

Adding acid to two solutions that start at the same pH

one unit below the start0.000.020.040.060.080.100.120.1401234567891011Strong acid added, mol per litrepH
  • Buffered: 0.20 mol/L carbonate and hydrogencarbonate
  • Unbuffered: brought to pH 10.5 with sodium hydroxide alone
Show the numbers behind this plot
Two curves both starting at pH 10.5 on the left axis. The unbuffered curve, a solution brought to pH 10.5 with sodium hydroxide alone, falls off a cliff within the first thousandth of the horizontal axis: it is at pH 9.2 after 0.0003 mol per litre of acid, below pH 4 by 0.0004, at pH 2 by 0.01, and at pH 0.85 by the right-hand edge of the plot. The buffered curve, a carbonate and hydrogencarbonate pair totalling 0.20 mol per litre, descends almost as a straight line: pH 10.32 after 0.02 mol per litre of acid, 10.05 after 0.05, 9.72 after 0.08, 9.36 after 0.10, and only then turns down sharply as the carbonate runs out at about 0.12 mol per litre. The buffered solution absorbs roughly three hundred times as much acid before falling a single unit.
SeriesStrong acid added, mol per litrepH
Buffered: 0.20 mol/L carbonate and hydrogencarbonate0.0010.50
Buffered: 0.20 mol/L carbonate and hydrogencarbonate0.0110.41
Buffered: 0.20 mol/L carbonate and hydrogencarbonate0.0210.32
Buffered: 0.20 mol/L carbonate and hydrogencarbonate0.0310.24
Buffered: 0.20 mol/L carbonate and hydrogencarbonate0.0410.15
Buffered: 0.20 mol/L carbonate and hydrogencarbonate0.0510.05
Buffered: 0.20 mol/L carbonate and hydrogencarbonate0.069.96
Buffered: 0.20 mol/L carbonate and hydrogencarbonate0.079.85
Buffered: 0.20 mol/L carbonate and hydrogencarbonate0.089.72
Buffered: 0.20 mol/L carbonate and hydrogencarbonate0.099.57
Buffered: 0.20 mol/L carbonate and hydrogencarbonate0.109.36
Buffered: 0.20 mol/L carbonate and hydrogencarbonate0.109.22
Buffered: 0.20 mol/L carbonate and hydrogencarbonate0.119.02
Buffered: 0.20 mol/L carbonate and hydrogencarbonate0.118.77
Buffered: 0.20 mol/L carbonate and hydrogencarbonate0.128.40
Unbuffered: brought to pH 10.5 with sodium hydroxide alone0.0010.50
Unbuffered: brought to pH 10.5 with sodium hydroxide alone0.0010.33
Unbuffered: brought to pH 10.5 with sodium hydroxide alone0.0010.07
Unbuffered: brought to pH 10.5 with sodium hydroxide alone0.009.21
Unbuffered: brought to pH 10.5 with sodium hydroxide alone0.004.62
Unbuffered: brought to pH 10.5 with sodium hydroxide alone0.003.55
Unbuffered: brought to pH 10.5 with sodium hydroxide alone0.003.17
Unbuffered: brought to pH 10.5 with sodium hydroxide alone0.002.77
Unbuffered: brought to pH 10.5 with sodium hydroxide alone0.012.33
Unbuffered: brought to pH 10.5 with sodium hydroxide alone0.012.01
Unbuffered: brought to pH 10.5 with sodium hydroxide alone0.031.53
Unbuffered: brought to pH 10.5 with sodium hydroxide alone0.061.22
Unbuffered: brought to pH 10.5 with sodium hydroxide alone0.101.00
Unbuffered: brought to pH 10.5 with sodium hydroxide alone0.140.85
Both curves are arithmetic rather than measurement: the unbuffered one from the hydroxide remaining, the buffered one from the Henderson and Hasselbalch relation with the carbonic acid second pKa of 10.33 taken from OpenStax Appendix H. The buffered curve stops where the carbonate is used up; beyond that a second, lower plateau exists around pH 6.4 because carbonic acid has a second proton, and a real developer would have stopped working long before. The curve is drawn to show the shape, not measured from a real material. Your own materials will differ, and measuring them is what the sensitometry part of the course is for.

The unbuffered solution loses a whole pH unit after 0.0003 mol of acid per litre. The buffered one loses a whole pH unit after about 0.093 mol per litre. That is a factor of about three hundred, and neither solution had any more alkali in it than the other at the moment of measurement. That factor is what a buffer buys.

A buffer is a solution containing appreciable amounts of both members of a conjugate acid–base pair. The mechanism is a swap: added strong acid or base is converted into the far weaker acid or base of the pair, which barely ionises, so the pH moves much less than it otherwise would.

Add hydrogen ion to a carbonate buffer and the carbonate takes it:

CO32− + H3O+ → HCO3 + H2O
The base half of the pair mops up added acid

Add hydroxide and the hydrogencarbonate gives a proton up to it:

HCO3 + OH → CO32− + H2O
The acid half of the pair mops up added alkali

In both cases something that would have moved the pH a long way has been turned into something that moves it a little. Notice what is being spent: not “alkalinity” in the abstract, but one of the two members of the pair. Each addition converts a molecule of one into a molecule of the other.

The pH of a buffer is set by the ratio of the two members. When they are present in equal amounts, one conversion changes the ratio hardly at all — going from 50:50 to 49:51 is a change of 0.03 in the logarithm. When one member is nearly gone, the same conversion changes the ratio enormously: going from 5:95 to 4:96 moves the pH by 0.1. So a buffer is at its strongest when the two are equal, which is by definition the pH equal to the pKa, and it weakens as the ratio becomes lopsided.

OpenStax puts a practical boundary on it: a buffer “has generally lost its usefulness when one component of the buffer pair is less than about 10 per cent of the other”. A pair is therefore useful over roughly one pH unit either side of its pKa, and outside that band you should choose a different pair rather than more of the same one.

The relation between the ratio and the pH has a name and one line:

pH = pKa + log₁₀ ( [A⁻] ÷ [HA] )

Henderson and Hasselbalch

[HA] is the concentration of the acid member of the pair; [A⁻] is the concentration of its conjugate base; pKa is minus the base-ten logarithm of the acid’s ionisation constant. Read it aloud: the pH sits at the pKa, shifted by the logarithm of how lopsided the mixture is.

OpenStax attaches the assumption under which it holds, and so does this course: it assumes the amounts that ionise or hydrolyse are small compared with the amounts you put in — the “x is small” approximation. That is true for a real buffer with appreciable amounts of both members and stops being true when one member has nearly run out, which is precisely where the curve above turns down.

Buffer capacity is a different quantity from pH

Section titled “Buffer capacity is a different quantity from pH”

Buffer capacity is how much strong acid or base a given volume can take before its pH moves appreciably — conventionally by one unit. OpenStax gives the comparison directly: a litre that is 1.0 mol/L in acetic acid and 1.0 mol/L in sodium acetate has far greater buffer capacity than a litre that is 0.10 mol/L in each, even though both have the same pH.

This is the single most important idea on the page, and it is the reason this course keeps capacity and exhaustion apart as terms. Capacity is a property the bath had when you mixed it. Exhaustion is the event at the end of spending it.

Same pH, ten times the capacity

1Two solutions a pH meter cannot tell apart20.20 mol/L totalreads pH 10.530.02 mol/L totalreads pH 10.54Acid it can absorb before the pH falls one unitabout 0.093 mol per litreabout 0.011 mol per litre
  1. Both read pH 10.5 — because both hold the same ratio of carbonate to hydrogencarbonate, about 3 to 2
  2. Total pair, 0.20 mol/L — about 21 g of sodium carbonate per litre
  3. Total pair, 0.02 mol/L — about 2 g per litre; one tenth the reserve
  4. Acid absorbed before the pH falls one unit — about 0.093 mol/L against about 0.0093 mol/L
Token counts are proportional to concentration and are not a molecular picture.

Put a number on the left-hand beaker: 0.12 mol of carbonate per litre can absorb about 0.12 mol of added acid, and 0.12 mol of acid is what 7 grams of acetic acid supplies. So that litre could take seven grams of vinegar’s acid before its reserve was spent. It is why a carbonate developer survives contact with wet film and a hydroxide one does not.

Each pair covers about a unit either side of its own pKa. Laid on a pH axis, the pairs photography uses between them cover the whole working range.

Which photographic pair holds which part of the scale

123456789101112pH1sulfurous / hydrogensulfite2citric acid (three pKa)3acetic / acetate4carbonic / hydrogencarbonate5hydrogensulfite / sulfite6boric / borate7hydrogencarbonate / carbonateVertical ticks inside each bar mark the pKa, where the pair is equal and strongest. Real baths: stop near 2–3, film developer 8.6, paper developer 10.5.
  1. Sulfurous acid / hydrogensulfite — pKa 1.80. The acidity a metabisulfite brings with it.
  2. Citric acid, three protons — pKa 2.87, 4.35 and 5.68 at 20 °C in 0.1 mol/L sodium perchlorate. The modern odourless stop bath.
  3. Acetic acid / acetate — pKa 4.74. The traditional stop bath and the acid reserve of a fixer.
  4. Carbonic acid / hydrogencarbonate — pKa 6.37. Where a carbonate bath ends up once it has absorbed a great deal of acid.
  5. Hydrogensulfite / sulfite — pKa 7.19. Present in every developer and fixer that contains sulfite.
  6. Boric acid / borate — pKa 9.27. Borax and metaborate developers, and hardening fixers.
  7. Hydrogencarbonate / carbonate — pKa 10.33. The alkali of print developers.
Each bar is one pH unit either side of the pair's own pKa, which is the working region OpenStax defines; the constants are those tabulated in Appendix H, except citric acid, which is from the IUPAC dataset with its conditions.

Carbonate and hydrogencarbonate hold the print-developer region. Borate, from borax or from sodium metaborate, holds the film-developer region a unit and a half lower. Acetate and citrate hold the stop bath. Hydrogensulfite and sulfite sit near neutral and are present in almost everything, because sulfite is in almost everything.

Why developer formulas differ: the borax case, worked honestly

Section titled “Why developer formulas differ: the borax case, worked honestly”

Kodak’s D-76, as printed in the 1928 primer, is Elon — the company’s trade name for metol — 2.0 g, sodium sulfite 100 g, hydroquinone 5.0 g and borax 2.0 g per litre; Kodak Ltd’s 1949 handbook prints the identical quantities twenty-one years later. ILFORD’s ID-11, which is the same design, is published at pH 8.60 to 8.70 as a stock solution. Compare that with a carbonate paper developer at 10.45 to 10.55, and the usual account is that “the borax buffers the developer at a lower pH”. Work the numbers and the account needs refining.

The pH region is borax’s. Boric acid’s pKa is 9.27, and borax alone sits at 9.18. A developer at 8.6 is 0.6 units below that — inside the useful band, so the borate pair is genuinely buffering there.

But most of the reserve is not borax’s. 2.0 g of borax per litre, molar mass 381.4, is 5.2 × 10⁻³ mol/L, and each borax provides two boric acid and two borate, so the pair totals about 0.021 mol/L. Meanwhile 100 g of sodium sulfite per litre, molar mass 126.05, is 0.79 mol/L — nearly forty times as much material in a pair whose pKa is 7.19. At pH 8.65 that sulfite is about 97 per cent in the sulfite form and 3 per cent hydrogensulfite, so it is poised to absorb a great deal of acid, and it will do so while the pH slides down towards 7.2.

The photographic consequence is the part Kodak did state, in 1928: adding carbonate to a sulfite-rich fine-grain developer “increases the rate of development and also accentuates the graininess of the resulting negative.” A lower, better-held pH is not merely gentler; it changes what the negative looks like. Part VIII takes that trade — contrast, grain and consistency against alkali choice — and turns it into developer design.

The two loads a developer’s buffer has to carry

Section titled “The two loads a developer’s buffer has to carry”

Where the acid in a developing tank comes from

developing tankfilm1bromide and acid, released as development runs2carryoveron wet film3CO₂ from the airthe buffer absorbs all three4
  1. Development by-products — bromide released from every grain reduced, and protons from the oxidised developing agent; proportional to the film put through
  2. Carryover on wet film — acid from a stop bath, or fixer, brought back on surfaces and trapped in a spiral
  3. Carbon dioxide from the air — dissolves to give carbonic acid; a slow load on any open or half-empty carbonate bath
  4. The buffer — absorbs all three, and is spent by all three
Drawn to show the routes, not the relative sizes: this course has not verified a published figure for the acid released per unit of development, and does not assert one.

The internal load. Every exposed grain that is developed releases its halide into the solution as bromide ion, and the developing agent that supplied the electrons is left oxidised and gives up protons. So a working developer becomes steadily more bromide-rich — which restrains it, by the common-ion mechanism of the solubility page — and steadily more acid, which slows it further. This course has not found a published figure for how much acid a given amount of development releases, and does not invent one; what is certain is the direction and the fact that it scales with the amount of film put through.

The external load. A film or print moved from a stop bath into a developer brings acid with it. In a tank that is a small volume clinging to the spiral; in a tray sequence with sloppy draining it is much more. This is why every ILFORD sheet carries the instruction not to let developer become contaminated with stop bath, and why the tongs, if you use them, are one tray each.

Section titled “The stop bath: a related but different problem”

A stop bath is not a buffer holding its own pH against attack. It is a reservoir of acid whose job is to destroy something else’s alkalinity, and it changes as it works.

ILFOSTOP is a citric acid concentrate at pH 2.1, diluted 1+19 and used for ten seconds at 20 °C. A fresh working solution is a weak acid essentially on its own, and a weak acid alone is a poor buffer: there is very little conjugate base in it to absorb further acid. What it has instead is a large total quantity of acid, which is exactly what it needs, because everything arriving is alkaline.

As alkaline developer comes in, each neutralisation converts some citric acid into citrate — so the bath becomes a buffer as it is used, and the pH climbs towards the citric acid pKa values of 2.87, 4.35 and 5.68. That climb is the exhaustion, and the bath stops being able to arrest development promptly long before all the acid is gone.

ILFORD publishes the capacity directly, which is unusually helpful. Per litre of working strength, unreplenished: 15 films of 135-36, or 60 prints of 20.3 × 25.4 cm on resin-coated paper, or 30 of the same size on fibre base. The fibre-base figure is half the resin-coated one, and the reason is carryover: fibre paper holds far more solution in its base, so each sheet brings more alkali in with it. The working solution’s life is separately given as seven working days, so the bath can be spent by time as well as by work.

Exhaustion and replenishment, as arithmetic

Section titled “Exhaustion and replenishment, as arithmetic”

Folklore says a developer is “tired”. Buffer arithmetic says something more useful: a bath has a fixed number of moles of each consumable in it, and each unit of work spends a definite share of them.

Three consumables run down at different rates and a bath fails when the first of them runs out.

  • Developing agent, consumed by every silver ion reduced.
  • Buffer capacity, consumed by the acid released and carried in.
  • Restrainer balance, which does not run out but accumulates: bromide builds up and slows the bath.

Replenishment is the practice of topping up the first two without diluting the third away, and the published replenisher formulas make the arithmetic visible. Set Kodak Ltd’s 1949 handbook’s two pairs side by side, per litre:

Ingredient D-76 D-76R DK-20 DK-20R
Elon (metol) 2.0 g 3.0 g 5.0 g 7.5 g
Sodium sulfite, anhydrous 100 g 100 g 100 g 100 g
Hydroquinone 5.0 g 7.5 g
The alkali borax 2.0 g borax 20.0 g Kodalk 2.0 g Kodalk 20.0 g

The pattern is unmistakable and it is the same in both. The sulfite is unchanged, the developing agents are raised by half, and the alkali is raised tenfold. Each handbook entry says the replenisher exists “to maintain volume and activity of tank developer”, and the ratios say which ingredient the manufacturer expects the tank to run out of first. It is the alkalinity — which is to say the buffer.

The handbook even quantifies the rate for deep-tank use of DK-20R: a given highlight density is maintained for a constant time and temperature provided the replenisher added is about 5 gallons per 1,000 rolls of film, which the same line glosses as 80,000 square inches. At the imperial gallon of 4.546 litres that is roughly 23 ml of replenisher per roll — a real number for a real buffer load, and the closest thing this course has found to a published figure for what a roll of film costs a developer. Both replenishers are added only until a quarter of the original developer has been replaced, after which the bath is discarded.

The same logic runs the other way in a fixer, and ILFORD’s RAPID FIXER sheet names the cause in the same breath as the cure: if a stop bath is not used and the fixer’s pH is found to be too high when measured — more alkali than it should be — then a few drops of a 50 per cent acetic acid solution may be added to lower it, gradually and with thorough stirring, and not past the published limits. That is replenishing the acid reserve alone, because the acid reserve alone is what carried-over alkaline developer has been spending. Use a stop bath and the load never arrives.

What a pH reading of a working bath tells you, and what it does not

Section titled “What a pH reading of a working bath tells you, and what it does not”

Everything above converges on this.

It tells you the ratio. A reading of 10.42 on a bath that should be 10.45 to 10.55 says the pair has shifted a little towards the acid member. That is real information and it is worth logging.

It does not tell you the capacity left. Look again at the buffered curve. Between zero and 0.09 mol/L of added acid — three quarters of the whole capacity — the pH falls by less than one unit. A bath that has spent half its reserve reads almost exactly like a fresh one. By the time the reading has moved appreciably, most of the reserve has gone and what is left is going fast, because the curve steepens as it approaches the end.

So a pH meter is an early-warning instrument only if you know the shape of the curve. Small drift, large expenditure. The practical answers are the ones the manufacturers give: count the work done against a published capacity, use a clearing-time test for a fixer, watch the indicator dye in a stop bath, and treat a pH reading as confirmation rather than as a fuel gauge.

An unbuffered bath at a given pH holds only as much alkali as that pH requires, which is almost none; a buffered one holds a large reserve of a conjugate pair and can absorb hundreds of times more acid before moving a single unit. The pair works by converting added strong acid or base into its own much weaker members, and it works best within about one unit of its own pKa. Henderson and Hasselbalch says the ratio sets the pH; the total concentration sets the capacity, and capacity is the thing that actually runs out. Photography’s pairs — sulfite, acetate, citrate, borate, carbonate — between them cover the whole working range, and a formula’s choice among them is a choice of pH region and of reserve at once. A developer’s buffer is spent by the acid development releases and by whatever is carried in on wet film; a stop bath is not holding its own pH but destroying somebody else’s, and it signals its exhaustion by climbing towards its acid’s pKa, which is what the indicator dye reports. And a pH reading of a working bath is a measurement of the ratio, not of the reserve.

Next: the laboratory session that makes all of this measurable — calibrating a meter against buffer standards, learning what its slope and offset mean, and finding out honestly how much of a pH reading you are entitled to believe.

Check your understanding

Question 1. A buffer is to be made from a pair whose pKa is 9.27 (boric acid and borate) at a target pH of 8.60. What ratio of conjugate base to acid does that need, and what would raising both concentrations tenfold change?
Show the answer and why

Answer: About 1 base to 4.7 acid; raising both tenfold would change the capacity tenfold and leave the pH where it is

Henderson and Hasselbalch: pH − pKa = 8.60 − 9.27 = −0.67, so log([A⁻]/[HA]) = −0.67 and the ratio is 10⁻⁰·⁶⁷ = 0.21, which is about one part borate to 4.7 parts boric acid. Multiplying both concentrations by ten leaves the ratio, and therefore the pH, untouched, while multiplying the number of moles of each by ten and so the capacity by ten. The ratio sets the pH; the total sets the capacity.

Question 2. Two developers start at the same pH. One is buffered with borax; the other is brought to that pH with sodium hydroxide alone. Predict their behaviour over twelve rolls of film.
Show the answer and why

Answer: The borax one holds close to its starting pH for a long time and then falls away; the hydroxide one starts falling with the first roll, because at pH 8.6 it contains only about 4 × 10⁻⁶ mol/L of hydroxide and nothing to replace it

A solution at pH 8.6 held by hydroxide alone contains 10⁻⁵·⁴ = 4 × 10⁻⁶ mol per litre of hydroxide and no reserve whatever, so the acid released by developing the first roll consumes it. The borax solution holds a conjugate pair, so each unit of acid converts borate to boric acid and moves the ratio a little rather than eliminating the alkali. The practical consequence is repeatability: the twelfth negative in the borax developer resembles the first, and in the hydroxide one it does not.

Question 3. A working stop bath still reads close to its nominal pH but no longer stops development promptly. How can both be true?
Show the answer and why

Answer: pH reports the ratio of acid to conjugate base, while the ability to stop development depends on having enough total acid to neutralise the alkali arriving on the film in a few seconds; the bath can hold its ratio while its total reserve, and so the speed with which it can absorb a load, has largely gone

This is the pH-against-capacity distinction in its most practical form. As the bath is used, acid is converted to its conjugate base and the pH climbs, but over most of the working range the climb is small — that is what buffering means. Stopping development in ten seconds needs enough acid on hand to swamp the alkali in a swollen emulsion layer immediately, and that is a matter of total reserve. ILFORD publishes the reserve as a capacity: per litre, 15 films, 60 resin-coated prints or 30 fibre-base prints, unreplenished. Count the work, and watch the indicator dye.

Question 4. Why does ILFORD give half the capacity per litre for fibre-base prints as for resin-coated prints of the same size?
Show the answer and why

Answer: Fibre-base paper carries far more solution in its absorbent base, so each sheet brings more alkaline developer into the stop bath, spending its acid reserve faster

The load on a stop bath is carryover, and carryover is a volume. A resin-coated print carries a film of solution on two impermeable surfaces; a fibre-base print carries that plus whatever has soaked into the paper. The same physics explains why fibre paper also takes much longer to wash, which the diffusion page later in this part explains and Part XII turns into wash times.

Question 5. Kodak Ltd’s DK-20 developer carries 2 g of sodium metaborate per litre, and its replenisher DK-20R carries 20 g per litre. What is that ten-to-one ratio telling you?
Show the answer and why

Answer: That the manufacturer expects the tank to lose alkalinity as it works, and that the replenisher must be over-alkaline to restore the working bath rather than merely dilute it

A replenisher is not the developer topped up; it is a formula designed to put back what the working bath has spent, at the rate it spends it. The handbook’s own words are that DK-20R maintains the volume and activity of the tank developer. The same ten-to-one relation holds between D-76 and D-76R with borax. Read the ratio as the manufacturer’s statement of which ingredient runs down fastest, which for a developer is nearly always the alkalinity.

Question 6. A carbonate buffer holds 0.12 mol of carbonate per litre. Roughly how much acid can it absorb, and what does that correspond to?
Show the answer and why

Answer: About 0.12 mol per litre, which is the amount of alkali that about 7 g of acetic acid would neutralise

Each carbonate ion can take one proton to become hydrogencarbonate, so 0.12 mol of carbonate absorbs about 0.12 mol of strong acid before that member of the pair is spent. Converting to a familiar mass, 0.12 mol of acetic acid is 0.12 × 60.05 = 7.2 g. The pH will have fallen by something over a unit by the time you get there, and most of that fall happens in the last fifth of the journey, which is why the reading is a poor gauge of how much is left.

Sources for this page

18 cited · checked 2026-09-04

  1. 01Chemistry 2e, section 14.6: BuffersPaul Flowers, Klaus Theopold, Richard Langley and William R. Robinson, for OpenStax§ 14.6 Buffers: how a conjugate pair absorbs added strong acid or base; buffer capacity and its dependence on total concentration; the loss of usefulness when one member falls below about 10 per cent of the other; the Henderson-Hasselbalch equation and the assumption under which it holdsopenstax.org/books/chemistry-2e/pages/14-6-bufferstier 1, primary2026-09-04
  2. 02Chemistry 2e, Appendix H: Ionization Constants of Weak AcidsPaul Flowers, Klaus Theopold, Richard Langley and William R. Robinson, for OpenStax§ Appendix H: ionisation constants at 25 degrees C for acetic acid, boric acid, carbonic acid and sulfurous acidopenstax.org/books/chemistry-2e/pages/h-ionization-constants-of-weak-acidstier 1, primary2026-09-04
  3. 03Chemistry 2e, section 14.5: Polyprotic AcidsPaul Flowers, Klaus Theopold, Richard Langley and William R. Robinson, for OpenStax§ 14.5 Polyprotic Acids: carbonic acid, whose two constants are separated by about ten thousand so the two ionisations can be treated separatelyopenstax.org/books/chemistry-2e/pages/14-5-polyprotic-acidstier 1, primary2026-09-04
  4. 04Chemistry 2e, section 14.4: Hydrolysis of SaltsPaul Flowers, Klaus Theopold, Richard Langley and William R. Robinson, for OpenStax§ 14.4 Hydrolysis of Salts: the hydrogencarbonate ion as an amphiprotic species, with an acid constant of 4.7 x 10^-11 and a base constant of 2.3 x 10^-8openstax.org/books/chemistry-2e/pages/14-4-hydrolysis-of-saltstier 1, primary2026-09-04
  5. 05Chemistry 2e, section 14.3: Relative Strengths of Acids and BasesPaul Flowers, Klaus Theopold, Richard Langley and William R. Robinson, for OpenStax§ 14.3 Relative Strengths of Acids and Bases: the acid ionisation constant and per cent ionisationopenstax.org/books/chemistry-2e/pages/14-3-relative-strengths-of-acids-and-basestier 1, primary2026-09-04
  6. 06Analytical Chemistry 2.1, section 11.2: Potentiometric MethodsDavid Harvey, DePauw University§ Table 11.2.6, NIST primary standard buffers: 0.01 molal sodium tetraborate at 9.180 at 25 degrees C, with its values at other temperatureschem.libretexts.org/Bookshelves/Analytical_Chemistry/Analytical_Chemistry_2.1_(Harvey)/11%3A_Electrochemical_Methods/11.02%3A_Potentiometric_Methodstier 2, specialist2026-09-04
  7. 07IUPAC Digitized pKa Dataset, high-confidence subset v2.3International Union of Pure and Applied Chemistry, Dissociation Constants project; digitised from the Serjeant and Dempsey and Perrin compilations, 2024§ High-confidence dataset v2.3, Serjeant entry for citric acid at 20 degrees C in 0.1 mol/L sodium perchlorategithub.com/IUPAC/Dissociation-Constantstier 1, primary2026-09-04
  8. 08Elementary Photographic ChemistryEastman Kodak Company, 1924§ Chapter III: the carbonate as a reservoir of alkali that keeps a small alkali concentration nearly constant during use; the caustic alkalis; over-alkaline developer and gelatin swellingarchive.org/details/elementaryphotog00easttier 1, primary2026-09-04
  9. 09Elementary Photographic ChemistryEastman Kodak Company, 1928§ Chapter II: formula D-76 and its borax; sodium carbonate in three commercial forms; Chapter IV: the strength of an acid against the alkali it can neutralise, and the acid reserve an acid fixing bath needs against carried-over developerarchive.org/details/elementaryphotog00east_0tier 1, primary2026-09-04
  10. 10ILFORD Chemical Sundries: ILFOSTOP, ILFOTOL and WASHAID, technical informationHARMAN technology Limited (ILFORD Photo), 2017§ ILFOSTOP: a low odour citric acid stop bath containing a pH-sensitive indicator dye that changes from yellow to purple as the bath becomes exhausted; dilution 1+19; 10 seconds at 20 degrees C; capacity per litre unreplenished of 15 films, 60 RC prints and 30 fibre-base prints; concentrate pH 2.1; working-strength life of 7 working daysilfordphoto.com/amfile/file/download/file/1865/product/669tier 1, primary2026-09-04
  11. 11ILFORD Powder Film Developers: PERCEPTOL, ID-11 and MICROPHEN, technical informationHARMAN technology Limited (ILFORD Photo), 2024§ pH and specific gravity of ID-11, PERCEPTOL and MICROPHEN stock solutionsilfordphoto.com/wp/wp-content/uploads/2024/09/ILFORD-POWDER-CHEM-190824.pdftier 1, primary2026-09-04
  12. 12ILFORD MULTIGRADE, PQ UNIVERSAL and BROMOPHEN paper developers, technical informationHARMAN technology Limited (ILFORD Photo), 2010§ pH and specific gravity of MULTIGRADE, PQ UNIVERSAL and BROMOPHENilfordphoto.com/amfile/file/download/file/1828/product/709tier 1, primary2026-09-04
  13. 13ILFORD RAPID FIXER, technical informationHARMAN technology Limited (ILFORD Photo), 2010§ pH at 1+4; correcting a drifted pH with 50 per cent acetic acid; the clearing-time test and the capacity figures per litreilfordphoto.com/amfile/file/download/file/1833/product/711tier 1, primary2026-09-04
  14. 14Chemicals and Formulae, 3rd edition (one of a series of Kodak photographic handbooks)Kodak Limited, 1949§ Formula D-76 and its replenisher D-76R; formula DK-20 and its replenisher DK-20R, with the replenishment rate of about 5 gallons per 1,000 rolls for deep-tank use and the instruction to replenish only until 25 per cent of the original developer has been replacedarchive.org/details/KodakChemicalsAndFormulaetier 1, primary2026-09-04
  15. 15PubChem compound summary: Borax (B4Na2O7.10H2O) (CID 16211214)National Center for Biotechnology Information§ Properties (HSDB): the aqueous solution is alkaline to litmus and phenolphthalein, pH about 9.5pubchem.ncbi.nlm.nih.gov/compound/16211214tier 1, primary2026-09-04
  16. 16PubChem compound summary: Sodium metaborate (CID 145326)National Center for Biotechnology Information§ Other experimental properties: the aqueous pH of the tetrahydrate against concentration at 20 degrees C, from 10.52 at 0.1 per cent to 12.0 at 15 per centpubchem.ncbi.nlm.nih.gov/compound/145326tier 1, primary2026-09-04
  17. 17PubChem compound summary: Sodium Sulfite (CID 24437)National Center for Biotechnology Information§ Computed properties - molecular weightpubchem.ncbi.nlm.nih.gov/compound/24437tier 1, primary2026-09-04
  18. 18PubChem compound summary: Sodium Carbonate (CID 10340)National Center for Biotechnology Information§ Computed properties - molecular weightpubchem.ncbi.nlm.nih.gov/compound/10340tier 1, primary2026-09-04

Formulas, hazard statements, historical dates and process descriptions on this page were checked against the sources above on the date shown. Safety data changes: obtain the current safety data sheet for the product you actually buy before you open it.