Deco Engine Validation

Dive Tools' Bühlmann ZHL-16C + Gradient Factor engine was cross-checked against three independent, industry-standard references - Subsurface, MultiDeco and Shearwater - across 16 reference dive profiles. Of every tool pair tested, Dive Tools shows the tightest agreement with any independent reference (87.8% vs Shearwater).

3
independent reference tools
16
reference dive profiles
87.8%
agreement with Shearwater
(best of any tool pair)

Decompression algorithms are not a single fixed answer - even widely trusted planners disagree with each other, especially on secondary metrics like CNS oxygen toxicity. Rather than claim Dive Tools is "correct", this page shows where it sits relative to the tools technical divers already rely on, with every number open for inspection.

What was tested

16 profiles spanning the full operating range: recreational air, technical trimix to 90 m, multi-level, closed-circuit rebreather (CCR) at fixed setpoint, and a CCR bailout-to-open-circuit scenario. Each profile was run identically in all four tools:

The references: Subsurface (open-source desktop planner), MultiDeco (Erik Baker's commercial planner, the canonical implementation of his Gradient Factor and oxygen-toxicity work), and Shearwater (Perdix dive computer planner - the de-facto technical-diving standard). Shearwater runs 14 of the 16: the multi-level dive is not modellable in its planner, and the GF 50/85 shallow-air profile carries a Subsurface reference only. MultiDeco runs 15, all but that same profile. Everything else - including the CCR bailout, via the Perdix native bailout function - is run in all four.

Tolerance bands

A check passes when Dive Tools is within: Runtime ±2 min or ±5% · First stop ±3 m (one stop interval) · CNS ±10% · OTU ±15%. Total time-to-surface is reported for context but not graded - the tools define it slightly differently.

How closely the tools agree with each other

The most honest test is not "Dive Tools vs one reference" but how every tool agrees with every other. Below is the pairwise agreement across all shared metrics, within the tolerance bands above.

Tool pairRuntimeFirst stopCNSOTUOverall
Dive Tools - Shearwater11/1414/1411/13-36/41 (87.8%)
Dive Tools - Subsurface16/1615/169/1616/1656/64 (87.5%)
Dive Tools - MultiDeco14/1513/158/1515/1550/60 (83.3%)
Subsurface - MultiDeco13/1513/158/1515/1549/60 (81.7%)
MultiDeco - Shearwater12/1412/146/13-30/41 (73.2%)
Subsurface - Shearwater10/1413/146/13-29/41 (70.7%)

Each cell: checks in agreement / checks compared, using the same tolerance bands and the same rules as the per-tool table below. A pair is only compared on profiles both tools have. Shearwater reports no OTU.

Dive Tools - Shearwater (87.8%) is the closest agreement of any pair in the field - closer than Subsurface and MultiDeco are to Shearwater (70.7% and 73.2%), and closer than Subsurface and MultiDeco are to each other (81.7%). Dive Tools - Subsurface (87.5%) is the next-closest pair. Dive Tools sits centrally: on no metric is it the lone tool disagreeing with three agreeing references.

Pass rate against each reference

ReferenceProfilesChecks passedPass rate
Shearwater (Perdix)1436 / 4187.8%
Subsurface1656 / 6487.5%
MultiDeco1550 / 6083.3%
Combined-142 / 16586.1%

Per-profile results

Every profile, every metric, all four tools. Bottom gas, deco gases and bailout gases (with switch depths) are noted on each row. The Dive Tools column is highlighted. "none" = no decompression stop required; "-" = not reported by that tool (Shearwater has no OTU; OTU and the multi-level profile are outside the Shearwater planner).

Runtime (min)

ProfileDTSSMDSW
Air 18 m / 30 min (NDL)32323132
Air 30 m / 25 min48485053
Air 40 m / 30 min · deco EAN50@21m66676871
TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m52515354
TMX 18/45 60 m / 25 min · deco EAN50@21m, O₂@6m82818182
TMX 10/70 90 m / 20 min · deco TMX 21/35@42m, EAN50@21m, O₂@6m140147144132
Multi-level Air 30→18 m706975-
GF 50/85 · Air 30 m / 20 min · last stop 6 m2727--
CCR EAN32 30 m / 60 min81818182
CCR TMX 21/35 45 m / 45 min10099101101
CCR TMX 18/45 70 m / 30 min128127129128
CCR TMX 10/70 100 m / 25 min224230233224
CCR bailout 70 m / 30 min · bailout TMX 15/55@70m, EAN50@21m, O₂@6m146147145147
GF 30/70 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m52525354
GF 40/85 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m47474748
GF 50/85 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m47464647

First stop (m)

ProfileDTSSMDSW
Air 18 m / 30 min (NDL)nonenonenonenone
Air 30 m / 25 min12121212
Air 40 m / 30 min · deco EAN50@21m18212121
TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m21212421
TMX 18/45 60 m / 25 min · deco EAN50@21m, O₂@6m33303330
TMX 10/70 90 m / 20 min · deco TMX 21/35@42m, EAN50@21m, O₂@6m54546051
Multi-level Air 30→18 m669-
GF 50/85 · Air 30 m / 20 min · last stop 6 m66--
CCR EAN32 30 m / 60 min99129
CCR TMX 21/35 45 m / 45 min21212421
CCR TMX 18/45 70 m / 30 min39394239
CCR TMX 10/70 100 m / 25 min60606660
CCR bailout 70 m / 30 min · bailout TMX 15/55@70m, EAN50@21m, O₂@6m42394239
GF 30/70 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m21212421
GF 40/85 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m18212118
GF 50/85 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m15211815

CNS (%)

ProfileDTSSMDSW
Air 18 m / 30 min (NDL)444-
Air 30 m / 25 min6666
Air 40 m / 30 min · deco EAN50@21m19202121
TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m30433829
TMX 18/45 60 m / 25 min · deco EAN50@21m, O₂@6m51776247
TMX 10/70 90 m / 20 min · deco TMX 21/35@42m, EAN50@21m, O₂@6m8614911174
Multi-level Air 30→18 m788-
GF 50/85 · Air 30 m / 20 min · last stop 6 m55--
CCR EAN32 30 m / 60 min45454546
CCR TMX 21/35 45 m / 45 min55555656
CCR TMX 18/45 70 m / 30 min71717171
CCR TMX 10/70 100 m / 25 min124129129124
CCR bailout 70 m / 30 min · bailout TMX 15/55@70m, EAN50@21m, O₂@6m9214511283
GF 30/70 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m30493829
GF 40/85 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m26413325
GF 50/85 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m26413124

OTU

Shearwater's planner does not report OTU.

ProfileDTSSMDSW
Air 18 m / 30 min (NDL)676-
Air 30 m / 25 min171817-
Air 40 m / 30 min · deco EAN50@21m566060-
TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m686872-
TMX 18/45 60 m / 25 min · deco EAN50@21m, O₂@6m108110112-
TMX 10/70 90 m / 20 min · deco TMX 21/35@42m, EAN50@21m, O₂@6m174189187-
Multi-level Air 30→18 m171817-
GF 50/85 · Air 30 m / 20 min · last stop 6 m1315--
CCR EAN32 30 m / 60 min119119119-
CCR TMX 21/35 45 m / 45 min147145147-
CCR TMX 18/45 70 m / 30 min188186188-
CCR TMX 10/70 100 m / 25 min330338340-
CCR bailout 70 m / 30 min · bailout TMX 15/55@70m, EAN50@21m, O₂@6m188193191-
GF 30/70 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m687172-
GF 40/85 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m596364-
GF 50/85 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m596261-

DT = Dive Tools, SS = Subsurface, MD = MultiDeco, SW = Shearwater. Gas switch depths in metres. Bottom gas precedes the deco/bailout list.

Where the tools disagree - and why that's expected

Runtime, first-stop depth and OTU agree tightly across all four tools. The visible spread is concentrated in two places, both well understood:

What this is - and what it is not

This is an implementation cross-check: it shows Dive Tools computes the same runtime, first stop depth, CNS and OTU as established planners under identical settings, within the tolerance bands above. It is not a medical guarantee, a physiological safety certification, or a promise that any computed plan is safe for you.

What it does not grade is how the deco time is split between the individual stops. Planners distribute the same obligation differently, and legitimately so: MultiDeco holds 3 to 5 minutes longer at the last stop than both Subsurface and Dive Tools on stops of 25 to 55 minutes. Grading that as a failure would report another tool's conservatism as an error here. Dive Tools instead pins its own stop schedules stop by stop in its test suite, on exact equality, so a change that redistributed deco time between stops would fail the build even if the total stayed the same.

Decompression is inherently uncertain and individual. No algorithm - Bühlmann or otherwise - guarantees you will not be bent. Agreement between tools confirms the maths is implemented correctly; it does not validate the underlying model against your physiology, workload, temperature, or hydration. Always plan conservatively, build in margin, and treat any planner's output as a starting point for judgement, not a contract.

Dive Tools is provided as-is, without warranty of any kind. By using it you accept that the author is not liable for any outcome of using the information it provides. If you find a discrepancy that affects safety, please report it so the fix benefits everyone.