Chemical Oxygen Demand Calculator

Find a water sample’s chemical oxygen demand from its FAS titration volumes.

Solves in both directions across four volume units and four concentration units.

Updated October 17, 2026
Frank Zhao - Creator
CreatorFrank Zhao
Loading calculator…

What the titration measures

Chemical oxygen demand is how much oxygen the reduced matter in a water sample takes from a strong oxidant under the conditions of the test. The dichromate reflux method measures it by titration, and this calculator turns the four numbers that titration produces into one reportable figure in milligrams of oxygen per litre.

Two of those numbers look strange the first time: the blank titration usually consumes more FAS than the sample titration, not less. That is the whole point. The blank is digested with the reagents and no sample, so all of its dichromate is still there waiting to be titrated. The sample digests with the same reagents plus the water being tested, and whatever oxidisable matter it contains takes part of the dichromate out of play before the titration even starts. The difference between the two titrations is the oxidant the sample consumed.

Who tends to use it

Treatment plant operators checking an influent or an effluent against a permit figure, environmental and industrial laboratories reducing bench notes to a result, students working through the dichromate method, and anyone sanity-checking a reported COD against the titration volumes it came from.

What it does not do

It does not digest a sample, choose a dilution or correct for a substance that interferes with the oxidation. Those belong to the analytical method being followed. This page is the arithmetic between the burette readings and the number you record.

Because the two titration volumes, the titrant normality, the volume of sample and the COD are all linked by one equation, the calculator also runs backwards. Type a COD your laboratory already reported and any three of the four titration quantities, and the missing one is filled in for you — a quick way to check that a result and its worksheet agree.

Running a calculation

The order of the boxes follows the bench: the blank titration, the sample titration, the titrant strength, then the volume of sample that went into the digestion.

Enter the FAS for the blank (A)

The volume of ferrous ammonium sulfate delivered when the blank was titrated. Pick whichever volume unit your burette is marked in — microlitres, millilitres, centilitres or litres — and the value is normalised to millilitres before it is used.

Enter the FAS for the sample (B)

The same titration for the digested sample. It is normally the smaller of the two volumes; if it comes out larger, the case is worth understanding before you trust the answer, and the calculator says so instead of quietly returning a negative demand.

Enter the normality of the FAS (N)

The equivalent concentration of the titrant on the day it was used, in equivalents per litre. Ferrous ammonium sulfate is a one-electron reductant, so its normality and its molarity are the same number. If you made the titrant up from a weighed mass, the Normality Calculator converts that mass, its equivalent weight and the flask volume into the figure this box wants.

Enter the volume of sample

The volume of the liquid that was actually digested — a few millilitres in the standard test. If the sample was diluted before digestion, this is the volume of the diluted aliquot, and the answer that comes back is the COD of that dilution rather than of the sample as received.

Read the chemical oxygen demand

The fifth box fills itself in milligrams per litre. Nothing is locked: type a measured COD and any three titration quantities, and the box you left empty is the one that gets solved.

A typical run, worked through

A blank of 24.5 mL and a sample of 12.2 mL against 0.25 N FAS, with 25 mL of sample digested. The difference is 12.3 mL of titrant that the oxidisable matter in the sample accounted for.

COD\mathrm{COD}==8000×0.25×12.325\frac{8000 \times 0.25 \times 12.3}{25}==984 mg/L984\ \mathrm{mg/L}

Enter those four numbers and the COD box reads 984 mg/L. Everything else on the page is a rearrangement of the same statement, so changing the normality or the sample volume moves the answer, and changing the answer tells you what the titration would have had to be.

The formula and the 8000

The dichromate that the sample consumed is the difference between the blank and the sample titrations, multiplied by the titrant normality. Turning that into milligrams of oxygen per litre of sample is what the rest of the formula does.

COD=8000×N×(A−B)V\mathrm{COD} = \frac{8000 \times N \times \left(A - B\right)}{V}
  • COD\mathrm{COD} — chemical oxygen demand, in milligrams of oxygen per litre of the digested liquid.
  • NN — normality of the FAS titrant, in equivalents per litre, as standardised on the day.
  • AA — FAS volume delivered in the blank titration, in millilitres.
  • BB — FAS volume delivered in the sample titration, in millilitres.
  • VV — volume of the digested aliquot, in millilitres.

Where 8000 comes from

It is not a fudge factor. One milliequivalent of dichromate corresponds to 8 mg of oxygen, and the sample volume has to be expressed per litre rather than per millilitre, which contributes the thousand:

80008000==8 mg O2meq8\ \frac{\mathrm{mg\ O_2}}{\mathrm{meq}}×\times1000 mLL1000\ \frac{\mathrm{mL}}{\mathrm{L}}

The same run, taken a step at a time, shows where each factor sits:

12.3 mL×0.25 N12.3\ \mathrm{mL} \times 0.25\ \mathrm{N}==3.075 meq3.075\ \mathrm{meq}→\rightarrow3.075×83.075 \times 8==24.6 mg O224.6\ \mathrm{mg\ O_2}
24.6 mg0.025 L\frac{24.6\ \mathrm{mg}}{0.025\ \mathrm{L}}==984 mg/L984\ \mathrm{mg/L}

Solving the other way round

Each of the four titration quantities can be recovered from the other three plus a measured COD. These are the same statement rearranged, not separate rules, so a value entered in one place can never contradict the others:

V=8000×N×(A−B)CODV = \frac{8000 \times N \times \left(A - B\right)}{\mathrm{COD}}
N=COD×V8000×(A−B)N = \frac{\mathrm{COD} \times V}{8000 \times \left(A - B\right)}
A=B+COD×V8000×NA = B + \frac{\mathrm{COD} \times V}{8000 \times N}
B=A−COD×V8000×NB = A - \frac{\mathrm{COD} \times V}{8000 \times N}

Units are normalised before the equation runs

Whatever volume scale you type on, the equation works in millilitres: a value entered in microlitres is multiplied by 10−310^{-3}, centilitres by 10 and litres by 1000. The result is computed in milligrams per litre and converted for display, where the exact multiples are 1000 mg/L to the gram per litre, 10 000 mg/L to the gram per decilitre, and 1000 mg/L to the milligram per millilitre. Mixing a microlitre reading with a millilitre reading is therefore harmless for the arithmetic, but it is still worth checking that the two titration volumes were entered on the same scale.

The one combination with no answer

If the blank and the sample titrated to exactly the same volume, there is no difference for the sample to have caused. When the COD is the quantity being computed, that is a legitimate zero; when a nonzero COD has been entered and the normality is being solved for, the box stays empty and explains that the back-solve divides by the difference of two equal volumes.

Two worked examples

The same four boxes answer two quite different bench questions: how well a treatment step is performing, and what to do with a sample that is far too strong for an undiluted digestion.

Treatment performance

Influent and effluent at a sewage works

A municipal plant samples both ends of the works on the same day to see what its biological stage is removing.

What you enter

Blank 24.5 mL, sample 12.2 mL, FAS normality 0.25 N, 25 mL digested — first for the influent, then again for the effluent with a sample titration of 23.6 mL.

CODin\mathrm{COD}_{\mathrm{in}}==8000×0.25×12.325\frac{8000 \times 0.25 \times 12.3}{25}==984 mg/L984\ \mathrm{mg/L}
CODout\mathrm{COD}_{\mathrm{out}}==8000×0.25×0.925\frac{8000 \times 0.25 \times 0.9}{25}==72 mg/L72\ \mathrm{mg/L}
984−72984×100\frac{984 - 72}{984} \times 100≈\approx92.7%92.7\%

Report the pair, and the removal as a percentage. The same two numbers on a trend line show a treatment upset far earlier than a single grab sample would.

High-strength sample

Leachate that has to be diluted first

An industrial leachate is so heavily loaded that a neat digest would consume almost all of the dichromate. The analyst dilutes one part of sample into five parts of final volume and digests 2.5 mL of that dilution.

What you enter

Blank 24.5 mL, sample 13.7 mL, FAS normality 0.25 N, 2.5 mL digested — the volume of the dilution, not of the neat leachate.

CODdilution\mathrm{COD}_{\mathrm{dilution}}==8000×0.25×10.82.5\frac{8000 \times 0.25 \times 10.8}{2.5}==8640 mg/L8640\ \mathrm{mg/L}
8640×58640 \times 5==43200 mg/L43200\ \mathrm{mg/L}

Planning the dilution so that the digest lands inside the working range of the method — rather than discovering afterwards that the burette ran out — is what the Solution Dilution Calculator is for.

The result belongs to the dilution, so multiply by the five-fold factor to report the leachate as received. Report which volume and which dilution the number refers to, otherwise the figure cannot be reproduced.

A negative answer is information, not a result

When the sample titration exceeds the blank, the COD box shows the negative figure in red with an explanation. Check the two volumes were not swapped, that both titrations belong to the same standardisation of the FAS, and that the digestion itself is sound — the size of the negative number tells you how far off the run was.

Practical notes that change the number

The arithmetic is exact; the titration is not. These four habits are what stand between a well-behaved result and a number that has to be thrown away.

Run the blank with the batch

Reagent batches, digestion heating and cooling all move the blank. A blank borrowed from an earlier batch shifts every result in the current one, and the shift is invisible in the calculator because both titrations look plausible.

Use the normality of the day

Ferrous ammonium sulfate solutions lose titer as they age, so the value on the bottle is not always the value in the burette. Enter the figure you standardised against a dichromate standard on the day, and a few percent of drift stops walking straight into the result.

Read the burette finely

The result rides on A−BA - B, not on either reading alone. A 0.1 mL slip on a 12.3 mL difference is already close to one percent, and dilution, repeatability of the digestion and the standardisation all add to that.

Record which volume was digested

A diluted sample and a neat sample can produce the same titration and two completely different COD values. Write down the aliquot volume and the dilution factor next to the result, and apply the factor deliberately when you report the original sample.

Interferences belong to the method, not to this page

Substances that are oxidised along with the organic matter, and substances that resist the oxidation, are handled inside the analytical method — by masking, by dilution, by a different digestion, or by accepting a known bias. The calculator has no way to know any of that, so treat its output as the arithmetic of the titration you performed and nothing more.

Questions

Q

Why is the COD box showing a negative number in red?

Because the sample titration came out larger than the blank titration, which makes A−BA - B negative. The number is kept visible so you can see how large the discrepancy is, but it is not a demand figure. Swapped volumes, a FAS solution standardised on a different day, or a spoiled digestion are the usual explanations.

Q

Why is a box empty instead of showing a value?

Either a required input is still missing, or the arithmetic has no answer for the current numbers. The common case is a blank and a sample that titrated identically: a nonzero COD cannot be turned back into a normality when the two titration volumes are equal, because the back-solve would divide by zero. The empty box carries a short note saying so.

If the COD is the box you are solving for, an equal pair of titrations is perfectly fine — it simply means nothing in the sample took oxygen, and the result is a real zero.

Q

What do the red warnings about normality and COD mean?

They flag values that are arithmetically fine but hard to justify on a bench. A FAS solution above about 1 N cannot be made up at room temperature, so the box asks you to check that you typed a normality rather than a volume or a ratio. A COD above 100 000 mg/L is roughly 100 g of oxidisable matter per litre, which is a slurry rather than a water sample and far beyond what an undiluted digestion can handle.

Both warnings keep the computed number on screen: read them as prompts to check the scale of your inputs, or to dilute the sample and apply the factor, not as hard limits of the method.

Limits of the calculator

  • It reduces titration data; it does not perform a digestion, choose a dilution, or correct for anything that interferes with the oxidation. Those decisions belong to the analytical method and to the analyst.
  • The formula assumes both titration volumes come from the same standardised FAS, that the normality is the real strength of the titrant on the day, and that the sample volume is the volume actually digested. A dilution applied on the bench has to be applied again to the result.
  • The two red ceilings are plausibility guards drawn from what can be dissolved and what a digestion can handle. They are not regulatory limits, and a value below them is not automatically valid.
  • For permits, compliance reporting or any decision with consequences, use the value your laboratory releases under its own method and quality control. This page is a working aid for understanding and checking that value, not a replacement for it.
Chemical Oxygen Demand Calculator - COD from FAS Titration