Arterial Oxygen Content Calculator (CaO2 and DO2)
Calculate arterial oxygen content (CaO2) from hemoglobin, SaO2 and PaO2 in mmHg or kPa, then oxygen delivery (DO2), with the working shown.
Calculator
Total hemoglobin in g/dL, as US reports give it. UK, Canadian and Australian reports use g/L: divide by 10, so 135 g/L is 13.5 g/dL.
Oxyhemoglobin as a percentage of total hemoglobin, from the blood gas. A pulse oximeter SpO2 is a fair stand-in, except with carbon monoxide, which it reads as oxyhemoglobin.
From the blood gas, in mmHg or kPa. It only enters the dissolved term, 0.003 mL/dL per mmHg.
Only the oxygen delivery readout uses it. Leave it at 5 L/min if you only need the content.
Working, with your numbers
- CaO2 = 1.34 x Hb x SaO2 + 0.003 x PaO2
- = 1.34 x 15 x 0.98 + 0.003 x 100
- = 19.7 + 0.3
- = 20 mL/dL
Values are converted into the units the equation is worked in before the arithmetic.
- Oxygen delivery, DO2 CaO2 x cardiac output x 10, here 20 x 5 x 10. The 10 turns mL per dL into mL per L, because cardiac output is in L/min.
- 999.9 mL/min
- Bound to hemoglobin 1.34 x Hb x SaO2. Nearly all of the oxygen in arterial blood, which is why content follows hemoglobin so closely.
- 19.7 mL/dL
- Dissolved in plasma 0.003 x PaO2 in mmHg, or about 0.0225 x PaO2 in kPa. Proportional to the partial pressure, by Henry’s law.
- 0.3 mL/dL
- Share dissolved The dissolved term as a share of the whole content. Small at any PaO2 reached without a hyperbaric chamber.
- 1.5 %
- Content with 1.39 instead of 1.34 The same equation with the theoretical Hüfner factor that some textbooks use. The gap is the disagreement between the two conventions, not an error in either.
- 20.73 mL/dL
- Hemoglobin in g/L The unit UK, Canadian and Australian reports use. Divide by 10 to return to g/dL.
- 150 g/L
Citing this tool
Last updated . Add the date you accessed it as well, which a citation of a page that can change asks for. If a specific result matters, cite the permalink from the tool’s share row instead of this page: it reproduces the exact parameters.
The equation
Oxygen content equation, Hüfner factor 1.34
What is the arterial oxygen content (CaO2) formula?
The arterial oxygen content formula is CaO2 = (1.34 × Hb × SaO2) + (0.003 × PaO2), with hemoglobin in g/dL, SaO2 as a fraction and PaO2 in mmHg, giving mL/dL. The first term is oxygen bound to hemoglobin, the second oxygen dissolved in plasma. Oxygen delivery is DO2 = CaO2 × cardiac output × 10, in mL/min.
Why the Hüfner factor here is 1.34, not 1.39
The 1.34 is Hüfner’s factor, the mL of oxygen that one gram of fully saturated hemoglobin binds, and textbooks print values from 1.34 to 1.39 for it. 1.39 is the theoretical ceiling: each hemoglobin tetramer, about 64,500 g/mol, binds four oxygen molecules. Whole blood measures lower. Gregory (1974) found 1.306 mL/g in adult blood after correcting for carboxyhemoglobin and methemoglobin, and attributed most of the gap to the cyanmethemoglobin standard, which he found read hemoglobin about 6 percent high.
This calculator uses 1.34, the figure the bedside form of the equation is usually written with and the constant the oxygen dissociation curve simulator uses, so the two pages give the same content for the same blood. If your course uses 1.39, read the result named “Content with 1.39 instead of 1.34” under the answer. At a hemoglobin of 15 g/dL and a saturation of 98 percent the two differ by about 0.7 mL/dL.
Hemoglobin carries almost all of the oxygen
At a hemoglobin of 15 g/dL, a saturation of 98 percent and a PaO2 of 100 mmHg, the bound term is 19.7 mL/dL and the dissolved term 0.3 mL/dL, so plasma carries about 1.5 percent of the total. Halve the hemoglobin to 7.5 g/dL and the content falls to about 10.1 mL/dL. The saturation, the PaO2 and the pulse oximeter reading stay where they were, because saturation is a share of whatever hemoglobin is present, so anemia lowers oxygen content without moving either oxygen number on a blood gas.
Supplemental oxygen adds little once hemoglobin is saturated. Raising PaO2 from 100 to 600 mmHg multiplies the dissolved term by six, from 0.3 to 1.8 mL/dL, and adds almost nothing to the bound term, so it raises the content of anemic blood by not much more than 1.5 mL/dL. Dissolved oxygen only becomes large at hyperbaric pressures: a PaO2 of 2,000 mmHg dissolves 6 mL/dL.
SaO2, SpO2 and carbon monoxide
The saturation in the equation multiplies total hemoglobin, so it has to be oxyhemoglobin as a share of total hemoglobin. A standard pulse oximeter reads carboxyhemoglobin as oxyhemoglobin, so in carbon monoxide poisoning SpO2 can look normal while the content is low. Pulse oximeters also miss low arterial saturations more often in Black patients than in White patients (Sjoding and colleagues, New England Journal of Medicine, 2020), so an SpO2 can overstate the content without any warning on the screen.
With carbon monoxide or methemoglobin present, use the oxyhemoglobin fraction a co-oximeter reports, often shown as FO2Hb. A functional saturation leaves those dyshemoglobins out of its denominator while the hemoglobin in the equation keeps them in, so pairing the two overstates the content.
From oxygen content to oxygen delivery
Content is a concentration and delivery is a flow. Multiplying by cardiac output in L/min gives oxygen per minute, and the factor of 10 converts the content from per dL to per L so that the units agree. A content of 20 mL/dL at a cardiac output of 5 L/min delivers 1,000 mL/min.
Because delivery is a product, each factor scales it in proportion: a fall of a third in hemoglobin, in saturation or in cardiac output cuts delivery by about a third, and a rise in one can offset a fall in another. For a figure that compares people of different sizes, use the cardiac index in place of cardiac output, or divide by a surface area from the body surface area calculator, which gives the indexed delivery, DO2I, in mL/min/m2.
The same equation applied to mixed venous blood, with the venous saturation and PvO2, gives the venous content. The arterial minus venous difference, times cardiac output and the same factor of 10, is the oxygen the tissues took up, which is the Fick principle.
Common mistakes
- Saturation as a fraction in a percent field. Typing 0.98 instead of 98 makes the bound term a hundred times too small. The calculator warns when a saturation is 1 or below.
- Hemoglobin in g/L. UK, Canadian and Australian reports give g/L, and 135 read as g/dL would make the content ten times too high. Divide by 10 first; the field refuses anything above 30 g/dL.
- The 0.003 with PaO2 in kPa. The coefficient is per mmHg. Per kPa it is about 0.0225, and using 0.003 with a kPa value makes the dissolved term 7.5 times too small. This calculator converts kPa to mmHg before using it.
- Dropping the 10 in DO2. The answer comes out ten times too low, 100 mL/min where it should be 1,000.
- Comparing answers built on different factors. A 1.39 answer and a 1.34 answer for the same blood can both be correct. Check which factor a worked answer used before deciding which of you made the error.
Converting units first? Use the pressure conversion table.
How to calculate arterial oxygen content
- Write down the formula:
CaO2 = 1.34 · Hb · SaO2 + 0.003 · PaO2 -
Gather the values it needs. The calculator above starts with these:
- Hemoglobin: Hb = 15 g/dL
- Arterial saturation: SaO2 = 98 %
- Arterial O2: PaO2 = 100 mmHg
-
Substitute them and work through the arithmetic:
- CaO2 = 1.34 x Hb x SaO2 + 0.003 x PaO2
- = 1.34 x 15 x 0.98 + 0.003 x 100
- = 19.7 + 0.3
- = 20 mL/dL
-
To find one of the other values instead, rearrange the formula for it:
- Hemoglobin:
Hb = (CaO2 - 0.003 · PaO2) ÷ (1.34 · SaO2) - Arterial saturation:
SaO2 = (CaO2 - 0.003 · PaO2) ÷ (1.34 · Hb)
- Hemoglobin:
Worked examples
Each one runs through the calculator above, so the arithmetic here is the arithmetic it does.
What is the oxygen content in anemia with a hemoglobin of 7 g/dL?
- CaO2 = 1.34 x Hb x SaO2 + 0.003 x PaO2
- = 1.34 x 7 x 0.99 + 0.003 x 100
- = 9.286 + 0.3
- = 9.586 mL/dL
Under half the 20 mL/dL of blood with a hemoglobin of 15, yet the saturation and the PaO2 are both normal. Saturation is a share of whatever hemoglobin is present, so neither oxygen number on a blood gas shows an anemia; only the hemoglobin does.
What is the CaO2 for a PaO2 of 8 kPa, an SaO2 of 90 percent and a hemoglobin of 14 g/dL?
- CaO2 = 1.34 x Hb x SaO2 + 0.003 x PaO2
- = 1.34 x 14 x 0.9 + 0.003 x 60
- = 16.88 + 0.18
- = 17.06 mL/dL
The 0.003 coefficient is per mmHg, so 8 kPa has to become 60 mmHg first, giving 0.18 mL/dL dissolved. Multiplying 0.003 by 8 gives 0.024, which is 7.5 times too small; per kPa the coefficient is about 0.0225.
Practise this with Lab and Clinical Calculation Practice Problems, questions generated from this calculator and 20 other calculators in Biology.
Common questions
Why does the oxygen content formula use 1.34 and not 1.39?
Both figures are in use, and they describe different things. 1.39 mL/g is the theoretical ceiling, four oxygen molecules for each hemoglobin tetramer of about 64,500 g/mol. Whole blood measures lower: Gregory found 1.306 mL/g in adult blood in 1974 and attributed most of the shortfall to the standard used to measure hemoglobin. 1.34 sits between the two and is the figure the bedside equation is usually written with, and it is the one this calculator and the oxygen dissociation curve simulator use. At a hemoglobin of 15 g/dL and a saturation of 98 percent the choice moves the answer by about 0.7 mL/dL, and the 1.39 result is shown beside the main one.
Why is dissolved oxygen such a small part of the total?
Because oxygen is poorly soluble in plasma. By Henry’s law the dissolved amount is proportional to the partial pressure, at 0.003 mL/dL per mmHg, so a PaO2 of 100 mmHg dissolves 0.3 mL/dL, about 1.5 percent of a normal content. Raising PaO2 to 600 mmHg on pure oxygen only takes it to 1.8 mL/dL. Once hemoglobin is saturated, the dissolved term is the only place extra oxygen can go, which is why supplemental oxygen raises the content of anemic blood so little.
How do I calculate oxygen delivery (DO2)?
Multiply arterial oxygen content by cardiac output and by 10, which gives mL/min. The 10 converts content from mL per dL to mL per L to match a cardiac output in L/min, and leaving it out makes the answer ten times too low. A content of 20 mL/dL at a cardiac output of 5 L/min delivers 1,000 mL/min. Delivery is a product of hemoglobin, saturation and cardiac output, so a 30 percent fall in any one of them cuts it by about 30 percent. Using the cardiac index in place of cardiac output gives the indexed delivery, DO2I, in mL/min/m2.
Should I use SpO2 or SaO2 in the formula?
SaO2 from an arterial blood gas where you have one, and SpO2 only as an estimate. A standard pulse oximeter reads carboxyhemoglobin as oxyhemoglobin, so in carbon monoxide poisoning SpO2 can look normal while oxygen content is low. Pulse oximeters also miss low arterial saturations more often in Black patients than in White patients, as Sjoding and colleagues reported in the New England Journal of Medicine in 2020. Where carbon monoxide or methemoglobin may be present, use the oxyhemoglobin fraction a co-oximeter reports, FO2Hb, which is the share of total hemoglobin actually carrying oxygen and so the saturation that matches the Hb in the equation.
Can I enter hemoglobin in g/L?
Divide it by 10 first. The field takes g/dL, the unit US reports use, while UK, Canadian and Australian reports give g/L, so 135 g/L is 13.5 g/dL. The field refuses anything above 30 g/dL, so a g/L value typed as it stands is caught unless the anemia is extreme. PaO2 needs no conversion: choose mmHg or kPa from its unit menu, and the calculator converts kPa to mmHg before applying the 0.003 coefficient.