Gas Apps

Fill-rig & dive-planning toolkit for technical diving — blending, buoyancy, gas planning, and more

Gas Apps — fill-rig toolkit

Home O₂ fill-rig tools for technical diving, in one app: Bank fills with compressor times & cool-down, Blend from EANx + air (no O₂ booster needed), Nitrox mix adjust, Z-corrected tank Volume, Trimix blending, and the full reference Notes. Any purity input set to 0% means that source isn't available. Every calculator shares one saved state — export it once to move all your settings between devices.

⤓ Add to your home screen

Install Gas Apps for a full-screen app icon that works offline — no App Store, no download.

Fill & gas
Calculator

Bank

Fill a bank bottle — O₂ then air to a target, with compressor fill times & cool-down.

Calculator

Blend

No O₂ booster? Blend from a banked EANx source and air to a target.

Calculator

Nitrox

Adjust a nitrox mix — how much to bleed, then top with O₂ / EANx.

Calculator

Volume

Z-corrected cylinder gas content — nitrox & trimix.

Calculator

Trimix

Blend nitrox or trimix — bleed & top with He / O₂ / air to a target.

Calculator

Temp

Hot-fill & cool-down — overfill pressure to settle at a target cool, and where a hot fill lands.

Dive planning
Calculator

Nitrox Tools

MOD, best mix, EAD, END & ppO₂ at depth for any nitrox or trimix.

Calculator

SAC / RMV

Your surface air consumption & respiratory minute volume from a logged dive.

Calculator

Min Gas

Rock-bottom reserve — the gas two divers need to surface from depth.

Calculator

Planner

No-deco limits & gas use for a multi-level dive (Bühlmann ZHL-16C).

Calculator

Tank Matching

Turn pressures when you and your buddy carry different-size cylinders.

Calculator

Gas Density

Breathing-gas density at depth, with the 5.2 / 6.2 g/L limits & helium to fix it.

Utility

Convert

Common dive unit conversions — depth, pressure, volume, temp, weight.

Buoyancy, reference & more
Calculator

Buoyancy

Optimal lead & wing-lift from a full physics model — suit, tanks, personal buoyancy.

Calculator

Fees

PayPal / Venmo gross-up — what to send so the recipient nets the exact amount.

Reference

Notes

Device data, the gas you actually get, plumbing & safety.

Contact

✉ Feedback

Report a bug, request a feature, or send general feedback to the developer.

Support

♥ Donate

Like the app? Tip via Venmo, PayPal, or Zelle — totally optional.

Backup & transfer

All tools save automatically in this browser. Export makes a code with every setting; paste it into Import on another device to load them all. Reset returns every field to its default.

Saved automatically.

Bank fill — nitrox partial-pressure blend interactive

Fill rates (editable — SCFH for O₂, SCFM for air)
① Fill O₂ (source) until gauge =— psi
    → O₂ added—
② Then fill Air until gauge =— psi
    → Air added—
Z applied (start · O₂-rich · target)—
O₂ compression time
RIX Microboost—
HomeFill II—
UltraFill—
Air top-off time
RIX SA-6 (~5 SCFM)—
Cool-down settle
Settles to—
Fill hot to—
Default cylinder: 51"×9" 3,600 psi bank — 43.2 L / 1.53 ft³ (edit the volume for any other cylinder). Real-gas model: pressures and volumes are Z-corrected for the mix (compressibility from the Peng-Robinson equation of state with a Peneloux volume translation calibrated to NIST REFPROP, at 70°F) — the O₂-rich step and the air step get different corrections, since O₂ has Z<1 (stores more than ideal) and air Z>1 (stores less). "ideal" shows the uncorrected Dalton value. Air = 20.9% O₂. Gas temperature (default 85°F) scales the gas quantity and fill time by 70°F/T — warmer gas is less dense, so ~2.7% fewer SCF at 85°F than 70°F; the blend pressures don't change (isothermal fills are temperature-independent), and Z is tabulated at 70°F. Cool-down settle uses Gay-Lussac (constant volume): a hot fill loses pressure as it cools to storage temp — "fill hot to" is the gauge you'd fill to at fill temp to read the target once cooled. A red ✗ on a compressor row means its max discharge can't reach the pressure that step needs. Fill O₂ slowly to stay cool, and always analyze & trim the finished mix. The O₂ step also carries ~5% argon from the source (Argox).

Blend — EANx + air (no O₂ boost) interactive

Bleed off before topping— psi
—
Fill sequence
① Bleed—
② Add source—
③ Add source—
Result—
Z applied (start · target)—
For when you have no high-percentage O₂ source — blend using a banked EANx source and air only. Bleed the cylinder only as far as needed (minimum bleed), then top with the richer gas first, then the leaner, to hit the target O₂ at the target pressure. The reachable range is between your air % and your EANx %. Set either source to 0% to mark it unavailable. Amounts use a real-gas fill-pressure surrogate (P/Z on a gauge basis, Z from the shared Peng-Robinson engine at 70°F) — built for internally consistent blending, so mass is conserved across the bleed-and-top; it is not an absolute mole count, gauge zero is an empty cylinder, and its accuracy as physical moles falls off at very low-pressure heels. Always analyze & trim the finished mix.

Nitrox mix adjust — real-gas (Z) interactive

Bleed off before topping— psi
—
Fill sequence
① Bleed—
② Add O₂ source—
③ Add EANx—
Result—
Z applied (start · target)—
To move from your current mix to the target, you bleed the cylinder, then top with the O₂ source and/or the EANx source. Enriching pulls from the O₂ source; diluting pulls from the EANx source. Max O₂ boost is the highest pressure your O₂ booster can reach — because pure O₂ has to go in below that ceiling, the fill bleeds deep enough to add all the O₂ under it, then tops off with EANx / air up to the target pressure (set 0% on a source to mark it unavailable). Amounts use a real-gas fill-pressure surrogate (P/Z on a gauge basis, Z from the shared Peng-Robinson engine at 70°F): built for internally consistent blending, not an absolute mole count — gauge zero is an empty cylinder and accuracy as physical moles falls off at very low heels. Always analyze & trim the finished mix.

Tank volume calculator — real-gas (Z) interactive

Gas in tank (Z-corrected)— cu ft
Ideal (linear) estimate—
Fill level vs rated—
Z applied (rated · actual)—
Real-gas: gas content scales with P/Z for your mix (Z from the same Peng-Robinson EOS calibrated to NIST REFPROP, 70°F). Rated capacity is treated as free gas at service pressure; actual = rated × (Pact/Prated) × (Zrated/Zact). "Ideal" is the plain linear (DiveBuddy) estimate. An actual pressure above the service rating is an overfill — confirm the cylinder's rating and your local fill practices. Toggle Trimix to add helium: the EOS extends to O₂/He/N₂ and, in the packaged tests, agrees with an independent Helmholtz-EOS reference (CoolProp HEOS) to within ~0.7% worst-case across 0–4500 psi — nitrox and trimix stay under ~0.25% at working pressure.

Trimix / nitrox blend — real-gas (Z) interactive

Bleed off before topping— psi
—
Fill sequence
① Bleed—
② Add O₂—
③ Add He—
④ Add EANx / air—
Result—
Z applied (start · target)—
Real-gas partial-pressure trimix blend from your current gas (any pressure, including a near-empty heel) to the target. Fill order is O₂ first, then helium, then EANx / air. Max O₂ boost is the highest pressure your O₂ booster can reach: the fill bleeds deep enough to add all the pure O₂ under that ceiling, then tops off with helium and air to the target O₂/He mix and pressure. Set Target He to 0 for a plain nitrox blend, or any source to 0% to mark it unavailable. Amounts use a real-gas fill-pressure surrogate (P/Z on a gauge basis, Z from the shared Peng-Robinson engine (O₂/He/N₂) at 70°F): built for internally consistent blending, not an absolute mole count — gauge zero is an empty cylinder and accuracy as physical moles falls off at very low heels. Always analyze & trim the finished mix.

Buoyancy & weighting — optimal lead / wing lift interactive

Work out how much lead you need and whether your wing is big enough, from a full physics model (DuBois body-surface-area, the neoprene compression curve, real tank & gas weights). Fill in each section; results update live and save with the rest of Gas Apps. Weight for neutral at the safety stop with a near-empty tank, then check surface buoyancy for corking. Sign: negative sinks, positive floats.

Gear setup & dive plan save & switch

● You've changed this setup since it was saved — click ⟳ Update to keep the changes.

Set the water and max depth you're planning for, then save the current gear (suit, rig, cylinders, gas, wing, weights) as a named setup — e.g. a singles rig vs a doubles rig — and switch between them from the dropdown. Each setup keeps its own weight-check history. Setups travel in your Export/Import code.

Diver

Measurements

Height, weight, sex & age are all that's needed — the calculator estimates your lung volume (Quanjer) and body density (Siri) from them automatically, so there is no separate “lungs” field to fill in.

Personal buoyancy optional

No body-fat number needed — body fat is estimated from your height & weight (BMI), then run through the Siri body-density + Quanjer lung model. For a more personal figure, switch to “Estimate from body fat”.

Enter your body-fat percentage. It feeds the Siri body-density model plus lung volume (Quanjer) to estimate how buoyant you float at relaxed breathing — a physics alternative to the float test.

A “0” personal buoyancy floats you head-awash at rest; +2.2 lb / +1 kg floats you at eye level. Enter one of the two test fields, not both. Do the float test with a normal, relaxed breath — not a full exhale. A value measured fully exhaled runs ~2–5 lb too buoyant-light and will under-weight you (a common cause of “negative lead needed” results); this model already assumes relaxed breathing.

Exposure suit

● You've changed this suit since it was saved — click ⟳ Update to keep the changes.

Save a suit — type, thickness, accessories, compression model — to reuse across gear setups. Pair your 5 mm with singles, or your drysuit with doubles, and switch in a tap. Whichever suit is loaded is the one your active gear setup remembers.

Wetsuit buoyancy is computed from first principles — neoprene volume × (water − neoprene density) — calibrated to real wetsuit / freediving figures (e.g. a 5 mm full ≈ 5–6 kg / 12–13 lb in salt). The two open-cell cuts model a hooded jacket (top) over a Farmer-John (double-torso) or long-pants bottom in high-buoyancy Yamamoto-style open-cell neoprene (lower density → more float per mm). The attached hood is built into these cuts (at the suit thickness), so the separate Hood box is hidden while one is selected.

Extra layers stacked over the base suit

Stack a second or third neoprene piece over the base wetsuit — e.g. a 1.5 mm base under a 5 mm shorty, or a shirt over a suit. Leave a thickness blank to skip that layer. Layers add to the wet body and compress with it.

How suit buoyancy falls off with depth. Singler reproduces the original spreadsheet (a 6th-order curve; the author notes it loses accuracy below ~230 ft). Physics compresses the trapped air by Boyle’s law (1/ATA) — monotonic and stable at any depth. Both use the same surface buoyancy.

Rig & Ballast

Measured a whole assembly? For the regulator, set Type = Custom and put the entire reg's measured in-water buoyancy (first + second stages + octo + holder + hoses + SPG) in First Stage(s), leaving 2nd stages at 0 — or split them across the two fields. For the BCD, set style = Manual and enter the whole BC's measured in-water buoyancy in BCD + Fittings. Need typical values? The Gear DB tab lists in-water buoyancy for common regs, plates, wings, fins and lights — read one off and type it into the matching field here. To measure your own gear, use the Measure tab. Fins: negative sinks, positive floats; check the Spring straps box for steel spring straps.

Sign is consistent everywhere in Rig: negative sinks, positive floats. So lead you already carry on the rig — Non-Ditchable and Ditchable Weight — is entered as a negative number (e.g. −4 for 4 lb of plate weight); both reduce the loose belt lead still needed (the ditchable split only drives the rig-float advice). All the gear fields are in-water buoyancy, not dry weight, so a heavy item like a backplate is negative too. Brass firsts ≈ −1.5 lb, titanium ≈ −0.8 lb each. Metal cam-band weights are estimates — Apeks doesn't publish a Griplock weight, and heavier stainless bands (e.g. Halcyon) run more negative; pick Custom for a known per-band figure.

Cylinders mix & match

Add up to 4 different cylinders, each with its own gas mix — e.g. a single HP100 on air plus a 19 cf pony on EAN50. Set a slot’s tank to “— none —” to ignore it.

Cylinder 1

Cylinder 2 optional

Cylinder 3 optional

Cylinder 4 optional

Pressures use each tank’s own units. Leave start blank for a full tank; leave end blank for the default reserve (500 psi / 35 bar).

Weight-check calibration train this kit

Lock in a real-world correction. The physics can't know your exact body density or breathing, so when your measured lead differs from the estimate, teach it: (1) do a real weight check — at your safety stop with a near-empty tank and an empty wing, find the lead that holds you neutral (rise on inhale, sink on exhale); (2) log it below — the depth, gas level, water, and the lead you actually used (enter 0 if you needed none); (3) the app stores the gap between your result and the model as a per-setup correction and shows it as Calibrated lead in Results, so every future plan — and the fresh↔salt table — reads true for you. Checks can be fresh or salt (each compared to the model in that same water), and a pool (fresh) check sharpens your salt-water plan too. Save the rig as a gear setup first so the correction sticks to it.

Results

Recommended lead model — neutral at safety stop, near-empty tank—
Wing / BCD lift needed worst case—
Surface buoyancy at dive end with recommended lead—
Your wing capacity ——
Breathing control buoyancy swing, full ↔ empty lungs—

Lead required — fresh vs salt (your plan-for water is highlighted)

 FreshSalt

Measure items in whichever water you have (tag each measurement’s water above), then read the lead for your actual dive water. The salt−fresh gap is the extra ballast the denser water needs.

Buoyancy through the dive (carrying the recommended lead)

Tank stateSurface15 ft50 ft100 ft

Cylinder weights (lb, salt water, with valve)

CylinderEmptyGasFull

Empty = how the cylinder floats/sinks with no gas · Gas = weight of the full fill · Full = total buoyancy when full (Empty − Gas). Matches the manufacturer spec sheet. Gas weight here is an ideal-gas estimate (capacity × pressure ÷ working pressure); for weighting the difference vs the real-gas figure is well under the ±1 lb precision this tool works to.

Lift breakdown

Model breakdown

Composition — what makes up this rig, each component counted once

Temp — hot fill & cool-down pressure interactive

Cooled-to pressure current fill, once it settles—
Change as it cools—
Hot-fill pressure fill to this now to land on target—
Overfill above target—
Gay-Lussac's law at fixed tank volume: absolute pressure ÷ absolute temperature is constant, so a gas cools to a lower pressure and a hot fill must be overfilled to settle on target. Computed on absolute pressure (gauge + 14.7 psi) and absolute temperature (Rankine / Kelvin). It assumes the same gas and a rigid tank — real cool-down also depends on fill speed, ambient bath, and how long you wait. Confirm the final pressure once the tank has fully cooled. The Bank tab runs this same calculation as part of its fill workflow, so the two agree for the same fill and storage temperatures.

Nitrox Tools — MOD · best mix · EAD · END · ppO₂ interactive

ppO₂ at depth —
MOD @ ppO₂ 1.4 / 1.6—
Best mix for this depth & max ppO₂—
EAD equivalent air depth—
END equivalent narcotic depth—
ppO₂ = FO₂ × ATA. MOD is the depth where ppO₂ hits your limit (1.4 working / 1.6 deco). EAD uses the nitrogen fraction to find the air-equivalent nitrogen loading. END treats O₂ as narcotic as N₂ by default (only helium reduces it) — untick the box to count nitrogen only, in which case END equals EAD. Salt = 33 fsw/atm, fresh = 34 ffw/atm.

SAC / RMV — gas consumption from a logged dive interactive

SAC surface, pressure—
RMV surface, volume—
Consumption at avg depth—
SAC = pressure used ÷ time ÷ average ATA (surface-normalized). RMV multiplies SAC by your tank factor (capacity ÷ rated pressure) to give a true surface volume rate you can carry between tanks. Use a real average depth, not max.

Minimum Gas / Rock-Bottom — emergency reserve interactive

Rock-bottom reserve keep this in the tank—
Gas volume both divers to the surface—
Problem-solving at depth—
Ascent to surface—
Direct-ascent estimate. Reserve = (problem time at depth + optional safety stop + the ascent) × stressed RMV × divers, times your contingency margin, converted to pressure by your tank factor and rounded up to your increment. Assumes an out-of-gas share from the bottom to the surface at your ascent rate (plus the stop if set). This is the gas you should never dip below.

Recreational Dive Planner — NDL & gas (Bühlmann ZHL-16C) interactive

Gases O₂ / He %

Dive segments multi-level ok

Stops optional

Profile status depth / time / gas—
Deepest-segment NDL —
Exposure status ppO₂ & gas density—
Decompression status tissue model—
PhaseDepthTimeNDL/EndGas
Exposure (bottom) gas—
Descent / travel gas—
Ascent / stop gas—
Minimum reserve—
Total required gas—
Required starting pressure to surface with reserve—
Gas status —
Planning aid only — not a dive computer. This is an N₂-only educational multi-level planner: each segment can carry its own nitrox mix, but the tissue model is 16-compartment Bühlmann ZHL-16C nitrogen only (helium mixes are flagged unsupported), it applies a single gradient factor (GF high) throughout rather than a GF-low/high band, loads from the surface with no residual from prior dives, and its generated decompression is single-GF and stays on the last bottom gas (no automatic deco-gas switch). It is not a full trimix/technical decompression engine. The full runtime is simulated leg by leg — descent, each bottom segment, inter-level travel, decompression/safety stops, and the final ascent — with tissues on- and off-gassing continuously through every depth change (Schreiner equation). Gas for each leg is RMV × time × mean ATA, so descent, travel and ascent all cost gas; the buckets and per-leg column sum to the total. NDLs credit off-gassing during a direct ascent at your ascent rate; "NDL/End" is the no-stop time at each segment given the loading carried in, and the minutes still left after that segment. Auto decompression stops generates the stop schedule (single-GF) whenever the ceiling exceeds the surface. Each segment carries its own gas (define up to three); a transition breathes the deeper endpoint's gas (a segment-boundary switch), and ppO₂ and gas density are checked at both endpoints of every gas-bearing leg. Four independent statuses report the plan: Profile (the depth/time/gas sequence is internally valid), Exposure (ppO₂ stays inside 0.16–1.6 and density under the 6.2 g/L hard limit — a hypoxic or hyperoxic gas or an over-dense mix fails it), Decompression (supported by this N₂-only model and within its no-stop limits — a helium mix is flagged unsupported), and Gas (enough usable gas plus reserve; multi-gas is pooled demand only). A plan can pass any one and fail another. GF high is the no-stop control — 100 is raw ZHL-16C, lower is more conservative. Never dive a plan you can't back off from — verify against your computer and training.

Dissimilar Tank Gas Matching — turn pressures interactive

Diver A

Diver B

Diver A turns at —
Diver B turns at —
Binding diver / shared outbound gas—
Both divers turn on the same shared outbound volume — set by whoever carries less gas — so the pair stays matched. Turn pressures assume roughly equal breathing rates; if one diver breathes much harder, turn on whoever hits their pressure first. Outbound share 33% = rule of thirds (a third out, a third back, a third reserve).

Gas Density at Depth interactive

Density at depth —
Helium to hit target holding O₂ fixed—
Surface density · molar mass—
Ideal-gas density ρ = P·M / (R·T). The headline figure and its colour use the planning basis (standard 0 °C convention) that the widely-cited limits are published on, so the crossings line up with the tables (air ≈ 102 fsw at 5.2, ≈ 128 fsw at 6.2). The ideal-gas at <temperature> value is the density of an ideal mixture at your entered temperature (warmer = a bit lower) — informational only; a diver's actual inspired-gas temperature also depends on regulator expansion, water temperature and warming, so it is not compared to the limit. Limits (Anthony & Mitchell): keep working density under 5.2 g/L, hard ceiling 6.2 g/L — above that, work of breathing and CO₂ retention climb sharply. Adding helium lowers density.

Common Unit Conversions interactive

Depth / lengthft=m
Pressurepsi=bar
Volumecu ft=L
Temperature°F=°C
Weightlb=kg

Type in either box of a row and the other updates. 1 ft = 0.3048 m · 1 psi = 0.06895 bar · 1 cu ft = 28.317 L · 1 lb = 0.4536 kg.

Buoyancy Measurement interactive

Find the real in-water buoyancy of any item — fin, reg, suit, light — from a simple bucket test, and convert between salt and fresh. Sign: negative sinks, positive floats. Three methods: Ballast (add lead to neutral), Underwater scale (weigh it submerged), and Mesh bag (weigh a ballast package alone, then with the item, to isolate a floaty item like a wetsuit). Name a measured suit, pick category Suit, Save, then → Suit uses it as a named custom suit on the Buoyancy tab. This is how the fin and suit numbers in the Gear DB were built.

In-water buoyancy as tested—
…in the other water —
Displaced volume · buoyant force—
Ballast test: hang the item underwater and add lead until it's neutral — enter that lead as + (if instead it sinks and you add float, enter that as −). Underwater scale: weigh the item hanging underwater (+ if it still pulls down). Either way, in-water buoyancy = displaced-water weight − dry weight. Salt floats ~2.5% harder than fresh, so the buoyant force is rescaled for the other column. Enter the item's dry weight so the fresh↔salt conversion works.

Balanced Rig — failure-mode & redundant-buoyancy check interactive

Set up your rig on the Buoyancy tab first — this reads that live configuration. A balanced rig is one you can still manage if the BCD/wing fails or a drysuit floods: not so heavy you can't swim up, not so light you cork, and with enough redundant lift. All figures are in-water buoyancy (− sinks, + floats) in your Buoyancy-tab unit. Experimental — verify in water.

Scenario inputs

Wing capacity defaults to the Buoyancy tab's value; override it here to try a different size. Ditchable weight is the portion of your lead you could release in an emergency.

How to read it. The most-negative point of the dive (full tanks, deepest, empty wing) sets the lift your wing must provide. If the wing fails you're left with the “no-BCD” buoyancies — near neutral you can hold a stop; a few pounds negative you can fin up; beyond roughly −15 lb that gets hard. A drysuit flood can lose all its lift at once, so the wing (plus any redundant lift, plus droppable weight) has to cover that too. Adapted from Al's Balanced-Rig worksheet (Singler lineage).

Tanks — cylinder database & configurations interactive

Build tank configurations — a single tank, a sidemount pair, or manifolded doubles — then save them. Saved configs appear in the Gear DB and drop straight into the Buoyancy Rig. Empty buoyancy is the rig's in-water weight with tanks empty (− sinks); capacity is total free gas; dry land weight is the carry weight — cylinder plus a Thermo Pro valve sized to the configuration (estimated — verify by weighing).

Build a configuration

Additional cylinders — stage / deco / pony (optional)

Add extra bottles carried alongside the primary set — a deco bottle, a stage, a pony. Each adds its empty buoyancy, capacity and land weight to the totals, and drops into the Buoyancy Rig's next tank slot. Up to 3 extra lines (4 tanks total in the Rig).

Click a saved configuration below to load it here, edit it, then ⟳ Update — or + Save new to keep it as a separate config.

Your tank configurations

Cylinder reference

Thermal protection interactive

Your saved exposure suits — wetsuit, drysuit, layers, hood/gloves/booties — in one place. Each is a reusable thermal-protection setup you can drop into the Buoyancy tab in a tap: pair your 5 mm with singles, or your drysuit with doubles, and switch between them. Build or edit a suit on the Buoyancy tab's Thermal protection section, then Save it there — it appears here.

Your thermal-protection setups

In-water buoyancy is diver-specific — it's computed on the Buoyancy tab from your height & weight and the dive water. → Buoyancy loads a suit and takes you there to see its numbers in your rig.

Kit interactive

Bundle your chosen gear — plate/BCD, wing, fins, light and more — into named kits (Travel, Cold-water, Cave…), then apply one to the Buoyancy Rig in a tap. Add pieces to a kit with the → kit buttons on the Gear DB tab (they add to whichever kit is active here).

Your kits

Use marks a kit active (so → kit on the Gear DB adds to it). → Rig fills the Buoyancy Rig's BCD/plate (summed), wing (+ mounting), fins and light — reg / suit are kept for reference. Kits travel in Export/Import.

Gear Buoyancy Database

Typical in-water buoyancy for common rig gear — find the value you want and type it into the matching field in Buoyancy → Rig. Sign: negative sinks, positive floats. These are starting points, not gospel — confirm your own gear on the Measure tab.

Fees — what lands, and what to send for an exact amount interactive

Recipient receives if this amount is sent—
Platform fee—
Effective fee—
Buyer should send for the recipient to net this—
Platform fee—
Effective fee—
Rate applied—
US domestic rates. On Goods & Services (and PayPal Checkout) the recipient pays the fee, so the sender must add it on top for an exact amount to land. On card-funded personal sends (PayPal Friends & Family by card, Venmo credit card) the sender is charged the fee on top and the recipient gets the full amount. Fee-free types (bank / balance / debit) send the exact amount with no fee.
Rates last verified 2026-09 (US, personal accounts). Fees vary by country, account type, funding source and merchant terms, and change without notice — always confirm current rates on the official PayPal / Venmo fee pages before a large transfer.

1The gas you actually get

A concentrator rejects nitrogen (zeolite PSA) rather than selecting oxygen, so the product is ~93% O₂ with ~5% argon plus residual N₂ ("Argox") — not pure O₂, and not "nitrox." Purity falls as you pull more flow, and there is essentially zero filtration — CO, hydrocarbons, even radon get concentrated ~5× into the cylinder (then ~5× again at depth). Feed it clean intake air.

Concentrator flow5 LPM unit10 LPM unit
Max O₂ (~93%) up to≤ 3 LPM≤ 6–7 LPM
~90% O₂~4 LPM—
≤ 85% O₂~5 LPM—
Typical outlet pressure~5 psi8–10 psi*
Argon & rebreathers: ~5% argon is fine for open-circuit (re-diluted or shallow), but it accumulates in a rebreather loop — Argox is a poor CCR fill gas. Argon is also more narcotic than N₂.
* a few "high-pressure" units offer a 20–25 psi output; internal product-tank pressure is ~20 psi regardless (see §6).

2Devices at a glance

DeviceRoleMax outInput pressureKey behavior
Invacare PerfectO2 V5 LPM concentrator~5 psi—Metered outlet + product-tank ~20 psi internally
Respironics EverFlo / Millennium M105 / 10 LPM concentrator5–25 psi—M10 tank 10–30 psi; some EverFlo lack a compressor port
Invacare HomeFill IIO₂ transfill compressor~2,000 psiworks at 5 psi (spec 14–21)~2 LPM intake · tolerant · plug-and-play
Respironics UltraFillO₂ transfill compressor~3,000 psineeds >7; wants 20–26~2 LPM · aborts a too-slow fill · O₂-sensor lockout
RIX Microboost3-stage O₂/N₂ booster~2,200 psi0–25 psig (flow scales)5–16 SCFH · no fill-rate timeout · needs a fed inlet
RIX SA-6 (1S3B-6)Gasoline air compressor~4,500 psi*ambient air~5 SCFM (300 SCFH) · air top-off & bank fills · *with modern upgrades

3The governing principle — input pressure sets fill capability

These are all fixed-displacement reciprocating compressors: they move the same volume per stroke, so a higher inlet pressure packs more gas molecules into each stroke → faster fill → larger cylinders you can actually complete. The UltraFill makes this pass/fail: its firmware stops any fill whose pressure isn't climbing fast enough, so on big cylinders "enough inlet pressure" is the difference between a completed fill and an error. Only the lowest pressure seen during a compressor cycle matters — which is why an accumulator is essential (§5).

4UltraFill — measured supply pressure → largest cylinder it will fill field data

PerfectO2 V (5 LPM) → metered outlet → 200 kPa / 10 LPM boost pump → large accumulator → UltraFill. Cylinder sizes are water volume.

Supply psi (min in cycle)Conc. flowLargest fill completedWould not fill
< 72.0 LPM— none (low-pressure abort)any cylinder
82.25AL40 (5.7 L)LP50
12.52.5LP50 (8.0 L)AL80
152.75AL80 (11.1 L)HP100
16.5–183.0–3.25HP100 (12.7 L)HP120
20–23.53.5–4.0HP120 (15.3 L)HP130
254.0 (14 V pump)HP130 (16.6 L)LP121
26–284.25 (14 V) / cyl. feedLP121 (19.0 L)— (ceiling of rig)
Rules of thumb: HomeFill fills at roughly ~1 hour per 100 psi (HP120-size). Doubles are usually too big for the UltraFill — fill as singles (close the isolator). A setting on the edge can occasionally time out in the last few hundred psi; just restart and let the accumulator build first.

5The boost rig — what actually works

Concentrator
metered outlet
→ Boost pump
200 kPa / 10 LPM
→ Accumulator
(buffer — critical)
→ 35 psi relief +
gauge
→ O₂ compressor
Pump sizing (measured)
  • 80 kPa/3 & 120 kPa/5 LPM — too weak (sag to <13 psi under draw).
  • 200 kPa / 10 LPM — the sweet spot. Biggest that stays reliable.
  • 400 kPa/40 LPM — worse: overheats, over-draws, stalls.
  • Run it at 14 V (rated max) for ~10–15% more.
  • Parallel concentrators don't help — the pump, not concentrator flow, is the limit.
Accumulator & leaks
  • Accumulator buffers the compressor's burst draw: big tank → <1 psi cycle drop (vs 5+ psi on a bare hose). Pressure-rated PVC, single port, gauge + relief.
  • Leaks are the enemy — there's almost no spare flow; even ~1 LPM lost costs pressure or purity. Standardize on ¼" OD push-to-connect; ear-check every fitting.

6Concentrator mod — tap the product tank (skip the pump)

The concentrator already runs its product tank at ~20 psi (PerfectO2 target 21 ±0.3, hard limit 23 psi; EverFlo 14–25). Tapping upstream of the 5 psi patient regulator delivers that pressure directly — no external pump.

  • Tee downstream of a zeolite check valve, or into the tank / sensor line (add your own check valve). Feeds ~19–20 psi → enough to fill HP120 with the accumulator inline (fails without it). Not enough for LP121/HP130.
  • Adjusting the patient regulator up only reaches ~10 psi — helps the HomeFill, not the UltraFill's big fills.
  • Side effect: the ~1 LPM flow-monitor gets confused and beeps; operation is unaffected.

7Proven workflow

  • HomeFill → 2,000 psi, then move cylinder to UltraFill → 3,000 psi; attach a fresh cylinder to the HomeFill. Pipelining 3× HP120 to 3,000 ≈ same wall-clock as 2× LP121 to 2,000, with more total O₂.
  • Getting HP gas out: HomeFill — reuse the medical-valve QR plug (SAE ORB-6, 9/16-18) → adapter → tee/gauge/HP hose/DIN filler. UltraFill — tee off the pressure-transducer port (SAE ORB-4, 7/16-20 = a scuba HP port) with a scuba 1→3 HP adapter → JIC hose → case bulkhead.
  • UltraFill quirks: latch the QR ring down (fakes "cylinder present"); a fridge magnet on the socket = "3000 psi cylinder"; set both + open valve before power-on.

8Trimix / non-O₂ (mods)

  • Compressors refuse gas below ~80% O₂. To transfill Trimix you must bypass the O₂ sensor (feed the spoof voltage the board expects) — removing it just fails the test.
  • Or drive the motor directly with AC — but you lose thermal, over-pressure, and cooling shutoffs. Watch it constantly: ~200 psi over target can wreck it.
  • Feed from a spare first stage + shop reg set to the compressor's target inlet.
Microboost note: as a plain booster it sidesteps the UltraFill's fill-rate timeout and O₂-sensor lockout and takes up to 25 psig inlet — but it caps at ~2,200 psi and still needs a fed, O₂-clean inlet.

9Quick math

Gas to raise pressureSCF = V(ft³) × ΔP ÷ 14.7
 → shortcut6.8 SCF / +100 psi / ft³ (ideal; §11 applies Z)
Timehr = SCF ÷ flow(SCFH)
Compressor intake~2 LPM ≈ 4.2 SCFH (rises w/ inlet psi)
Units1 SCFM = 60 SCFH = 28.3 LPM

10Safety — the combined hazard

  • This is ~93% O₂ at 2,000–3,000 psi — fire risk rises sharply above 40% O₂, and the military found 2,000 psi O₂ ignition risk "essentially the same" as 7,500 psi.
  • O₂-clean everything (CGA G-4.1 / NASA / EIGA): clean + O₂-compatible soft goods (Viton/PTFE) + O₂ lube (Krytox). Open valves slowly.
  • DIY-repurposed medical gear is not designed or tested for this — you own the risk.

Feedback bug · idea · thoughts

Found a bug, want a feature, or just have thoughts on the app? Send it straight to the developer. This opens your email app with everything filled in — nothing is sent automatically, and you can edit before sending.

Goes to slofire94@gmail.com. If you tick “include settings” it attaches only your saved calculator inputs (the same Export code) plus your app version and browser — nothing else.

Support Gas Apps thank you

If these tools save you time at the fill station, a small tip helps keep them free, ad-free, and improving. Totally optional — everything works without it. Scan a code with your phone, or tap a button.

Thanks, and dive safe. — SloFire

⚠ For educational and planning purposes only — use at your own risk. Gas blending and high-pressure oxygen handling are inherently hazardous and can cause fire, explosion, injury, or death. These calculators are estimates and may contain errors. Nothing here is a substitute for proper training, certification, equipment, and procedures. Always verify every mix with a calibrated analyzer, follow O₂-cleaning and fill-station standards, and confirm figures independently. Weighting and wing-lift figures are likewise estimates only — proper weighting and adequate lift are safety-critical, so always confirm neutral buoyancy and sufficient lift with an in-water check before diving. The authors make no warranty and accept no liability for any use of this tool.
Real-gas Z from the Peng-Robinson equation of state + Peneloux volume translation, calibrated to NIST REFPROP (O₂/He/N₂) — reproduces the reference nitrox & trimix tables within ~0.4%. Planning tool: always analyze & trim actual mixes; each device's manual and O₂-service standards govern operation.
Gas Apps · Build v7.55.33