Quick answer: the UK Drone Map Fleet tab now includes a free flight log importer — no account, no subscription, no upload. Drop in a DJI CSV, KML, GPX or any standard flight CSV and your flights are instantly in your logbook with duration, altitude and location. All parsing happens in your browser; nothing leaves your device.

Why this exists — privacy first
The most common question we get from UK recreational pilots is: "I've got all my DJI Fly logs — what do I do with them?" Most existing tools answer that by uploading your flights to their servers. That means your location history, flight frequency and aircraft details sit on someone else's infrastructure — subject to their privacy policy, their retention decisions, and their security posture.
UK Drone Map's log importer takes the opposite approach: your flights never leave your device. The file is parsed locally, stored in your browser's IndexedDB, and the analytics run entirely in the tab. No account, no server, no data sharing. It works offline. It always will be free.
What apps and formats it supports
The importer handles seven file types, covering almost every drone app on the market:
- DJI Fly / DJI GO 4 telemetry CSV or .TXT — the per-second flight record from DJI apps. The importer strips metadata comment lines (lines starting with
#), detects thedatetime(utc)andascent(feet)columns, computes duration from the first and last timestamp, and extracts max altitude and GPS coordinates. - Autel Explorer telemetry CSV — detected by the
height(m)column. Altitude is automatically converted from metres to feet. Duration computed from elapsed timestamps or ms columns. - Flight summary CSV — one row per flight, with columns like
date,duration_seconds,max_altitude_feet,craft_name,battery_start_percent. Covers exports from Skydio, Kittyhawk, Hover, FlightLogger and similar apps. - JSON — DroneLogbook exports, Parrot FreeFlight backups, Skydio JSON, and any custom JSON file with an array of flight objects. The importer normalises common field names for date, duration (auto-detects ms/s/min), altitude (auto-detects m vs ft), aircraft, location and battery.
- KML — track exports from DJI, Litchi, DroneDeploy and most flight planning apps. Reads
<LineString>coordinates and<TimeSpan>elements for duration and date. - GPX — standard GPS exchange format from dedicated GPS loggers and open-source apps. Elevation from
<ele>(metres → feet), timestamps from<time>. - Generic CSV fallback — if your file doesn't match any of the above, the importer scans the header row against a library of over 50 column name aliases covering variations like
flight_duration_s,max_altitude_m,start_time,battery_take_off. Unit detection is automatic:_ssuffix → convert seconds to minutes,_msuffix → convert metres to feet. As long as there is a date column, it will produce log entries.
The import flow
- Open the Fleet tab. In the sidebar, tap Fleet → Logs.
- Click 📂 Import. A file picker opens. You can select multiple files at once — different formats can be mixed.
- Review the preview. After parsing, you see a list of all flights found with their date, aircraft, duration, altitude and battery data. Nothing has been saved yet.
- Confirm the import. Hit "IMPORT N FLIGHTS". The importer deduplicates — if you import the same file twice, entries matching an existing log (same date + aircraft + duration) are skipped and you see how many were filtered out.
- Done. Your flights appear in the Logs list and immediately feed into the Analytics view — total hours, monthly chart, per-aircraft breakdown, maintenance reminders.
Privacy, by design
The entire fleet and log system is built on a hard constraint: no network calls, ever. The source code for the fleet module contains this comment verbatim:
PRIVACY INVARIANT — this module handles only local state. No fetch / XHR / WebSocket / sendBeacon calls are permitted here. Pilot profile, drone list and licence data persist in IndexedDB on this device only.
The log importer module carries the same invariant. The FileReader API reads your file locally — the bytes go from your filesystem into the JavaScript engine in your browser tab and no further. There is no server receiving anything. There is no analytics pipeline. The parsed entries go straight into IndexedDB, which is browser-local storage scoped to ukdronemap.app and inaccessible to any other site.
This is not a privacy policy promise — it is a code-level constraint. You can verify it: open DevTools → Network tab, then import a file. You will see zero outbound requests.

What happens after import
Once your flights are in, the Analytics tab computes across all of them:
- Total flights and hours — lifetime, with a monthly activity chart for the last 12 months
- Per-aircraft breakdown — hours, flight count, approximate battery cycles
- Maintenance alerts — props check at 50 h, full service at 100 h, battery replacement warning at 100–150 cycles
- Licence expiry — A2 CofC, GVC and insurance expiry dates with countdown warnings
These run entirely in the browser against your local data and update instantly when you add or import flights.
The Analytics tab also merges your flight plans
If you use UK Drone Map's Flight Plans feature and mark a plan as Completed, that flight is automatically counted in your statistics — you don't have to log it twice. The analytics engine merges both sources. A completed plan can also be forwarded to the log form with one click to add battery and incident details before saving it properly.
Exporting your logbook
Fleet → Export Fleet Data produces a plain-text report of your entire pilot profile, drone list, flight statistics and log entries. Save it periodically — browser storage can be cleared. For pilots who need their logbook in a specific format (for a GVC revalidation, for example), the export gives you the raw data to work from.
The flight log importer is live now at ukdronemap.app. No sign-up, no cost, no data leaving your device.