Educational content. This page is a synthesis of published physiology and evidence for clinician education. It is not medical advice and not a protocol. Nothing here is patient-specific: decisions about resuscitation, diagnosis, and drug therapy require a qualified clinician with access to the full clinical context and the individual patient's trajectory.
Two numbers that are supposed to agree
A lactate of 6 mmol/L should widen the anion gap by roughly 6 mEq/L. That expectation is built into how most of us read a metabolic panel: the gap is the accounting entry, lactate is one of the line items, and if the line item is large the entry should be large too. In the CICU the two numbers disagree constantly, and the disagreement is usually treated as noise, a lab error, or a reason to order a repeat.
It is none of those things. Every dissociation between lactate and the anion gap has a specific mechanism, and in most cases the mechanism is the diagnosis. A patient with a lactate of 6.4 and a raw gap of 13 is not a measurement failure; they are a patient with an albumin of 1.8. A patient with a gap of 23 and a lactate of 1.1 is not a mystery; they are a patient whose anion is D-lactate, which the analyser cannot see.
Reading the two numbers together requires abandoning two pieces of received wisdom first. Lactate is not a waste product of anaerobic metabolism, and the anion gap is not a measurement.
Lactate is a fuel, and it is produced continuously
The idea that lactate is what cells make when they run out of oxygen has been obsolete for two decades, and the physiology that replaced it is the reason the clinical dissociations exist at all.
Lactate is produced continuously in fully oxygenated tissue. Glycolysis terminates in pyruvate; lactate dehydrogenase sits at near-equilibrium and converts most of that pyruvate to lactate regardless of oxygen tension, because the equilibrium constant heavily favours lactate and because the reaction regenerates the cytosolic NAD+ that glycolysis needs to keep running. Resting humans turn over lactate continuously, and that flux rises with exercise, catecholamines, and inflammation. Brooks's lactate shuttle framework describes the traffic: lactate produced in fast skeletal muscle fibres, red cells, gut, skin, and leukocytes moves through the circulation to the liver, kidney cortex, heart, and neurons, where it is oxidised or used for gluconeogenesis [1, 2, 3]. The heart in particular prefers lactate as a fuel under stress [4], which is worth remembering when you are looking at a lactate of 4 in a patient on epinephrine after cardiac surgery.
The second correction concerns the acid. Lactate production does not generate protons. It consumes one. Lactate dehydrogenase takes pyruvate plus NADH plus a proton and yields lactate plus NAD+, so the reaction that makes the lactate is the reaction that removes an acid. The proton load in lactic acidosis comes from somewhere else entirely: ATP hydrolysis that mitochondria failed to reclaim [5, 6].
This is not pedantry, and it is the single most useful fact in this article. It means lactate and acidosis are dissociable in principle, which is why they are dissociable at the bedside. If ATP turnover stays mitochondrial, a rising lactate carries essentially no acid with it. That is the whole explanation for the post-cardiotomy patient on epinephrine with a lactate of 4.8, a pH of 7.43, and a normal gap: beta-2 stimulation drives sarcolemmal Na+/K+-ATPase and skeletal muscle glycogenolysis, accelerating glycolysis while oxidative phosphorylation remains intact [7, 8]. The lactate is real, the hypoperfusion is not, and the fluid bolus it usually triggers treats a number rather than a patient.
The L/P ratio separates dysoxia from everything else
If lactate alone cannot distinguish oxygen-limited from oxygen-independent production, something has to. The lactate-to-pyruvate ratio does, because it reports cytosolic redox state rather than glycolytic flux.
In true dysoxia the respiratory chain cannot reoxidise NADH, cytosolic NADH/NAD+ rises, and lactate dehydrogenase is pushed toward lactate. Lactate rises much faster than pyruvate, and the ratio climbs from a normal value near 10 to above 20 or 25. In adrenergic aerobic glycolysis the redox state is untouched: pyruvate and lactate rise together and the ratio stays near normal. In a pyruvate dehydrogenase block, classically thiamine deficiency, pyruvate cannot enter the TCA cycle, so pyruvate and lactate both accumulate and the ratio again stays near normal [9]. In impaired clearance the production side is normal and only disposal has failed, so the ratio is normal as well.
Four mechanisms, one number that separates the first from the other three. The L/P ratio is not routinely available in most hospitals, which is a real limitation, but the reasoning it encodes is available for free: ask whether the situation in front of you plausibly limits oxygen delivery, and if it does not, stop treating the lactate as though it does. The interactive module below lets you drive oxygen delivery, beta-2 tone, pyruvate dehydrogenase activity, respiratory chain capacity, and clearance independently, and watch which combinations of lactate, pyruvate, and L/P ratio each one produces.
Loading Lactate: production, shuttling, and the anion gap...
What the anion gap actually measures
The second half of the problem is that the anion gap is not a measurement of anything. It is an arithmetic residual that exists only because plasma must be electroneutral:
AG = Na+ − (Cl− + HCO3−) = (unmeasured anions) − (unmeasured cations)
A widened gap tells you that the difference between the anions you did not measure and the cations you did not measure has grown. Almost always that means an unmeasured anion accumulated, but a fall in unmeasured cations produces the identical number. Normally the gap is occupied by albumin, which accounts for about three quarters of it at roughly 2.5 mEq/L per g/dL, then phosphate, sulfate, and a small background of organic anions, offset by calcium, magnesium, and potassium.
Two consequences follow, and both are load-bearing.
Protons are invisible to it. At pH 7.4 the free hydrogen ion concentration is 40 nanomol/L, which is 0.00004 mEq/L. Even at pH 6.9 it is 0.000126 mEq/L. On a balance sheet where sodium is 140 mEq/L, that is a ratio of about 3.5 million to one. Free protons round to zero and can never appear in a charge-balance calculation. The only trace a proton leaves on a metabolic panel is the bicarbonate it destroyed. The gap sees anions; the bicarbonate sees acid. They are answering different questions.
The reference value floats. The gap's normal range has drifted downward over decades as ion-selective electrodes replaced flame photometry, so the textbook figure of 12 is analyser-dependent and a value of 8 to 10 is normal in many laboratories [10]. A patient whose baseline gap is 8 can gain 5 mEq/L of organic anion and still read inside the reference range.
The cleanest demonstration is the two-beaker experiment on the module's gap tab. Start from Na 140, Cl 104, HCO3 24, gap 12, and add the same amount of lactate twice: once as the free acid, with a proton travelling alongside it, and once as the sodium salt, with no proton. The gap moves identically in both cases. The bicarbonate and the pH move only in the acid case. The gap cannot tell an acid from a salt, which is exactly why lactated Ringer, sodium lactate, and lactate-buffered dialysate can raise a lactate without touching the pH.
Is "lactic acidosis" a fair term
In the beaker, yes, literally: something added protons and lactate together. In a patient, no. No cell secretes lactic acid, and the enzyme that makes lactate consumes a proton.
The reason the shortcut survives is that it reproduces the correct net stoichiometry. In a cell meeting its ATP demand non-mitochondrially, roughly one proton accumulates per lactate exported, because the glycolysis that made the lactate is the same glycolysis whose ATP was hydrolysed. The ledger comes out as though lactic acid had been added, even though the chemistry is different.
Where it becomes actively wrong is causality. The term tempts you to think that lactate produced the acidosis, therefore that lowering lactate treats the acidosis, therefore that lactate is a resuscitation target rather than a marker. A workable position is to keep lactic acidosis as a clinical noun for the state, meaning acidaemia with a high gap and lactate as the accumulating anion, and to drop it as a causal claim.
Albumin, and the correction nobody does
The dominant confounder in the gap is albumin. It carries most of the normal unmeasured anion charge, roughly 2.5 mEq/L for every g/dL at physiological pH, so ICU hypoalbuminaemia of 2 g/dL erases about 5 mEq/L of baseline gap. That is enough to conceal a moderate organic acidosis entirely. The correction is arithmetic and takes seconds:
Corrected AG = measured AG + 2.5 × (4.0 − albumin in g/dL)
The septic patient with a lactate of 6.4, an albumin of 1.8, and a raw gap of 13 has a corrected gap near 18.5, which now matches the lactate. The acidosis was never hidden physiologically. It was hidden arithmetically, and only because nobody did the correction.
The honest caveat is that even the corrected gap performs poorly as a screening test for clinically significant hyperlactataemia. In critically ill patients, anion gap, albumin-corrected anion gap, and base deficit all fail to identify a raised lactate with acceptable sensitivity [11]. The gap is a tool for asking which anions are present, not a substitute for measuring the one you can measure directly.
Fluid arithmetic: lactated Ringer does not add sodium, it dilutes it
The beaker experiment cheats in one respect, and correcting the cheat produces a result worth knowing. It adds sodium lactate to a fixed volume, so sodium rises. Real lactated Ringer does the opposite. Its sodium of 130 is lower than plasma, its chloride of 109 is higher than plasma, and it contains no bicarbonate at all. Infusing it lowers sodium, raises chloride, and dilutes bicarbonate. The first two shrink the gap; the third widens it; they very nearly cancel.
Mix several litres into a 14 L extracellular space with no hepatic metabolism, as the module's fluid tab does, and three things fall out:
The gap moves far less than the lactate. The fall in sodium and the rise in chloride together cancel most of the gap the lactate anion would otherwise create. You can raise the lactate by several mmol/L and barely move the measured gap.
The bicarbonate falls anyway, but by dilution. You diluted a bicarbonate space with a bicarbonate-free fluid. No proton titrated anything. The resulting delta ratio sits well below 1 and reads like a hyperchloraemic acidosis, which in a sense it is.
With an intact liver, none of this happens. Those millimoles of lactate are metabolised within minutes, and metabolising lactate consumes a proton, so lactated Ringer ends up mildly alkalinising. The arithmetic above is the hepatic failure case, where the lactate persists as a strong anion. It is also why the lactate you measure after a large lactated Ringer resuscitation in a cirrhotic tells you about the liver, not about perfusion.
Stack that on hypoalbuminaemia and the picture becomes completely bland. In the acute-on-chronic liver failure scenario, an albumin of 2.4 removes about 4 mEq/L of baseline gap on its own; add the dilutional arithmetic and a lactate of 4.4 sits behind a raw gap of 10, a normal pH, and a normal bicarbonate. Two independent mechanisms, both entirely mundane, and neither has anything to do with tissue perfusion.
High lactate, normal gap
Work the offsets in order. A high lactate with a gap that has not moved has a short differential:
Hypoalbuminaemia. The most common cause by a wide margin, and the first thing to exclude. Correct the gap before concluding anything.
A superimposed hyperchloraemic process. Large-volume saline, renal tubular acidosis, or diarrhoea lowers the strong ion difference and consumes bicarbonate without adding any unmeasured anion. Chloride moves in to replace the missing anion, so the gap stays flat while the bicarbonate falls. This is the septic patient who has received 6 L of 0.9% saline: a gap of 11, a corrected gap of 14.5, a bicarbonate of 14, and two stacked acidoses. Reading the gap alone misses half the problem and tempts you toward more of the fluid that caused it.
A concurrent metabolic alkalosis. Vomiting, diuretics, or exogenous alkali can prop the bicarbonate up while the organic anion accumulates underneath. The delta ratio catches this.
A low baseline reference gap. Analyser-dependent, patient-dependent, and unknowable unless you have a prior panel.
Lactate that arrived without a proton. Exogenous sodium lactate from lactated Ringer or lactate-buffered dialysate, as above. And, by the argument in the second section, any endogenous lactate produced while ATP turnover remains mitochondrial.
Wide gap, normal lactate
The inverse is the more dangerous error, because it means an anion is present that you have not identified and are not treating. The list is long but finite, and every item on it is invisible to a lactate electrode:
- Ketoacids. Beta-hydroxybutyrate is the dominant ketone in ketoacidosis and is missed entirely by the nitroprusside reaction, which detects acetoacetate and acetone.
- D-lactate. Produced by colonic fermentation of malabsorbed carbohydrate in short bowel and post-bariatric anatomy. Humans metabolise it slowly, and the standard L-lactate oxidase assay does not detect it. The presentation is episodic postprandial encephalopathy with dysarthria and ataxia; a level above 3 mmol/L is diagnostic, but only if you ask the laboratory for it by name [12].
- Uraemic anions. Sulfate, phosphate, hippurate.
- Toxic alcohol metabolites. Formate from methanol; glycolate and oxalate from ethylene glycol.
- Salicylate, which classically produces a mixed respiratory alkalosis and high-gap acidosis, often with ketones.
- 5-oxoproline (pyroglutamic acid) from glutathione depletion in chronic paracetamol exposure with malnutrition, sepsis, or flucloxacillin.
- Citrate, accumulating when hepatic metabolism fails during regional citrate anticoagulation on CRRT. Watch the total-to-ionised calcium ratio rising above 2.5.
- Propylene glycol, the diluent in high-dose lorazepam, diazepam, and phenobarbital infusions, which comes with an osmolar gap.
- Anionic paraproteins.
Ethylene glycol deserves a paragraph of its own because it inverts the logic. Glycolate cross-reacts with the lactate oxidase electrodes used in many blood gas and point-of-care analysers but not with lactate dehydrogenase based central laboratory methods. The result is a point-of-care lactate of 9.2 alongside a central laboratory lactate of 1.0 in the same patient. That discrepancy, the so-called lactate gap, is itself the diagnostic clue, and it can be generated in minutes by running one sample on both platforms, long before an ethylene glycol level returns [13]. The trap is that the falsely high point-of-care lactate appears to explain the anion gap, so the real anion goes unlooked-for.
The delta ratio, and why lactic acidosis sits near 1.6
The delta ratio compares the rise in the gap with the fall in bicarbonate, and it is how you detect a second acid-base process hiding behind the first.
A ratio below 0.8 means bicarbonate has fallen further than the gap has risen: there is a concurrent normal-gap hyperchloraemic acidosis, or the organic anion is being lost in the urine with sodium. A ratio above 2 means the gap has risen further than bicarbonate has fallen: suspect a coexisting metabolic alkalosis, or a pre-existing high bicarbonate from chronic respiratory acidosis.
Between 0.8 and 2.0 the picture is consistent with an isolated high-gap acidosis, and the position within that range is informative. Pure lactic acidosis classically sits near 1.6, because the lactate anion is retained in the extracellular space while a large share of the proton load is buffered intracellularly and by bone. Diabetic ketoacidosis with preserved glomerular filtration runs nearer 1.0, because ketoanions are filtered and excreted with sodium and potassium, so the gap falls back toward normal faster than bicarbonate recovers. That difference is also why late, well-hydrated DKA can end up looking like a pure hyperchloraemic acidosis.
The Cohen and Woods classification, used correctly
The type A versus type B split is still the most useful bedside taxonomy [21], provided you use it as it was written:
- Type A. Clinical evidence of inadequate tissue oxygen delivery: shock of any cause, severe hypoxaemia, profound anaemia, carbon monoxide, regional ischaemia.
- Type B1, underlying disease. Sepsis, hepatic failure, renal failure, diabetes, malignancy (classically lymphoma and leukaemia), seizures, thiamine deficiency, phaeochromocytoma, pancreatitis, short bowel and other malabsorption, heat stroke.
- Type B2, drugs and toxins. Biguanides, alcohols, salicylates, isoniazid, iron, NRTIs, linezolid, propofol, catecholamines and beta-2 agonists, cyanide, propylene glycol.
- Type B3, inborn errors. Pyruvate dehydrogenase and pyruvate carboxylase deficiency, glucose-6-phosphatase deficiency, fructose-1,6-bisphosphatase deficiency, MELAS and other respiratory chain defects, methylmalonic aciduria.
Two caveats are worth stating out loud, because the scheme is routinely misquoted. First, B1, B2, and B3 divide by aetiology, not by mechanism. A complex I lesion is B2 if it is metformin and B3 if it is inherited, even though the biochemistry is identical. Second, the scheme leaks badly: sepsis is nominally B1 yet routinely carries a genuine type A component, and most shock states are mixed. That is why contemporary reviews increasingly classify by increased production versus decreased removal instead [14].
Drugs
A large share of ICU hyperlactataemia is pharmacological, and the agents sort cleanly by mechanism [15, 16].
| Agent | Mechanism | Category |
|---|---|---|
| Metformin | Complex I inhibition plus suppressed hepatic gluconeogenesis | B2: complex I plus clearance failure. Risk concentrates in renal impairment, sepsis, and overdose. Dialysable [17, 18] |
| Epinephrine, norepinephrine, dobutamine | Beta-2 stimulation of Na+/K+-ATPase and glycogenolysis | B2: aerobic glycolysis. Normal L/P ratio, often normal pH |
| Beta-2 agonists (albuterol, terbutaline) | Same, plus lipolysis | B2: aerobic glycolysis. Benign and routinely misread as worsening shock |
| Propofol (PRIS) | Impaired fatty acid oxidation via CPT-1, respiratory chain uncoupling | B2: mitochondrial. Rising lactate is an early signal |
| Linezolid | Mitochondrial ribosomal protein synthesis inhibition | B2: mitochondrial. Typically after weeks, reversible |
| NRTIs (stavudine, didanosine, zidovudine) | Polymerase gamma inhibition | B2: mitochondrial, sometimes with hepatic steatosis |
| Propylene glycol | Metabolised by alcohol dehydrogenase to lactate and pyruvate | B2: substrate load, plus an osmolar gap |
| Salicylate | Uncouples oxidative phosphorylation, stimulates glycolysis | B2: mitochondrial, with a mixed acid-base picture |
| Cyanide, carbon monoxide, hydrogen sulfide | Complex IV inhibition | B2: complex IV. Normal or high ScvO2; lactate above 8 supports cyanide in smoke inhalation |
| Thiamine deficiency | Pyruvate dehydrogenase cofactor deficiency | B1: PDH cofactor. Near-normal L/P ratio, cheap to treat, easy to miss [9] |
| Ethanol | Raised cytosolic NADH, blocked gluconeogenesis | B2: redox shift, usually modest |
| Paracetamol (chronic) | Glutathione depletion, 5-oxoproline accumulation | High gap with a normal lactate |
| Citrate (CRRT) | Failed hepatic citrate metabolism | High gap with a normal lactate |
Two of these entries produce a wide gap with a normal lactate, which is the point: the drug list and the unmeasured-anion list are the same list read in two directions. Medication-induced hyperlactataemia is also a diagnosis of exclusion, and the systematic review literature behind it is built almost entirely from case reports and small series, so attribution at the bedside should stay provisional.
What follows for management
Three practical consequences, none of which are protocols.
Correct the gap for albumin before you interpret it. It costs nothing and it changes the reading in a large fraction of ICU patients.
Ask which mechanism the lactate reflects before treating it as a perfusion target. Adrenergic, drug-induced, clearance-limited, and exogenous lactate do not respond to volume, and chasing them with fluid or inotrope causes harm. ANDROMEDA-SHOCK compared peripheral perfusion targeted resuscitation against lactate targeted resuscitation and did not find lactate targeting superior [19], which is consistent with lactate being a heterogeneous signal rather than a single physiological quantity.
Treat the cause, not the pH. BICAR-ICU found no overall benefit from sodium bicarbonate in severe metabolic acidaemia, with a signal of benefit confined to the AKIN 2 to 3 subgroup [20]. Where a specific mechanism exists it usually has a specific answer: thiamine for pyruvate dehydrogenase block, extracorporeal removal for metformin, hydroxocobalamin for cyanide, withdrawal for linezolid and propofol.
The unifying idea is that neither number measures tissue oxygenation. Lactate measures lactate, the anion gap is an arithmetic residual that cannot see protons at all, and the clinical information lives in how the two relate to each other.