Freediving Performance System
Build custom breath hold and breathwork sessions, track your SpO2 with a Bluetooth oximeter, import dive computer logs, and analyze your performance over time.
Export a backup from the app, drop the file into the web analyzer, and explore your training across seasons: cross-cut by mode, build custom charts, compare dives side by side. Runs entirely in your browser. Your data never leaves your machine.
Build training plans in your spreadsheet, share them with students as a single file. Students import in one tap. No accounts. No subscriptions. Imported plans show "Imported from {your name}" and the author field is locked once you export.
Open in Numbers, Excel, or Google Sheets. Each row is one exercise: fill the Phase / Week / Session columns on the first row, then add exercise rows below leaving those blank to keep them in the same session. Dropdowns guide you through valid values. When you're done, just send the .xlsx file to your student, no CSV export needed. They tap ↓ Import Plan from File in the Plans screen and pick it. Validation surfaces every issue at once so you can fix and re-send in one pass.
App plus dedicated hardware, built to work together. Here is where each part of the system stands today.
Training, logbook, analytics, and dive-computer import.
A dedicated equalization trainer.
Wearable dive tracking built for freedivers.
Live blood-oxygen and heart rate during breath-hold.
PLANNING → DESIGN → PROTOTYPE → BETA → RELEASED
ELEMENT | 08 talks to any device that speaks the standard Bluetooth Heart Rate Service (0x180D) for HR alone, or the standard PLX Continuous / Spot-Check service (0x1822) for SpO2 + HR.
On top of the standards, custom framings are supported for: BerryMed, Nonin 3230, Viatom / Wellue / CheckMe, the Masimo MightySat, and Nordic UART devices including BCI and Viatom PF-10AW / Vibeat. A HealthTree framing is also handled.
If your device is not on the list, the BLE Analyzer (next question) will usually still pick it up automatically by trying every known parser against the incoming frames.
Open Settings → Devices → BLE Analyzer, switch on your oximeter, and tap Scan Device. The analyzer captures every notify characteristic the device advertises and runs every known parser against the live frames.
After a few seconds tap Share Scan List and send it to support. Many of the formats above were added this way.
FIT import covers the Garmin Descent family (G1, G2, Mk1, Mk3, Mk3i). Suunto is supported via both FIT and the older SML (DM5) export, so D4i and D6i both work. Shearwater and Oceanic computers are expected to work via UDDF but this path is currently untested, so get in touch if you have one to try. A generic dive-computer CSV import is also available for anything else with a time + depth column.
Each file is imported one at a time today. The good news: a single FIT / SML / UDDF file can carry multiple sessions, and the parser will expand them into separate logbook entries.
From Garmin Connect you can either export individual activities (one .fit each) or request the full account data export and import each .fit from the unzipped archive. Multi-file selection is on the roadmap.
All of it stays on your device. Your dives, holds, SpO2 traces, plans, and notes are never uploaded to any ELEMENT | 08 server. The only network traffic the app makes is to RevenueCat (to check your subscription state when you open the paywall) and to Expo (to fetch over-the-air JS updates).
Backups go where you send them: Files, AirDrop, email, or your own cloud of choice. See the full Privacy Policy for the exact list.
No. The breath-hold timer, custom tables, breathwork, guided sessions, season plans, and dive-computer logbook all work without any BLE hardware. An oximeter adds live SpO2, heart rate, and PI to the session timeline and unlocks post-session SpO2 analysis. Everything else is unaffected.
A hang is a stationary segment in the depth profile where you hold depth. A sliding window scans the profile and a sample only counts as stationary if (a) it does not jump suddenly relative to the previous sample, (b) the depth range inside the window stays under the wave-oscillation tolerance, and (c) the linear slope through the window is close to zero.
Short stationary runs during a continuous ascent or descent are kick-glide rhythm and are dropped automatically. Only directional turnarounds (descent into the run, ascent out of it, or vice versa) are kept. A hang whose average depth is within 2 m of your deepest point is classified as a bottom hang; everything else is an off-bottom hang. Phase times (descent, hang, ascent) are split on the first and last detected hang.
Sometimes a long pool attempt surfaces briefly mid-attempt and the watch splits it into two consecutive dives. The merge function combines them back into a single continuous record.
Open the session, pick a dive, and choose Merge with next. The surface interval between the two becomes part of the total dive time. Distance and lap times concatenate; contractions are time-shifted into the merged timeline; HR is linearly interpolated across the break so the chart stays coherent. The original dives' metadata follows the first dive (discipline, lung volume, rating, remarks).
The core app is free, with no mandatory subscription. Optional Pro features unlock advanced analytics, additional custom training programs, and the full guided-session library. You can train seriously on the free tier.
Dry breath-hold training (sitting still, no water) can be done at home and is what the timer, tables, and breathwork modes are built for. Even so, do not push to your absolute limits on dry without a buddy present.
Never train in or near water alone. Breath-hold training in water carries real risks including blackout, and always requires a trained buddy supervising you directly at arm's length. ELEMENT | 08 supports your training. It does not replace certified instruction or medical advice.
Full list of contraindications and safety guidance: Safety & Contraindications.
Now on the App Store. Google Play in closed testing.