Bühlmann ZH-L16C with gradient factors: sixteen tissue compartments loading and off-gassing in real time, a live ceiling, a decompression schedule, and the gas planning that decides whether any of it is survivable. This is the algorithm inside a modern dive computer, written out where you can watch it work.
Build a profile out of levels. Descent and ascent between them are handled at the rates below, with the compartments integrated through the transitions rather than jumped, which is what separates this from a table.
Each bar is one compartment at the end of the dive: how much inert gas it holds, against the pressure it could tolerate if you surfaced now. Fast compartments on the left fill and empty in minutes, slow ones on the right take most of a day. A bar past its line is a compartment that would be supersaturated beyond the model's limit.
| Stop | Depth | Time | Run |
|---|
Sixteen compartments. Bühlmann's model does not describe any actual tissue. It is sixteen hypothetical compartments with half-times from 4 to 635 minutes, chosen so that between them they bracket how fast real tissues might plausibly take up and release inert gas. A compartment loads exponentially toward the pressure it is breathing, so after one half-time it has closed half the gap, after two, three quarters.
M-values. Each compartment has a coefficient pair, a and b, that defines the highest inert gas pressure it can hold at a given ambient pressure without, in the model's account, forming problematic bubbles. Rearranged, they give the shallowest pressure you may ascend to: the ceiling. That is the whole algorithm. Everything else is bookkeeping.
Gradient factors. Raw Bühlmann lets you ascend right up to the M-value line. Gradient factors pull that back to a fraction of it: GF low applies at the deepest stop and GF high at the surface, interpolated between. 30/80 is a common conservative choice, 100/100 is the bare model. Lower is slower and, on the balance of evidence, safer. This is the knob real computers expose, and it exists because the bare model was calibrated on fit young men in a chamber.
The coefficients. ZH-L16C, the variant intended for dive computers rather than printed tables, cross checked between two independent open source implementations that agree exactly on every half-time and every a and b for both nitrogen and helium. Compartment one uses the 5 minute half-time variant.
Where it stops being true. The model has no opinion about your fitness, temperature, workload, hydration, patent foramen ovale, or what you did yesterday. It cannot see a bubble. It treats gas uptake as symmetric with gas release, which is probably wrong. It assumes you actually followed the profile. Real computers add conservatism, repetitive dive handling and deep stop logic on top, and this does not.
Every dive is stored in this browser, on this device, and nowhere else. There is no account and no server: nothing here is uploaded, which also means nothing here is backed up for you. Export a copy somewhere you trust, and do it before you change phones.
A web page cannot talk to a dive computer directly. Reading a Shearwater, Suunto, Garmin or Mares over USB or Bluetooth means speaking a proprietary protocol per manufacturer, and the browser deliberately does not hand a page the kind of access that would need. So this reads the files those computers' own applications export, which is the same data by a slightly longer road.
If your computer is not listed, put it through Subsurface first: it is free, it speaks nearly every dive computer ever made, and it exports both formats below.
This looks like a comma separated file, and those have no standard for dive data at all. Say which column is which. Anything left as ignore is dropped.
Nothing here is on a server, so this is your only backup. The spreadsheet is a
real .xlsx written by hand in the page, with one row per dive and the full sampled
profiles on a second sheet. The JSON backup is the one to keep: it is the only format that
round trips every field this page holds, including the samples.