> ## Documentation Index
> Fetch the complete documentation index at: https://scubazenapp.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Import a logbook

> Bring dives from another dive app or a spreadsheet into SCUBAzen from a CSV file, check them first, and undo the import if it's wrong.

You can bring dives logged in another app into SCUBAzen from a CSV file. Choose the file in **settings** under **backup & restore**, check what the app read on the review screen, then tap **bring in**. Nothing is added until you do, and you can undo the whole import from the screen that appears when it finishes.

## Before you start

| | Details |
| - | - |
| File types | `.csv`, `.txt` or `.tsv`, separated by commas, semicolons or tabs |
| Largest file | 20 MB, 50,000 rows, 500 columns per row |
| Connection | Required. The app reads your logbook from SCUBAzen's servers to find duplicates and number the new dives. |
| What comes in | Dives only. See "What can't be imported" below. |

If you pick a `.txt` or `.tsv` file, it is read the same way as a `.csv`. Any other file type is refused with a message naming the three types the import accepts.

## Export a CSV from your dive app

Most dive apps can export a logbook as a CSV file. The import page names Subsurface, MacDive, Shearwater Cloud and Diving Log as examples. Export the file, then save it somewhere your phone's file picker can reach, such as your phone's files or a cloud drive.

The column names don't have to match SCUBAzen's. The app recognises common names for each field in several languages, and reads units written in the header, such as `Max Depth (m)`, or in the value itself, such as `30 m`. If a file has a place column but no site column, the place is used as the site.

The import page has a **how to export from your dive app** link. It opens this page in your browser.

## Import your dives

<Steps>
  <Step title="Open the import page">
    Open the menu and tap **settings**. Under **app**, tap **backup & restore**, then tap **import a logbook**.

    During first-time setup, the last step, **your dive history**, is the same page. Tap **not now** there to skip it and import later from settings.
  </Step>

  <Step title="Choose the file">
    Tap **choose a csv file** and pick your export. The button shows **reading…** while the app reads the file and checks your logbook.
  </Step>

  <Step title="Check the review screen">
    The top of the screen shows how many dives will be brought in. Work down the page: answer any questions, look at the preview rows, and fix any column that went to the wrong place. Every change updates the plan at once. The sections are explained below.
  </Step>

  <Step title="Bring the dives in">
    Tap **bring in** (the button shows the count, for example **bring in 48 dives**). The app checks your logbook once more first. If it changed since you chose the file, for example because you logged a dive on another phone, the plan updates and the app asks you to check it and tap the button again.
  </Step>

  <Step title="Wait until it's done">
    The count rises as the dives land. Keep the app open until it finishes. You can't go back while dives are being written.
  </Step>

  <Step title="Finish">
    The done screen says how the dives were numbered, and how many rows were skipped because they were already in your logbook or appeared twice in the file. Tap **open logbook** to see them (during setup, the button is **continue**).
  </Step>
</Steps>

## The review screen

The review screen shows the plan before anything is written. Sections only appear when they have something to show.

| Section | What it tells you |
| - | - |
| **this file** | The **file** name, the dive numbers the new dives will get (**numbered**), how many rows were skipped as **already in your logbook**, and how many were skipped as **rows without a date, site or place** |
| **about this file** | Questions the file can't answer on its own (see below) |
| **how they'll look** | The three most recent dives, drawn exactly as they will appear in your logbook |
| **left blank** | Fields with values the app couldn't read, and how many dives each one affects |
| **what goes where** | Each logbook field the app filled, the column it came from, and that column's first value |
| **not brought in** | Columns that didn't match a field, each with its first value, marked **left out** or **in notes** |

At the bottom, **choose a different file** takes you back to pick another file.

### Questions about the file

The app asks only what the file itself can't settle:

* **Date order.** If some dates could be read either way (is 03/07/2019 the 3rd of July or the 7th of March?) and no other date in the file settles it, the app shows one of the file's dates and asks what it means, with both readings as choices. A single date like 21/07/2019 anywhere in the file settles it, and so do dotted dates, ISO dates and dates with month names.
* **Units.** For each kind of measurement that has no unit anywhere in the file, the app asks: **depths and visibility are in** (m or ft), **temperatures are in** (°C or °F), **tank pressures are in** (bar or psi), **weights are in** (kg or lb), **tank sizes are in** (L or ft³).

Each question comes with an answer already selected, based on the size of the values (a typical depth of 98 is feet) and then on your own unit settings. Check it before you bring the dives in.

### Move a column

* **To change where a field comes from**, tap it under **what goes where**. A sheet lists every column in the file with its first value. Pick one, or pick the last option to leave the field blank.
* **To use a column that wasn't matched**, tap it under **not brought in**. Choose **the dive's notes**, the option to leave it out, or a logbook field. If that field already has a column, the sheet says which one it would replace.

Columns placed in notes are added to each dive's notes as `column name: value`, after any notes the file already had. Buddy, divemaster, guide and instructor columns go into notes automatically, because the logbook has no field for them.

## Duplicates are skipped

A row is skipped as a duplicate when your logbook already has a dive on the same date with the same time in. If either one has no time in, the same date and the same site counts as a duplicate. Two dives at the same site on the same day with different times are both kept.

The same rule applies to repeated rows inside the file. So importing the same file twice brings nothing in the second time: the review screen says every dive in the file is already in your logbook.

Rows with no date, no site and no place aren't dives, so they are skipped and counted under **rows without a date, site or place**. A row with any one of the three, even only a place, is kept as a dive. If no date, site or place column is matched at all, the review screen asks you to match one.

## Values the app can't read

A value the app can't read never stops the import. That field is left blank on that dive, and the **left blank** section lists the field and how many dives it affects. Everything else on those dives comes through.

Values far outside what a dive could record count as unreadable too, for example a depth over 350 m or water hotter than 40 °C. They usually mean a column was matched to the wrong field or a unit was wrong. If you see a long **left blank** list, check **what goes where** and the unit questions.

A few fields always hold a value on a dive, so they are never blank. When the file has no value for them, or one the app can't read, the dive gets these settings:

| Field | Set to |
| - | - |
| salt or fresh | salt |
| boat or shore | boat |
| day or night | day |
| tank material | aluminum |
| oxygen % | 21 |

So an imported dive can show salt, boat, day, aluminum or 21% when the file didn't say. When the file had a value there the app couldn't read, **left blank** still lists the field, and its explanation says those dives got a new dive's default (air, aluminum, salt, boat, day) rather than an empty field. Check those fields on imported dives if they matter to you.

Each dive keeps the units it was measured in. A depth logged in feet stays in feet.

Ratings on a 10-point or 100-point scale are converted to five stars.

## How the dives are numbered

* **Your file's numbers are kept** when every dive in it has a number, no two share one, and none matches a dive already in your logbook. The done screen says the dives were numbered as your file had them.
* **Otherwise the dives are numbered in date order**, after the highest number in your logbook. Dives with no date go after the dated ones, in file order.
* **Into an empty logbook**, the numbers end at the number of dives you told SCUBAzen you had logged before, if that is higher than the number of dives in the file. For example, if you said 120 and the file holds 50 dives, they become dives 71 to 120.

The **numbered** row on the review screen shows the range before you bring the dives in. The next dive you log is numbered after them.

## Undo an import

<Warning>
  You can only undo an import from the done screen, right after it finishes. Once you tap **open logbook**, **continue** or back, the undo is gone and imported dives have to be deleted one at a time.
</Warning>

To undo, tap **undo this import** on the done screen, then **remove them**. This removes every dive the import added and nothing else. Dives you logged yourself aren't touched. Undo needs a connection.

## If the import is interrupted

Dives are written in batches. If the connection drops partway, the screen says how many came in before it dropped. You have two choices:

* **try again** carries on from where it stopped. Dives that already came in aren't added twice.
* **remove what came in** removes everything this import added, including dives that may still be on their way.

If the connection drops before any dive is confirmed, some may still arrive once you're back online. Use **try again** to finish, or **remove what came in** to clear them.

## What can't be imported

* **Only CSV files.** Other logbook formats can't be read.
* **Only dives.** Photos, per-dive equipment, dive types, gear, certifications and insurance can't be imported.
* **Only these logbook fields:** dive number, date, time in, time out, bottom time, site, place, GPS position (one column or separate latitude and longitude), max depth, visibility, water temp, air temp, altitude, start pressure, end pressure, tank size, tank material, oxygen %, helium %, nitrogen %, weight, weighting felt, suit, warmth felt, salt or fresh, boat or shore, day or night, current, safety stop, deco dive, deco gas, deco time, rating, dive shop and notes. Anything else, such as a buddy column, can go into the dive's notes.

## Messages you might see

| Message | What to do |
| - | - |
| **choose a .csv, .tsv or .txt file** | The file isn't a `.csv`, `.txt` or `.tsv`. Export a CSV from your dive app. |
| **that file is too large to be a logbook export** | The file is over the limits above. Check it's the CSV your dive app made. |
| **couldn't read that file** | The file isn't readable as a CSV, or it has no header row. |
| **there are no dives in that file** | The file has a header row but no data rows. |
| **importing checks your logbook first, so it needs a connection** | Connect and try again. |
| **every dive in this file is already in your logbook** | Every row matched a dive you already have. Nothing to bring in. |
| **match a date or site column so the dives can be told apart** | Tap a column under **not brought in** and put it in **date**, **site** or **place**. |
| **couldn't undo** | Check your connection and tap **undo this import** again. |

## Related

* [Back up your logbook](/docs/logbook/backup)
* [Browse and search your logbook](/docs/logbook/list)
* [Units and sizes](/docs/settings/units-and-sizes)
* [Troubleshooting](/docs/help/troubleshooting)


## Related topics

- [Set up SCUBAzen](/docs/get-started/setup.md)
- [Back up your logbook](/docs/logbook/backup.md)
- [Browse and search your logbook](/docs/logbook/list.md)
- [Troubleshooting](/docs/help/troubleshooting.md)
- [FAQ](/docs/help/faq.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.