Find and resolve duplicate flights
What this does
Scans the whole logbook for flights it’s holding twice — usually from importing the same file twice — and lets you merge, delete, set aside or skip each pair.
Before you start
- Back up first (→ H4). Merging, deleting and setting aside here can’t be undone inside the app. Each one reaches your paired devices on the next sync, and no later sync brings the removed flight back.
- This is free. There’s no Pro check on the scan or on any of its actions.
Steps
- On the logbook screen, tap ⋮ (More Actions) and choose Find Duplicates.
- Wait for the scan. If your logbook is clean, a green message reads No
duplicates found in logbook. and you’re done.

- Otherwise the resolution screen opens, headed Resolve Duplicate Flights. On a wide window a Conflicts sidebar lists each group — Conflict 1, N items — and the header counts your progress, 1 of N. On a narrow window you see one group at a time.
- Tap the tile of the flight you want to keep. The tile with the tick is the one that will be kept. How to read a tile is under Reference: reading a tile below.
- Tap Compare Details to see the two flights side by side — RECORD TO KEEP against POTENTIAL DUPLICATE, with — wherever a value is missing — and a Merge fills: … line previewing what a merge would copy across. Hide Details closes it.
- Tap Merge, Delete, Set aside or Skip for this group (see Reference: the four actions). Delete asks you to confirm at Delete N Item(s)?, which lists every flight it’s about to remove, then Cancel / Delete.
- Close the screen whenever you like. Close and the ✕ both keep what you’ve already resolved, and groups you haven’t reached are left for the next run.
How to tell it worked
The group leaves the list and the counter moves on. Resolve the last group, or close the screen after resolving at least one, and the logbook list reloads without the flights you merged, deleted or set aside.
If something goes wrong
| What you see | Why | What to do |
|---|---|---|
| No duplicates found in logbook. on a logbook you know has a repeat | The two copies differ in at least one of the six values the scan compares — often the hours or the out-time | Find them with search (→ D5) and remove one by hand |
| Error scanning for duplicates: … | The scan failed | Try again. If it keeps happening, note the message and report it (→ A11) |
| Merge failed: … / Delete failed: … / Set aside failed: … | The change wasn’t saved | The group stays on the list. Try again |
| A tile reads No airports logged, a dash, or missing (abcdef) | The flight has no airports on it, or an airport it points at has been deleted | Don’t merge that group. Open the flights themselves (→ D7) and decide by hand |
Reference: what counts as a duplicate
The scan is exact. Two flights are offered as duplicates only when all six of these are identical: calendar date, aircraft, departure airport, arrival airport, flight hours, and out-time. There’s no tolerance — 1.5 hours against 1.4 isn’t a duplicate, and out-times a second apart aren’t a duplicate.
It reads the entire logbook: your filter and your search make no difference to what it finds. Drafts and flights you’ve already deleted aren’t scanned.
Reference: reading a tile
Each tile is one flight: tail and date on the first line, the route under it, a short id and the hours on the right. A flight with no airports reads No airports logged. One with only an arrival or only a departure shows a dash for the missing end. One whose airport has since been deleted reads missing (abcdef), with enough of the id to tell two such flights apart.
Reference: the four actions
| Action | What it does |
|---|---|
| Merge | Keeps the ticked flight, fills its empty fields from the other, and removes the other. Read What Merge keeps below before you use it |
| Delete | Removes every flight in the group except the one you’re keeping |
| Set aside | Set aside in the Review queue for later. Takes every flight in the group except the keeper out of the logbook and puts it in Review, where you can merge, edit, commit or discard it later (→ B5) |
| Skip | Dismiss for now — changes nothing |
What Compare Details shows. The table covers the flight’s main details only: date, aircraft, airports, hours, route, flight number, the OOOI times, tach, remarks and the like. Night, instrument, PIC, SIC, landings, fuel, schedule and duty figures are stored separately and are not in the table at all.
Reference: what Merge keeps
Merge doesn’t combine two flights. It keeps one, and fills in some of its blanks from the other.
| What happens | |
|---|---|
| Fields filled from the other flight, only where the keeper’s is empty | Route, Flight #, Operating under, Distance, Out, Off, On, In, Tach start, Tach end, Remarks — plus flight hours when the keeper’s are zero |
| Moved across, skipping any the keeper already has an identical copy of | Approaches — matched by type, runway, minima category, Autoland/Circle to Land and count — and photos, matched by content. A photo or approach that’s genuinely different still moves across |
| Moved across where the keeper doesn’t already have that entry | Crew members, and tags |
| Filled field by field on the keeper, wherever its own value is blank | The flight times — night, instrument, PIC, SIC, dual, cross-country and the rest — and, the same way, landings and takeoffs, fuel, schedule, duty times and external loads. Every value the keeper already recorded stays; only its blanks take the other flight’s numbers. Where the keeper has nothing recorded for one of these six groups, the other flight’s whole set moves across instead |
Fuel is the one exception. A blank fuel figure on the keeper only fills from the other flight when both use the same unit, or one of them has no unit at all. Log one flight’s fuel in litres and the other’s in US gallons, and the keeper’s fuel is left exactly as it was. Nothing fills, and nothing on screen tells you why.
None of those six groups — flight times, landings, fuel, schedule, duty, external loads — is in the Merge fills preview, which only covers the eleven fields in the first row of this table. Compare Details won’t show you what’s about to fill in any of them before you commit.
Choosing the keeper: because the keeper’s own values are never overwritten — only its blanks get filled — you don’t need to pick the fuller flight as the keeper. The one thing worth checking first is fuel. If you want the keeper’s blank fuel fields to fill, open both flights in the detail view (→ D7) and check that their Duty & Fuel cards show the same unit. Compare Details doesn’t show it, and a mismatch fails without a message.
Gotchas
Two simulator sessions in the same device on the same date aren’t grouped as duplicates — unless they share an out-time. A device session has no route, so date, device and length alone say little, and the scan leaves them alone. Two sessions that also have the same out-time are still offered, because that’s a double entry rather than two sessions on a busy day.
Skipping costs nothing. Skip takes the group off this run without touching its flights, and without counting as a resolution. Skip every group and closing the screen does nothing — nothing merged, nothing deleted, nothing to refresh. Run the scan again when you’re ready.
Delete is the ordinary delete. It deletes the flight and syncs that to your other devices, the same as the bin on a flight card. It isn’t a wipe, but it still can’t be undone inside the app — a backup taken before the merge is the only way back (→ H6).