(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:
- Algorithm: Bühlmann ZHL-16C with Gradient Factors
- Water: fresh, 1000 kg/m³
- Ascent / descent: 10 / 20 m/min · Stops: 3 m interval, 6 m last stop
- Gradient Factors: per profile (recreational 100/100, technical 30/70, plus a 30/70 → 40/85 → 50/85 sensitivity sweep)
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 pair | Runtime | First stop | CNS | OTU | Overall |
|---|---|---|---|---|---|
| Dive Tools - Shearwater | 11/14 | 14/14 | 11/13 | - | 36/41 (87.8%) |
| Dive Tools - Subsurface | 16/16 | 15/16 | 9/16 | 16/16 | 56/64 (87.5%) |
| Dive Tools - MultiDeco | 14/15 | 13/15 | 8/15 | 15/15 | 50/60 (83.3%) |
| Subsurface - MultiDeco | 13/15 | 13/15 | 8/15 | 15/15 | 49/60 (81.7%) |
| MultiDeco - Shearwater | 12/14 | 12/14 | 6/13 | - | 30/41 (73.2%) |
| Subsurface - Shearwater | 10/14 | 13/14 | 6/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
| Reference | Profiles | Checks passed | Pass rate |
|---|---|---|---|
| Shearwater (Perdix) | 14 | 36 / 41 | 87.8% |
| Subsurface | 16 | 56 / 64 | 87.5% |
| MultiDeco | 15 | 50 / 60 | 83.3% |
| Combined | - | 142 / 165 | 86.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)
| Profile | DT | SS | MD | SW |
|---|---|---|---|---|
| Air 18 m / 30 min (NDL) | 32 | 32 | 31 | 32 |
| Air 30 m / 25 min | 48 | 48 | 50 | 53 |
| Air 40 m / 30 min · deco EAN50@21m | 66 | 67 | 68 | 71 |
| TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 52 | 51 | 53 | 54 |
| TMX 18/45 60 m / 25 min · deco EAN50@21m, O₂@6m | 82 | 81 | 81 | 82 |
| TMX 10/70 90 m / 20 min · deco TMX 21/35@42m, EAN50@21m, O₂@6m | 140 | 147 | 144 | 132 |
| Multi-level Air 30→18 m | 70 | 69 | 75 | - |
| GF 50/85 · Air 30 m / 20 min · last stop 6 m | 27 | 27 | - | - |
| CCR EAN32 30 m / 60 min | 81 | 81 | 81 | 82 |
| CCR TMX 21/35 45 m / 45 min | 100 | 99 | 101 | 101 |
| CCR TMX 18/45 70 m / 30 min | 128 | 127 | 129 | 128 |
| CCR TMX 10/70 100 m / 25 min | 224 | 230 | 233 | 224 |
| CCR bailout 70 m / 30 min · bailout TMX 15/55@70m, EAN50@21m, O₂@6m | 146 | 147 | 145 | 147 |
| GF 30/70 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 52 | 52 | 53 | 54 |
| GF 40/85 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 47 | 47 | 47 | 48 |
| GF 50/85 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 47 | 46 | 46 | 47 |
First stop (m)
| Profile | DT | SS | MD | SW |
|---|---|---|---|---|
| Air 18 m / 30 min (NDL) | none | none | none | none |
| Air 30 m / 25 min | 12 | 12 | 12 | 12 |
| Air 40 m / 30 min · deco EAN50@21m | 18 | 21 | 21 | 21 |
| TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 21 | 21 | 24 | 21 |
| TMX 18/45 60 m / 25 min · deco EAN50@21m, O₂@6m | 33 | 30 | 33 | 30 |
| TMX 10/70 90 m / 20 min · deco TMX 21/35@42m, EAN50@21m, O₂@6m | 54 | 54 | 60 | 51 |
| Multi-level Air 30→18 m | 6 | 6 | 9 | - |
| GF 50/85 · Air 30 m / 20 min · last stop 6 m | 6 | 6 | - | - |
| CCR EAN32 30 m / 60 min | 9 | 9 | 12 | 9 |
| CCR TMX 21/35 45 m / 45 min | 21 | 21 | 24 | 21 |
| CCR TMX 18/45 70 m / 30 min | 39 | 39 | 42 | 39 |
| CCR TMX 10/70 100 m / 25 min | 60 | 60 | 66 | 60 |
| CCR bailout 70 m / 30 min · bailout TMX 15/55@70m, EAN50@21m, O₂@6m | 42 | 39 | 42 | 39 |
| GF 30/70 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 21 | 21 | 24 | 21 |
| GF 40/85 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 18 | 21 | 21 | 18 |
| GF 50/85 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 15 | 21 | 18 | 15 |
CNS (%)
| Profile | DT | SS | MD | SW |
|---|---|---|---|---|
| Air 18 m / 30 min (NDL) | 4 | 4 | 4 | - |
| Air 30 m / 25 min | 6 | 6 | 6 | 6 |
| Air 40 m / 30 min · deco EAN50@21m | 19 | 20 | 21 | 21 |
| TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 30 | 43 | 38 | 29 |
| TMX 18/45 60 m / 25 min · deco EAN50@21m, O₂@6m | 51 | 77 | 62 | 47 |
| TMX 10/70 90 m / 20 min · deco TMX 21/35@42m, EAN50@21m, O₂@6m | 86 | 149 | 111 | 74 |
| Multi-level Air 30→18 m | 7 | 8 | 8 | - |
| GF 50/85 · Air 30 m / 20 min · last stop 6 m | 5 | 5 | - | - |
| CCR EAN32 30 m / 60 min | 45 | 45 | 45 | 46 |
| CCR TMX 21/35 45 m / 45 min | 55 | 55 | 56 | 56 |
| CCR TMX 18/45 70 m / 30 min | 71 | 71 | 71 | 71 |
| CCR TMX 10/70 100 m / 25 min | 124 | 129 | 129 | 124 |
| CCR bailout 70 m / 30 min · bailout TMX 15/55@70m, EAN50@21m, O₂@6m | 92 | 145 | 112 | 83 |
| GF 30/70 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 30 | 49 | 38 | 29 |
| GF 40/85 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 26 | 41 | 33 | 25 |
| GF 50/85 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 26 | 41 | 31 | 24 |
OTU
Shearwater's planner does not report OTU.
| Profile | DT | SS | MD | SW |
|---|---|---|---|---|
| Air 18 m / 30 min (NDL) | 6 | 7 | 6 | - |
| Air 30 m / 25 min | 17 | 18 | 17 | - |
| Air 40 m / 30 min · deco EAN50@21m | 56 | 60 | 60 | - |
| TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 68 | 68 | 72 | - |
| TMX 18/45 60 m / 25 min · deco EAN50@21m, O₂@6m | 108 | 110 | 112 | - |
| TMX 10/70 90 m / 20 min · deco TMX 21/35@42m, EAN50@21m, O₂@6m | 174 | 189 | 187 | - |
| Multi-level Air 30→18 m | 17 | 18 | 17 | - |
| GF 50/85 · Air 30 m / 20 min · last stop 6 m | 13 | 15 | - | - |
| CCR EAN32 30 m / 60 min | 119 | 119 | 119 | - |
| CCR TMX 21/35 45 m / 45 min | 147 | 145 | 147 | - |
| CCR TMX 18/45 70 m / 30 min | 188 | 186 | 188 | - |
| CCR TMX 10/70 100 m / 25 min | 330 | 338 | 340 | - |
| CCR bailout 70 m / 30 min · bailout TMX 15/55@70m, EAN50@21m, O₂@6m | 188 | 193 | 191 | - |
| GF 30/70 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 68 | 71 | 72 | - |
| GF 40/85 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 59 | 63 | 64 | - |
| GF 50/85 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 59 | 62 | 61 | - |
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:
- CNS oxygen toxicity has no industry consensus. Dive Tools uses Erik Baker's published linear NOAA model - the same method as MultiDeco - and tracks Shearwater closely. Subsurface uses a steeper exponential curve-fit and reads consistently higher on helium-decompression dives. This is a documented difference in oxygen-clock methodology between tools, not an error in any one of them. Dive Tools is on the published-standard side.
- The 90 m hypoxic trimix profile (TMX 10/70) is an extreme. At that depth and gas, all four tools spread out from each other on runtime and CNS - it sits at the edge of every tool's modelling envelope. Dive Tools lands in the middle of the pack, not at an extreme.
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.