Contents

Deco engine

MultiDeco test results

Pick a scenario and compare the Dive Kit deco engine against the MultiDeco mobile app, side by side. MultiDeco is a mature planner that many divers trust, and we use it as a second opinion rather than an answer key. Every scenario behind the how Dive Kit compares to MultiDeco write-up is published here in full, so you can check the numbers yourself.

We compare against the MultiDeco mobile app (iOS and Android), a planner widely used in technical diving. Every MultiDeco number here comes from that mobile app. We have not tested the desktop version, so we make no claims about it. Identical numbers are not the goal: two engines running the same model differ a little on the judgment calls, so the aim is to agree on the physics that matters and to explain every difference. To line the two up, the Dive Kit column runs in rounded mode (whole-minute stops) for every scenario, since MultiDeco shows whole minutes too. Gas density is the one reading that depends on temperature: Dive Kit computes it at the water temperature in your plan, and every scenario here runs at the 15 °C default. Version 2.9.0 anchored Dive Kit's gradient factor line at the exact depth your tissues reach rather than at the 3 m stop above it, which tightens the line at every shallower stop. It closed the gap on two quantities and opened it slightly on a third. First stops stepped one 3 m level deeper on four scenarios, all four toward MultiDeco, while 22 did not move and none moved away. Total decompression time moved toward MultiDeco on all 14 scenarios where it changed. Time to surface narrowed on six and widened on eight, because on six of those eight Dive Kit already ran longer than MultiDeco, so adding decompression time pushed it further out. Version 2.10.0 changed where that line hangs on a multi-level dive. It now hangs from the deepest ceiling of the whole bottom phase rather than from whichever ceiling stood when the ascent began, so a plan whose last level is shallower than an earlier one shows 1 to 5 minutes less decompression than 2.9.x did, while single-level plans are unchanged. That moved the two multi-level scenarios here, A1 and P1, one minute each toward MultiDeco: A1's time to surface now equals MultiDeco's 22 minutes, and P1's first stop now reads 24 m against MultiDeco's 27 m, one 3 m step, where it used to match. We publish each scenario's inputs, MultiDeco's output and Dive Kit's output below, and the same scenarios run in our automated test suite, so a change that moves these numbers shows up in our tests.

S1

Air 30 m / 23 min, GF 30/70 (salt)

Decozone within 1 deco step O₂ clock matches
Open this plan in Dive Kit

Generated with the Dive Kit engine v2.2.7. The link loads the exact inputs, so the app reproduces the table you see here. A later app version may shift a number slightly; we keep these pages current when we can.

The dive

one dive · two planners

30 m × 23 min · Air

Gradient factors
30/70
Water
Salt
Last stop
3 m
Gases
Air
▸ How each app was configured

MultiDeco

  • Bottom time entered 25 min (descent-inclusive)
  • Ascent 9/6/3 m/min (deep/deco/surface)
  • Bottom gas pinned per profile step; deco gases listed separately

Dive Kit

  • At-depth bottom time (descent counted separately)
  • Two-rate ascent 9/3 m/min, switching at 3 m
  • Profile + gas list kept separate; deco gas auto-selected by MOD

Same physical dive, entered in each tool's native style. That is why a few numbers are distributed differently while the physics agrees.

Metric MultiDeco Dive Kit Δ Agreement
Decozone start (m) 21 20.7 -0.3 match
First stop (m) 12 12 0 match
Time to surface (min) 22 24 +2 match
CNS (%) 6 6 0 conservative
OTU 18 18 0 conservative
Gas density (g/L) 4.8 4.9 +0.1 conservative

A ✓ means within the documented tolerance for that metric. “≈” marks a deliberate, explained difference (e.g. stop distribution, or Dive Kit's more-conservative O₂ clock). See the shared explanations below; it is never an error.

▸ Full stop-by-stop schedules

MultiDeco

DepthStopRunGas
12 m1 min2821
9 m3 min3121
6 m4 min3521
3 m11 min4621

Dive Kit

DepthStopRunGas
12 m3'30'21
9 m4'34'21
6 m6'41'21
3 m7'48'21

Why they differ

A clean match. The differences here are the usual documented conventions (stop distribution and the gas-density reference offset). See the shared explanations.

The differences, explained once

Every per-scenario note in the viewer points back to one of these shared explanations.

Ascent-rate match We run Dive Kit at the same ascent speeds we used in MultiDeco, so the comparison is fair. The deep speed that sets the first stop is 9 m/min in both.

Dive Kit and MultiDeco climb at the same speeds in these runs. The speed that decides where your first stop lands is the deep ascent, from the bottom up to the first stop, and that is 9 m/min in both tools, so that part is a like-for-like comparison. On the S and FS dives, MultiDeco moves a little slower between the shallower stops (6 m/min) than Dive Kit does, but that does not change where the first stop lands. We tested this directly: the difference in the first stop stays the same when we match the deep speed, so it comes from how Dive Kit recomputes your tissues while you climb, not from climbing faster or slower (see general/stopDistribution).

Decozone start Decozone start is GF-independent by design. On a single-level dive it matches MultiDeco within about one deco step; on a multi-level dive that ends shallow the two read very differently, because they are measured at different moments. That is a definition difference, not a model error.

Dive Kit computes a 'decozone start', the depth where your decompression obligation begins. We use it here as a clean cross-check; it is not shown in the app. It is the deepest depth where a tissue's total inert-gas pressure (nitrogen plus helium) passes the surrounding pressure, and it does not depend on your gradient factors, because gradient factors move the M-value line, not the ambient line. You can see this in the data: S2 (GF 30/70) and S7 (GF 50/80) are the same 45 m / 22 min air dive and both show 32.3 m, even though their first stops differ (21 vs 15 m). On the single-level scenarios Dive Kit lands within about one 3 m step of MultiDeco, at most 3.6 m, on the deepest high-helium CCR dive, C3. The multi-level scenarios split into two groups, and the split says exactly what the difference is. Dive Kit reads the decozone from the tissue state at the END of the bottom phase; MultiDeco appears to read it at the deepest point of the dive. Where the dive ends deep the two agree: W4 finishes on a 40 m level and reads 25.8 m against 25 m. Where it ends shallow they do not, because the shallow level has already off-gassed the fast compartments by the time Dive Kit measures: P1 reads 35 m against 45 m, W1 18.6 m against 50 m, W2 24.4 m against 58 m, W3 17.4 m against 45 m, W7 15.2 m against 21 m, and W5, whose last level is 6 m, 7 m against 28 m. None of this moves a stop. The operational first stop on those same dives is at most one 3 m step apart, 24 m against 27 m on P1 and 18 m against 21 m on W3.

Stop distribution Dive Kit's first stop can be shallower than MultiDeco's. The total decompression is close; it just sits at different depths.

MultiDeco lists a short stop at almost every 3 m step from the deepest stop up, often well under a minute. Dive Kit holds fewer, longer stops and skips the deepest ones, so its first listed stop is shallower (S6: 39 vs 48 m; S5: 30 vs 33; FS5: 24 vs 27). Both tools agree on the deepest depth where you owe a stop. They differ on the way up: Dive Kit recomputes all your tissues every second as you climb, the way the computer on your wrist does, so it counts the gas you breathe off during the climb itself. Helium leaves the fast tissues quickly, so on a helium dive the ceiling drops faster than you climb, and there is nothing to stop for in those first few metres. The gap is biggest on deep, high-helium dives (9 m on S6, C3 and A2, 3 m on S5 and FS5) and at most one 3 m step on air and nitrox. The total time to surface stays within a few minutes either way (S6 85 vs 81, S5 48 vs 45, FS5 43 vs 42, A2 55 vs 56), and Dive Kit's leading tissue still reaches the surface exactly at your GF-High, so it never shortcuts your decompression. Compare total time to surface, not the depth of the first stop. The gap narrowed in 2.9.0: Dive Kit now anchors its gradient factor line at the exact depth your tissues reach rather than at the stop above it, which tightens the line at every shallower depth. What that moved, quantity by quantity. First stops stepped one 3 m level deeper on four scenarios, every one of them toward MultiDeco (S6 36 to 39 m, S5 27 to 30, FS5 21 to 24, A3 24 to 27); the other 22 did not move, and none moved away. Total decompression time moved toward MultiDeco on all 14 scenarios where it changed at all, and the remaining 12 stayed where they were. Time to surface is the mixed one: it narrowed on six (A4, A5, A6, FS2, FS5, S7) and widened on eight (S5, S6, FS1, FS4, A1, C1, G1, P1). Widening is what you would expect there. On six of those eight Dive Kit's time to surface already sat above MultiDeco's before the change, so adding decompression time pushed it further out (S5 from 0.3 to 2.3 min above, S6 from 1.6 to 3.6). On A1 the two matched exactly and Dive Kit now runs a minute longer; on C1 Dive Kit sat 0.2 min under and now runs 0.8 over. A dive with a long 6 m last stop is still the axis where Dive Kit holds the 6 m stop shorter (see A4 and A5); since ENGINE_VERSION 18 that still makes A5 finish sooner, while on A4 the extra time at the deeper stops outweighs it.

CNS basis (ambient ppO₂) Dive Kit uses ambient ppO2 for CNS (the NOAA limits with Baker's ambient-pressure method).

CNS oxygen-toxicity % is accumulated against the NOAA exposure limits using the AMBIENT ppO2 (fO2 x absolute pressure), with no alveolar water-vapour subtraction. This is Erik Baker's published method and matches Shearwater, Garmin and Subsurface; it reads slightly higher than a water-vapour-reduced value. It runs ~1-3% higher than MultiDeco on most dives, and noticeably higher when a high-ppO2 deco gas sits right at a steep bracket of the NOAA curve (see S6).

Gas-switch caps Each gas switches at a depth set by its oxygen content (caps 1.4/1.5/1.6 bar). These match MultiDeco's switches within one stop.

Dive Kit caps each gas by its oxygen content: a lean mix (under 28% oxygen) at 1.4 bar, a mid mix (28 to 45%) at 1.5, a rich mix (45% or more) at 1.6. The same cap sets both the switch depth and the hyperoxia warning. MultiDeco caps gases the same way, so at its default 1.4/1.5/1.6 the switches on the single-level scenarios match exactly: Tx21/35 at 57 m, Tx35/25 at 33 m, EAN50 at 21 m and oxygen at 6 m. Until ENGINE_VERSION 18 Dive Kit took the first two one stop shallower (54 and 30 m), because it would not let a gas sit even slightly over its cap; it now counts a gas as breathable while its ppO2 is at most 0.03 bar over the cap, which also keeps the 6 m oxygen stop (1.62 bar in salt) usable in every water type. The multi-level P1 is the exception: Dive Kit takes its Tx35/25 at 33 m and MultiDeco at 27 m.

Levels and the ceiling Version 2.10.0 removed the line between the bottom phase and the decompression phase. A dive level placed shallower than the current ceiling is now reached by running the decompression down to it, and a gas change between two levels happens where that gas is safe to breathe.

Before 2.10.0, an ascent between two of your own dive levels was a plain two-stage ascent with no ceiling check, and the decompression phase only started after the last level. A level planned above the current ceiling was therefore reached by flying through every stop owed on the way. Those stops are now woven into the dive: the engine plans that ascent properly, inserting the stops between the two levels and making the gas switches those stops call for, and the level's own gas takes over on arrival. A profile point can sit anywhere, including inside the decompression. Which gas an inter-level leg is breathed on follows one rule in both directions. Going deeper you switch before you descend, at the depth you are already at, because the deeper level's gas is the leaner one and there is no later moment at which it could safely be taken up. Coming shallower you ascend on the gas you are already breathing and switch when you arrive, because the shallower level's gas is the richer one and is only safe once you are shallow. At the same depth you switch in place. The gas switch time is spent where the switch happens, on the gas you are leaving. The W series is built on exactly this: W1 through W6 each place a level shallower than the ceiling standing at the end of the leg before it, and W7 is the control that does not. MultiDeco was captured on six of the seven in September 2026, and it weaves too. On W2, W3 and W5 it inserts the owed stops in front of the level exactly as Dive Kit does, starting at the same 36 m on W2. Where it differs is which gas those stops are breathed on: MultiDeco holds the gas the diver was already on until the level is reached, while Dive Kit takes the next mix up at the depth where that mix first meets its ppO2 cap, which shortens the woven stops and raises the oxygen exposure. The mirror case is W4's descent back to 40 m: Dive Kit swaps off the EANx50 at 21 m before going down, MultiDeco carries it to 40 m and reads 96 % CNS for the dive against Dive Kit's 42 %. W6, the rebreather scenario, weaves in both tools as well, holding its two pre-level stops on the loop at the dive's setpoint rather than switching off it, and Baltic, the third planner captured on W6, weaves there too, holding three pre-level stops on the loop in the same way and starting them one stop deeper. Every other scenario here, the A, S, FS, C, P, G and R series, reaches each level with an ordinary ascent and no table of theirs moves with this change.

Gas density Gas density is computed at your plan's water temperature, 15 °C by default. Before rounding, Dive Kit reads 2.1 to 4.1 percent above MultiDeco across every scenario MultiDeco has been run on, averaging about 3.

Gas density tells you how hard the gas is to move through your airways. It is a reference reading, not an output of the decompression model. Dive Kit scales the ideal-gas figure by the water temperature in your plan's Environment settings, because a colder gas is denser, and the default is 15 °C (59 °F), the EN/ISO reference the app already uses for its real-gas cylinder tables. Every density figure in these tables is computed at that default, and printed to one decimal place, as the app prints it. Measured against MultiDeco across all 33 scenarios that have a MultiDeco density capture, Dive Kit's unrounded figure reads between 2.1 and 4.1 percent higher, averaging about 3 percent, and it is the higher of the two on every single one. The narrowest gap is A3, 5.3 g/L against 5.2, and the widest is A1, 4.8 against 4.6; the deepest reading in the set is A6 at 8 against 7.7. About half a point of that gap is new in ENGINE_VERSION 18, which converts depth to pressure with the physical water density: salt water at 9.95 m per bar and fresh water at 10.20 read a little more pressure at the same depth than the old 10.0 and 10.3, so every density here rose by 0.2 to 0.9 percent. Part of that spread is simply MultiDeco reporting density to one decimal place. Before version 2.9.0 Dive Kit fixed the reference at 0 °C, which read 7 to 9 percent above MultiDeco, so every figure here is about 5 percent lower than the 2.8.7 tables. The two limits did not move with it: 5.2 g/L for the caution and 6.2 g/L for the critical flag are published figures (Anthony and Mitchell, 2016), not model outputs, so a warmer reading reaches them a little deeper. Five scenarios changed how they are flagged as a result: S4, FS4 and A2 drop from critical to caution, and FS3 and FS5 fall below the caution line entirely. ENGINE_VERSION 18 puts FS3 back over it, at 5.3 g/L, for the fresh-water reason above; FS5, at 5.1, stays under. Temperature affects the density reading and the warning that hangs off it, and nothing else. The Bühlmann model has no temperature term, so not one stop time in these tables moves with it.

Gas usage (litres) Litres used depend on your breathing rate, so this is not a comparison of the deco math. Rebreather bailout now splits across two rates.

Gas consumption depends entirely on the breathing-rate (SRMV/SAC) settings, which are a user preference and not an output of the decompression model. Dive Kit's figures here use 20 L/min working and 15 L/min deco, so absolute litres differ from a MultiDeco run configured with a different SAC. Match the rates before comparing litres. From version 2.9.0 an open-circuit bailout off a rebreather is charged in two phases instead of one: the leg from the depth you bail out at down to the first deco stop runs at your Working SRMV, because swimming up off the loop is work, and everything from the first stop onward runs at your Deco SRMV. That is MultiDeco's own convention. It raises the bailout gas figure and leaves the schedule untouched. None of the 26 scenarios here carries a bailout cylinder (the three CCR dives are pure loop decompression at a constant setpoint), so the split changes no number in these tables. Also from 2.9.0, the minute the diver spends purging a regulator when the profile changes gas between levels is billed to the cylinder they switch to, at the Working SRMV, instead of being dropped: the tissue model always counted that minute, and now the gas tally does too. Only P1 changes a number here, because it is the only scenario whose levels change cylinder (a travel-gas descent that switches from Tx35/25 to Tx18/45 at 30 m), and its Tx18/45 figure rose by 79 L, from 3985 L to 4064 L, or 3 bar. Every schedule was unchanged. ENGINE_VERSION 18 then moves P1's switch onto Tx35/25 from 30 to 33 m (see P1), and the Tx18/45 figure settles at 4054 L.

CCR loop deco CCR (rebreather) loop deco matches MultiDeco closely. CNS and OTU are near-exact, decozone within a step.

Pure-loop CCR deco (constant setpoint 1.3, no open-circuit switches) holds up well across air, trimix and deep high-helium diluents (C1 to C3): CNS within 1 percentage point (28/27, 38/37, 54/53), OTU within 5 units (73/70, 102/99, 145/140), and time to surface within a minute (20/19, 45/44, 79/78, Dive Kit's rounded up to the next whole minute). Decozone is within one 3 m step except on the deep 80 m high-helium dive C3 (65.6 vs 62, the same wider spread seen on the deep trimix dive S6). The first listed stop is shallower than MultiDeco, the usual stop-distribution effect on a helium diluent (see general/stopDistribution). Gas density runs about 3% higher, the usual water-temperature offset (see general/gasDensity). CCR is also covered by our automated tests.

New engine inputs Version 2.9.0 added three planner inputs and one output to the engine. All of them sit at their defaults in these runs, so only water temperature moves a published number.

The cross-reference runs every scenario with the new inputs at their shipped defaults, so you are still reading the same dive the previous tables described. Delay before ascent is a hold at the depth the ascent starts from, for the minutes it really takes to sort out a problem before leaving the bottom. It is real time at depth: tissues keep loading, CNS and OTU keep accruing, and the time to surface grows. It defaults to none, so every scenario here starts up immediately. Stress window is a higher breathing rate applied for a set span once trouble starts, or all the way to the surface. It changes gas accounting only and never moves a stop. It defaults to off. Water temperature feeds the gas-density reading and nothing else, and every scenario runs at the 15 °C default (see general/gasDensity). The fourth addition is an output rather than an input: the engine now reports the no-stop time left at the end of each level, read at the plan's gradient-factor high. MultiDeco's captures carry no matching figure, so the comparison tables below do not show it; it appears in the app and in the engine's machine-readable output.

conventions Planners that use the 1 bar = 10 m convention read MOD and switch depths slightly differently; Dive Kit uses 1.01325 bar and physical water density (see Conventions).

Dive Kit converts depth to pressure from the real surface pressure (1.01325 bar at sea level, lower at altitude) with metres per bar derived from water density and g: fresh 10.20, EN 13319 10.00, salt 9.95, Red Sea 9.92. A gas counts as breathable while its PPO₂ is at most 0.03 bar over its cap, and the MOD it reports is the exact depth where the PPO₂ meets the cap. Where a note here quotes a Dive Kit figure next to another planner's, that difference is part of what the two numbers measure. Dive Kit's figures are printed the way the app prints them: run time, time to surface, decompression time and every Run value rounded up to the next whole minute (never shorter than the plan), CNS and OTU to the whole number, gas density to one decimal. The other planners' figures are the ones those planners show.

Run it yourself

You don't have to take our word for any of it. Enter these exact scenarios in Dive Kit and in the MultiDeco mobile app and compare them against the numbers above. We publish the full data set here: every scenario's inputs, both tools' outputs, and the per-scenario notes. Both columns show whole-minute stops, because the Dive Kit column runs in rounded mode, which is the app's default.

Join the four files by scenario id. The Dive Kit engine is proprietary, but every output here is reproducible by running the same dive in the app. The comparison stands on the data, not on trust.

The full write-up covers how the cross-check is run, where the two planners agree and differ, and a step-by-step trace of the deep-stop difference: see How Dive Kit compares to MultiDeco.

Parts of this guide were drafted with AI assistance and may contain mistakes. It's educational, not a substitute for training. Always dive within your certification and verify with your instruments.