(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
15 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). The only profile not modellable in the Shearwater planner is the multi-level dive; the other 14 - including the CCR bailout, via the Perdix native bailout function - are all run.
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 | 12/14 | 13/13 | 12/13 | - | 37/40 (92%) |
| Dive Tools - MultiDeco | 15/15 | 12/14 | 8/15 | 15/15 | 50/59 (85%) |
| Dive Tools - Subsurface | 13/15 | 13/14 | 8/15 | 15/15 | 49/59 (83%) |
| Subsurface - MultiDeco | 14/15 | 12/14 | 8/15 | 15/15 | 49/59 (83%) |
| MultiDeco - Shearwater | 12/14 | 11/13 | 6/13 | - | 29/40 (72%) |
| Subsurface - Shearwater | 10/14 | 12/13 | 6/13 | - | 28/40 (70%) |
Each cell: profiles in agreement / profiles compared. Shearwater has no OTU and one fewer profile (the multi-level dive is not modellable in its planner).
Dive Tools - Shearwater (92%) is the closest agreement of any pair in the field - closer than Subsurface and MultiDeco are to Shearwater (70% and 72%), and closer than Subsurface and MultiDeco are to each other (83%). 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 | 38 / 41 | 92.7% |
| MultiDeco | 15 | 51 / 60 | 85.0% |
| Subsurface | 15 | 50 / 60 | 83.3% |
| Combined | - | 139 / 161 | 86.3% |
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 | 51 | 48 | 50 | 53 |
| Air 40 m / 30 min · deco EAN50@21m | 67 | 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 | 141 | 147 | 144 | 132 |
| Multi-level Air 30→18 m | 73 | 69 | 75 | - |
| CCR EAN32 30 m / 60 min | 82 | 81 | 80 | 82 |
| CCR TMX 21/35 45 m / 45 min | 99 | 99 | 97 | 101 |
| CCR TMX 18/45 70 m / 30 min | 127 | 127 | 123 | 128 |
| CCR TMX 10/70 100 m / 25 min | 224 | 230 | 220 | 224 |
| CCR bailout 70 m / 30 min · bailout TMX 15/55@70m, EAN50@21m, O₂@6m | 144 | 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 | 9 | 6 | 9 | - |
| CCR EAN32 30 m / 60 min | 12 | 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 | 20 | 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 | 87 | 149 | 111 | 74 |
| Multi-level Air 30→18 m | 7 | 8 | 8 | - |
| CCR EAN32 30 m / 60 min | 46 | 45 | 44 | 46 |
| CCR TMX 21/35 45 m / 45 min | 55 | 55 | 53 | 56 |
| CCR TMX 18/45 70 m / 30 min | 70 | 71 | 67 | 71 |
| CCR TMX 10/70 100 m / 25 min | 124 | 129 | 121 | 124 |
| CCR bailout 70 m / 30 min · bailout TMX 15/55@70m, EAN50@21m, O₂@6m | 91 | 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 | 58 | 60 | 60 | - |
| TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 67 | 68 | 72 | - |
| TMX 18/45 60 m / 25 min · deco EAN50@21m, O₂@6m | 109 | 110 | 112 | - |
| TMX 10/70 90 m / 20 min · deco TMX 21/35@42m, EAN50@21m, O₂@6m | 175 | 189 | 187 | - |
| Multi-level Air 30→18 m | 17 | 18 | 17 | - |
| CCR EAN32 30 m / 60 min | 121 | 119 | 117 | - |
| CCR TMX 21/35 45 m / 45 min | 147 | 145 | 141 | - |
| CCR TMX 18/45 70 m / 30 min | 188 | 186 | 178 | - |
| CCR TMX 10/70 100 m / 25 min | 331 | 338 | 319 | - |
| CCR bailout 70 m / 30 min · bailout TMX 15/55@70m, EAN50@21m, O₂@6m | 187 | 193 | 191 | - |
| GF 30/70 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 67 | 71 | 72 | - |
| GF 40/85 · TMX 21/35 45 m / 25 min · deco EAN50@21m, O₂@6m | 60 | 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 schedules as established planners under identical settings. It is not a medical guarantee, a physiological safety certification, or a promise that any computed plan is safe for you.
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.