Download your dive computer, check the deco on the profile, plan tomorrow's dive with the gas you actually have, log who you dove with and what you saw, and keep every bit of it on your own hardware. Rec or tech, single tank or rebreather, it all fits in the same logbook.
Free and open source, on iOS, Android, macOS, Windows and Linux.
Every dive, fully detailed and in your control.
- Depth, duration, temperatures, conditions, weather and tide
- Any number of cylinders: air, nitrox, trimix, CCR and SCR
- Buddies, divemasters, trips, tags, ratings and signatures
- Cards, or a sortable table with the columns you choose
Serious technical-diving instrumentation.
- Bühlmann ZH-L16C with your own gradient factors
- All 16 tissue compartments, nitrogen and helium
- CNS%, OTU and ppO₂ with daily and weekly totals
- Your computer's NDL, ceiling and TTS beside the model's
Download straight from your computer.
- 30 manufacturers over Bluetooth LE and USB
- Incremental downloads: only what is new
- Duplicate review with four ways to resolve a match
- Two computers on one dive, profiles overlaid
Confirmed working: Shearwater Teric, Aqualung i300C, Aqualung i330R. Have a different dive computer? Help us expand this list. We are looking for testers.
Where you dove, and what lives there.
- 3,600 dive sites and 3,600 dive centers built in
- Clustering, a dive heat map, and offline map regions
- Bathymetry overlays and 3D seafloor terrain
- 685 species, recorded per dive and per site
Plan with the gas, gear and tissues you will actually have.
- Multi-segment plans for OC, CCR, SCR and PSCR
- Bailout checked against the worst moment of the profile
- Contingencies, range tables and repetitive-dive seeding
- MOD, best mix, rock bottom, and a real-gas blender
The rest of what a dive leaves behind.
- Photos and video matched to a dive by capture time
- Each shot marked at its depth on the profile
- Equipment with service schedules, reminders and costs
- A wallet of certification cards, plus courses and checklists
See your diving life at a glance.
- Ten pages: totals, progression, conditions, gas and more
- Personal records: deepest, longest, coldest, warmest
- Breakdowns by year, country, site and dive type
- SAC trends, depth distribution and ascent-rate analysis
No server. No account. No lock-in.
- SQLite encrypted at rest, opened with Face ID, Touch ID or a passphrase
- End-to-end encrypted sync through your own iCloud, Google Drive, Dropbox or S3
- Encrypted backups, one taken automatically before every upgrade
- Export to UDDF 3.2, CSV, Excel, KML, GPX and printable PDF
Full-screen profile playback · The 16 tissue compartments as a landscape · A site's 3D seafloor with the dive's path
Species sightings across the log · The blender's fill procedure and cost · Five themes, each in light and dark
Most dive logging software falls into two categories: desktop applications stuck in the past, or mobile apps that lock your data in proprietary clouds. Submersion is different:
- You control your data: an SQLite database on your own hardware, encrypted at rest. No account, no server, no cloud dependency. Export everything, anytime.
- Truly cross-platform: one app for iOS, Android, macOS, Windows and Linux, with the same details and analytics everywhere. Available in 11 languages.
- Open standards: full UDDF 3.2 import and export, plus CSV, Excel, KML and GPX. No proprietary format trapping your dive history.
- 350+ dive computers: Bluetooth LE and USB, across 30 manufacturers, powered by libdivecomputer.
- Technical diving ready: Bühlmann ZH-L16C with gradient factors, multi-gas and CCR/SCR support, CNS and OTU tracking, bailout planning and trimix blending.
- Sync on your terms: end-to-end encrypted sync between your devices through your own iCloud, Google Drive, Dropbox or S3-compatible storage.
- Free forever: open source under GPL-3.0. No ads, no subscription, no in-app purchases.
- macOS / Windows / Linux / Android: GitHub Releases
- iOS: App Store
Want fixes and features weeks early? Every change merged into Submersion is published as a beta build. Betas may upgrade your dive log's database ahead of the stable release; downgrading is not supported, and devices that sync together should all use the same channel. A backup is taken automatically before any database upgrade.
- Desktop: Settings > About > Update channel > Beta (updates then arrive through the normal auto-updater), or download directly from beta-builds
- Android: join the open test, then Play delivers beta updates automatically
- iOS / Mac App Store: join via TestFlight
Submersion is built on these principles:
- Local-First: your data lives on your device. The app works offline, always.
- No Lock-In: export your entire logbook to UDDF or CSV at any time. Switch apps without losing history.
- No Account Required: use the app immediately. No sign-up, no email, no tracking.
- Open Source: audit the code. Fork it. Improve it. Your dive log software should be transparent.
Beyond what the screens above show.
- File import: Subsurface, MacDive, Shearwater Cloud, Garmin FIT, DAN DL7, Ratio and UDDF.
- CSV import: presets for MySSI, Diving Log, DiveMate, Garmin Connect and Shearwater Cloud, or map the columns yourself.
- Apple Health: underwater workouts recorded by an Apple Watch, with depth, temperature and heart rate.
- Paper logbooks: scan the pages and OCR reads the entries for you to check and import.
- Conditions: visibility, current, swell, entry and exit method, altitude. Weather is fetched for the date and place; tides come from a bundled global model and work offline.
- People: your role on the dive, dive center, operator and boat. A buddy or instructor can sign the dive on your screen.
- Gas detail: oxygen and helium fractions per cylinder, start and end pressure, and the pressure trace from an air-integrated transmitter.
- Weights: what you carried, where you put it, and whether it felt right.
- Your own fields: colored tags, dive types you define, and custom fields for whatever your agency or your habits call for.
- Bulk edit: fix a whole trip's entries at once.
- Safety review: each profile is checked for fast ascents, sawtooth patterns and missed safety stops.
- Several divers: separate profiles per diver, each with emergency contacts, medical notes and insurance details.
- Site records: depth range, difficulty, water type, hazards, access notes, mooring and parking, with reverse-geocoded country and region.
- Reef data: protection status, habitat, bleaching alerts and reef health for the sites you visit.
- Trips: dates, resort or liveaboard, a day-by-day itinerary, preparation checklists, and a gallery for the whole trip.
- Playback: play or scrub the profile, overlaying temperature, tank pressure, heart rate, SAC, ppO₂, ppN₂, ppHe, gas density, gradient factor, TTS, ceiling, NDL and deco stops.
- Ascent rate: drawn on the profile and colored where it exceeds the limits.
- 3D: move through the dive in three dimensions, or view the 16 tissue compartments as a surface.
- Edit: trim a profile that started on the boat, with undo if you get it wrong.
- Weighting: a buoyancy model built from your logged dives predicts what to carry for a new suit, cylinder or water type.
- Gas calculators: MOD, best mix, maximum narcotic depth, consumption and rock bottom.
- Blender: partial-pressure fills worked out with a real-gas equation, and the fill invoice.
- On the slate: export the plan as a PDF for your wet notes.
- Equipment sets: build a configuration once and apply it to a dive; a set can select itself by location.
- Service log: what was done, when, and what it cost.
- Courses: track a course's requirements and link each one to the dive that satisfied it.
- Checklists: run a pre-dive checklist from a template and attach the session to the log.
- Data quality: an assistant that finds duplicates and anomalies across the log and walks you through fixing them.
- PDF logbooks: Simple, Detailed, Professional, PADI and NAUI layouts.
- Your units: independent settings for depth, temperature, pressure, volume, weight, altitude and SAC.
- Your language: 11 languages, five themes in light and dark, and keyboard shortcuts on the desktop.
- Flutter SDK 3.47.0 or newer (CI pins the exact version in .github/flutter-version.txt)
# Clone the repository
git clone https://github.com/submersion-app/submersion.git
cd submersion
# Initialize submodules (required for libdivecomputer)
git submodule update --init --recursive
# Install dependencies
flutter pub get
# Generate database and serialization code
dart run build_runner build --delete-conflicting-outputs
# Run the app
flutter run -d macos # or: windows, linux, ios, androidBuild for release (iOS, Android, macOS, Windows, Linux)
# iOS
flutter build ios
# Android
flutter build apk
# macOS
flutter build macos
# Windows
flutter build windows
# Linux
flutter build linuxmacOS: building without a developer certificate
If you don't have an Apple Developer certificate, you can still build and run the app locally using ad-hoc signing. This creates a non-sandboxed build that works on any Mac.
# Run the no-sandbox build script
./scripts/release/build_nosandbox_macos.shThis script:
- Builds the macOS app with Flutter
- Re-signs it with an ad-hoc signature (no Apple certificate required)
- Applies no-sandbox entitlements for full file system access
The built app will be at build/macos/Build/Products/Release/submersion.app.
Running the app: macOS Gatekeeper will block unsigned apps by default. To run:
- Right-click (or Control-click) on
submersion.app - Select "Open" from the context menu
- Click "Open" in the dialog that appears
You only need to do this once; subsequent launches will work normally.
Note: This build cannot be distributed via the Mac App Store (which requires sandboxing). It's intended for local testing and direct distribution.
Windows: building from source
Windows builds require no code signing for local use. You need Visual Studio with the Desktop development with C++ workload installed (the free Community edition works).
# Build the app
flutter build windows --releaseThe built app will be at build\windows\x64\runner\Release\.
Note: Windows SmartScreen may show an "unrecognized app" warning for unsigned executables. Click "More info" then "Run anyway" to proceed.
Linux: building from source (distro dependencies)
Linux builds require GTK3 and several native development libraries. Install them first:
Debian/Ubuntu:
sudo apt-get update
sudo apt-get install -y \
clang cmake ninja-build pkg-config \
libgtk-3-dev liblzma-dev libstdc++-12-dev \
libsqlite3-dev libsecret-1-devFedora:
sudo dnf install -y \
clang cmake ninja-build pkg-config \
gtk3-devel xz-devel libstdc++-devel \
sqlite-devel libsecret-develArch Linux:
sudo pacman -S --needed \
clang cmake ninja pkg-config \
gtk3 xz sqlite libsecretThen build:
flutter build linux --releaseThe built app will be at build/linux/x64/release/bundle/.
Architecture & tech stack
Submersion follows clean architecture principles with clear separation of concerns:
lib/
├── core/ # Shared infrastructure
│ ├── database/ # Drift ORM schema and migrations
│ ├── deco/ # Decompression algorithms
│ ├── router/ # Navigation (go_router)
│ ├── services/ # Location, weather, database services
│ └── theme/ # Material 3 theming
├── features/ # Feature modules
│ ├── dive_log/ # Core dive logging
│ ├── dive_sites/ # Site management & maps
│ ├── dive_computer/ # Device connectivity
│ ├── equipment/ # Gear tracking
│ ├── statistics/ # Analytics & records
│ └── ... # Additional features
└── shared/ # Reusable widgets
Tech Stack:
- Flutter: cross-platform UI framework
- Riverpod: reactive state management
- Drift: type-safe SQLite ORM with migrations
- go_router: declarative navigation
- fl_chart: interactive charts for profiles and statistics
- flutter_map: OpenStreetMap integration
- libdivecomputer: FFI bindings for dive computer communication
See ARCHITECTURE.md for detailed documentation.
See FEATURE_ROADMAP.md for what is built, what is in progress, and what is planned.
Contributions are welcome! Submersion is built by divers, for divers.
- Fork the repository
- Clone and initialize submodules:
git clone --recurse-submodules <your-fork-url> - Create a feature branch:
git checkout -b feature/your-feature - Make your changes with tests
- Submit a pull request
Please run flutter analyze and flutter test before submitting.
Submersion is free software, released under the GNU General Public License v3.0.
You are free to use, modify, and distribute this software. If you distribute modified versions, you must also release the source code under GPL-3.0.
See LICENSE for the full text.
Submersion builds on the work of the dive logging community:
- libdivecomputer: the open-source library powering dive computer communication
- Subsurface: inspiration and the UDDF format
- Flutter: cross-platform framework making this possible
Dive safe. Log everything. Own your data.













