Dive Computer Algorithms Explained: Bühlmann, RGBM, Gradient Factors
Scuba Brief TeamPublished 10 min read
Quick answer
A dive computer algorithm tracks nitrogen in theoretical tissue compartments and holds each one below a limit called its M-value. Shearwater, Garmin, Mares and Aqua Lung run Bühlmann ZHL-16C and let you trim those limits with gradient factors; Suunto also uses its own RGBM bubble models. Different models and default settings are why two computers disagree on the same dive.
What does a dive computer algorithm calculate?
It calculates how much nitrogen a set of theoretical tissue compartments has absorbed, then keeps every compartment under its limit as you ascend. Each compartment has a half-time. DAN defines one half-time as the time a tissue takes to absorb half the difference between its current gas content and the content it would hold if saturated at the present depth. Full equilibrium takes about six half-times.
The compartments are math, not organs. DAN points out that a compartment does not have to match any real tissue; the set of half-times is there to estimate what happens across the whole body. Bühlmann ZHL-16C, the model behind most computers in the brand table below, uses 16 compartments with half-times between 4 and 635 minutes.
The compartment in control changes during the dive. Erik Baker, the engineer who devised gradient factors, describes the fast compartments reaching their limits first on the ascent, with slower ones taking control in sequence. Some computers show this: the Aqua Lung i330R's nitrogen bar graph displays whichever compartment is in control at that moment.
A dive table does the same kind of job ahead of time, for square profiles only. The DECO 2000 table used in CMAS training, developed by Dr. Max Hahn, is on our DECO 2000 table page.
What is an M-value?
An M-value is the highest inert gas pressure (nitrogen, for air divers) a compartment is allowed to carry at a given ambient pressure. Robert Workman coined the term in the mid-1960s while researching decompression at the US Navy Experimental Diving Unit, and the M stands for maximum.
The idea started with ratios. In 1908 John Scott Haldane found that divers saturated on air at 33 fsw (10 m) could ascend straight to the surface without symptoms, so he used a 2:1 pressure ratio as his ascent limit. Workman later showed that the ratio is really about 1.58:1 when you count nitrogen alone, and that the tolerated overpressure varies by compartment and by depth. Fast compartments tolerate more than slow ones.
Albert Bühlmann, working in Zürich from 1959, wrote his M-values against absolute pressure so they would work for diving in Swiss mountain lakes. His ZH-L16 set comes in versions. According to Baker, the mathematically derived A set proved not conservative enough in the middle compartments, so B (slightly more conservative) was suggested for tables and C (somewhat more conservative) for dive computers calculating in real time. That C is the one in ZHL-16C.
An M-value is not a line between safe and bent. Baker calls it a solid line drawn through a fuzzy, gray area: M-values were tested on small groups of subjects, silent bubbles form even on symptom-free dives, and individual susceptibility changes from day to day.
Bühlmann vs RGBM: what is the difference?
Bühlmann is a dissolved gas model: it compares the nitrogen loading of each compartment with its M-value and nothing else. RGBM, the Reduced Gradient Bubble Model developed by Dr. Bruce Wienke, also tries to account for bubbles. Suunto put RGBM on top of its earlier M-value model in the late 1990s, first in the Vyper and Stinger, and says the model predicts both dissolved and free gas, with extra handling for multiday diving, closely spaced repetitive dives, dives deeper than the previous one and fast ascents.
Suunto has several versions. The Zoop Novo runs Suunto RGBM. Fused RGBM 2, on the EON Core after its 2.0 software, models 15 tissue groups to 150 m, and Suunto describes it as less conservative on deep air dives than the version before it. The same EON Core can also run Bühlmann 16 GF, so even Suunto now ships both families.
Other makers add their own layers. Scubapro's ZH-L16 ADT MB is a Bühlmann variant with six microbubble levels (L0 least conservative, L5 most) that also adjusts for workload measured from heart rate or breathing. Shearwater's Perdix 2 runs Bühlmann ZHL-16C with gradient factors and sells VPM-B and DCIEM as paid add-ons.
For a recreational diver the difference shows up in no-stop time and in where the stops fall, and the settings you pick move those numbers too.
What do gradient factors do?
Gradient factors shrink Bühlmann's M-values to a percentage of the gap between ambient pressure and the M-value. Shearwater's manual defines 0% as the ambient pressure line and 100% as the original M-value line. The first number, GF Low, sets where the first decompression stop falls. The second, GF High, sets how much supersaturation you may carry when you surface. Between the first stop and the surface the allowed percentage rises in a straight line from one to the other.
Mares gives a plain example in its Genius manual: GF 50/85 brings you to the surface with a 15% extra margin against Bühlmann's original limit, and on a decompression dive your first stop is placed so you never exceed 50% of the original value at that depth.
On a no-stop dive only GF High matters. The CMAS technical committee puts it directly: no-stop limits depend only on the surfacing M-values, so settings of 45/95 and 95/95 give the same no-deco times. GF Low comes into play only when the computer has to place decompression stops.
Some computers show this live. The Shearwater Peregrine's GF99 field shows the leading compartment's current percentage, and SurfGF shows what it would be if you surfaced right now.
Gradient factors explained: GF 30/70 vs 40/85
GF 30/70 gives shorter no-stop times, deeper first stops and longer decompression than GF 40/85. Here is why, using one round, made-up number. Say the controlling compartment's Bühlmann limit at the surface allows 1.0 bar of nitrogen pressure above ambient. At 40/85 you may surface with up to 0.85 bar of that excess. At 30/70 the cap is 0.70 bar, so the no-stop clock runs out sooner at any depth.
On a decompression dive, the first stop is placed where the leading compartment would reach GF Low of its gap: 30% of the way to the M-value at 30/70, 40% at 40/85. A lower percentage is reached deeper, so 30/70 stops you deeper. From there the allowance climbs to 70% or 85% at the surface, and the lower ceiling at 30/70 adds time on the shallow stops too. DAN's description of 30/70 is that it takes you farther off the bottom than a deep-stop setting, and that reaching only 70% of the M-value leaves a larger buffer near the surface.
| What changes | GF 30/70 | GF 40/85 |
|---|---|---|
| Surfacing limit (share of M-value gap) | 70% | 85% |
| No-stop time at a given depth | Shorter | Longer |
| First stop on a deco dive (share of gap) | 30%, so deeper | 40%, so shallower |
| Total decompression time | Longer | Shorter |
| Where it is the default | Suunto EON Core in Bühlmann 16 GF mode | Shearwater Peregrine (Med preset) |
Is a low GF Low safer? What the deep stop studies found
For air decompression dives, the studies so far say no. A US Navy trial compared two air schedules for 30 minutes at 170 fsw (about 52 m) with the same 174 minutes of total stop time. The deep stops schedule, with its first stop at 70 fsw (about 21 m), produced 11 cases of decompression sickness in 198 dives. The shallow stops schedule, first stop at 40 fsw (about 12 m), produced 3 in 192. The Navy stopped the trial at its midpoint review.
A 2023 modelling study for the Belgian military reached a similar view about gradient factors. Its authors found no evidence that the Shearwater Perdix default of 30/70 gave safer decompression for air dives to 60 m; the calculated tissue loading looked like the Navy's deep stops schedule. They matched their reference profiles by keeping GF Low at 100 and lowering only GF High, to no less than 75.
CMAS now recommends equal values for air and nitrox, GF Low and GF High both between 80 and 90 (for example 85/85), and states that settings such as 40/85 or 30/70 force deep stops that raise DCS risk on air or nitrox. It keeps split values such as 30/70 or 50/80 for helium mixes. That puts CMAS at odds with several manufacturer defaults: Shearwater ships 40/85, and Suunto calls any value other than its 30/70 default out of recommendation. Mares starts the Genius at 85/85.
For no-stop dives this debate barely matters, because GF Low does not change your limits there. It matters once you train for decompression. Use the setting your instructor teaches, and do not change GF values until you understand them, which is also the warning in Shearwater's, Garmin's and Scubapro's manuals.
Which dive computer brands use which algorithm?
Most brands in the table run Bühlmann ZHL-16C and differ mainly in how they package conservatism. Suunto's RGBM family and Scubapro's adaptive ZH-L16 ADT MB are the exceptions. Baker described the same pattern in his M-values paper: the Bühlmann algorithm became the basis for most of the world's in-water decompression computers. The table lists what each maker's own documentation says; for buying advice and table guides, see our dive computers and decompression guides.
| Brand and example model | Algorithm | Conservatism options |
|---|---|---|
| Shearwater Peregrine, Perdix 2 | Bühlmann ZHL-16C with gradient factors; VPM-B and DCIEM as paid add-ons on Perdix 2 | Low 45/95, Med 40/85 (default), High 35/75, custom |
| Garmin Descent G1 | Bühlmann ZHL-16C | Presets plus custom GF; CMAS lists them as 45/95, 40/85, 35/75 |
| Suunto Zoop Novo | Suunto RGBM | Personal setting 0, 1 or 2; altitude setting 0, 1 or 2 |
| Suunto EON Core | Fused RGBM 2 or Bühlmann 16 GF (ZHL-16C) | Bühlmann default 30/70 |
| Mares Genius | Unmodified Bühlmann ZH-L16C with gradient factors | R0 85/85 (default) through R3 50/60; tech T0 30/85 through T3 25/40; custom |
| Scubapro Luna 2.0 AI | ZH-L16 ADT MB PMG or ZH-L16C+GF PMG | MB levels 0-5; GF Low 5-100, GF High 50-100 |
| Aqua Lung i330R | Bühlmann ZHL-16C with preset gradient factors | Conservative Factor OFF, MORE or MOST |
| Oceanic+ app on Apple Watch Ultra | Bühlmann ZHL-16C with gradient factors | Presets 0, +1, +2 plus custom GF |
Why do two dive computers show different no-deco limits on the same dive?
Because they run different models, ship with different default settings and make different assumptions about you. The clearest measurement comes from a 2014 chamber test that took 43 computer models, all at default settings in sea water mode, to fixed depths and logged when each one stopped showing no decompression. At 20 m the average no-stop times per model ranged between 33.3 and 46.7 minutes. The authors found computers more conservative than standard tables shallower than 30 m and less conservative between 30 and 50 m.
Compare that with the DECO 2000 table. A 30-minute dive to 20 m rounds up to the 21 m row, where the no-deco limit is 31 minutes, so the table allows it with one minute to spare and gives group E. Every model average recorded at 20 m in the chamber test was above 31 minutes, partly because the table rounds your depth up. You can run the same numbers in our DECO 2000 planner.
The main reasons two computers disagree:
- Different models. Bühlmann and RGBM treat the same exposure differently, and the 2014 study notes that some manufacturers modify their algorithms in unspecified ways.
- Different defaults. For no-stop time only GF High counts, and defaults range from 70 (Suunto EON Core in Bühlmann mode) to 85 (Shearwater Med, Mares R0).
- Personal and altitude settings, such as Suunto's 0, 1 and 2 steps, which shorten limits when raised.
- Adaptive inputs. Scubapro's ZH-L16 ADT estimates workload from heart rate or breathing and adds decompression time when workload is high.
- Descent rate and depth reading. In the 2014 study a slower descent gave significantly longer times before each limit, and a wrong salt or fresh water setting shifts the depth a computer reads.
- Dive history. A computer only knows the dives it recorded, so a borrowed unit carries someone else's nitrogen.
| Depth | DECO 2000 | Bühlmann (SAA) table | DCIEM table | 43 computers, lowest to highest model average | 43 computers, overall mean |
|---|---|---|---|---|---|
| 15 m (50 ft) | 72 | 75 | 75 | 60.0-84.3 | 69.7 |
| 20 m (66 ft) | 31 (21 m row) | 35 | 35 | 33.3-46.7 | 39.5 |
| 30 m (100 ft) | 15 | 17 | 15 | 15.7-22.0 | 18.4 |
Frequently asked questions
Is RGBM more conservative than Bühlmann?
Not as a rule. It depends on the version and the settings. Suunto describes Fused RGBM 2 as less conservative on deep air dives than its predecessor, and a Bühlmann computer set to 30/70 gives shorter no-stop times than the same computer at 40/85. In the 2014 chamber test, Suunto's RGBM models at default settings sat slightly above the average of all 43 models at 15-30 m.
What should I do when my computer and my buddy's disagree?
Follow the more conservative one and end the no-stop phase when the first computer says so. DAN notes the benefit of diving with people whose computers use a similar model and settings, and it describes an error bar around every no-deco limit, with the chance of decompression sickness rising as you get closer to it. Treat the NDL as a boundary to stay well inside.
Can I switch computers or settings between dives on a trip?
Do not switch computers. DAN states you cannot move in and out of relying on a computer's decompression calculations unless it has recorded all of your exposures. Keep settings consistent too: Suunto warns that raising the personal or altitude setting after planning a dive lengthens decompression and increases the gas you need, so plan and dive with the same values.
Why does my computer show a deep stop on a no-stop dive?
It is often an optional feature, separate from GF Low. On the Aqua Lung i330R, for example, the Deep Stop function triggers once you descend below 24 m (80 ft) and asks for a 2-minute stop at half your maximum depth. Check your manual to see whether the feature is switched on, and match it to what your training taught you.
Calculators for your next dive
- DECO 2000 PlannerEnter depth and time to get the dive profile, deco stops and group letter. Works for repetitive dives too.
- Nitrox CalculatorMaximum operating depth (MOD), best mix and equivalent air depth (EAD) for enriched air nitrox.
- Gas PlanningGas required for a dive, minimum reserve (rock bottom) and turn pressure by the rule of thirds.
Plan your next dive with free calculators
Check your nitrox MOD, SAC rate, gas reserve and no-decompression limits before you get in the water.
Open dive calculators