A comprehensive guide to using Open DroneLog, your local-first drone flight log analyzer.
- Overview
- Getting Started
- Interface Layout
- Importing Flight Logs
- Manual Flight Entry
- Profiles
- Flight List and Selection
- Filters and Search
- Tags System
- Flight Statistics
- Telemetry Charts
- Flight Map and Replay
- Overview Dashboard
- Battery and Maintenance Tracking
- Exporting Data
- Settings
- Security Considerations (Web/Docker)
- Keyboard Shortcuts
- Tips and Tricks
- Troubleshooting
- Socials and Support
Open DroneLog is a high-performance application for analyzing drone flight logs. It supports DJI flight logs (.txt format), Litchi CSV exports, and Airdata CSV exports. All your data is stored locally in a DuckDB database with no cloud uploads, no subscriptions, and complete privacy.
| Feature | Description |
|---|---|
| Unlimited Imports | Import and manage as many flight logs as you need |
| 3D Visualization | Interactive flight path visualization with replay |
| Telemetry Analysis | Comprehensive charts for all flight data |
| Smart Tagging | Automatic descriptive tags based on flight characteristics |
| Advanced Filtering | Powerful filtering, search, and sorting options |
| Photo/Video Tracking | Automatic detection and counting of media captures |
| Battery Tracking | Health monitoring and maintenance scheduling |
| Manual Entry | Record flights without log files |
| Multiple Exports | Export to CSV, JSON, GPX, and KML formats |
| Full Backup | Complete database backup and restore |
| Profiles | Multiple isolated profiles with optional password protection |
| Single Instance | Only one app window runs at a time (desktop) |
When you first open Open DroneLog, you will see an empty dashboard with the import section expanded. The application automatically detects whether you have existing flights and adjusts the interface accordingly.
- Click Browse Files or drag-and-drop flight log files onto the import area
- Select your DJI
.txtfiles, Litchi.csvfiles, or Airdata.csvfiles - Wait for processing (the app will decrypt DJI logs, which requires internet on first import)
- Your flights appear in the sidebar list
Note
DJI V13+ flight logs require decryption keys from DJI's servers. You need to be online during the first import of each new log file. Once imported, the keys are cached locally for offline use.
The application is divided into three main areas:
| Component | Function |
|---|---|
| View Toggle | Switch between "Flights" and "Overview" modes |
| Import Section | Drag-drop area and browse button (collapsible) |
| Filters Section | Date range, drone, battery, tags, and range filters (collapsible) |
| Flight List | All imported flights with selection, sorting, and search |
| Section | Content |
|---|---|
| Top | Telemetry charts showing flight data over time |
| Bottom | Interactive 3D flight map with replay controls |
| Section | Content |
|---|---|
| Statistics Cards | Total flights, distance, time, and data points |
| Activity Heatmap | Calendar view of flight activity |
| Charts | Flights by drone, battery, duration, and time of day |
| Cluster Map | Geographic view of all flight locations with optional heatmap |
| Battery Health | Per-battery health indicators |
| Top Flights | Longest and furthest flights |
| Maintenance | Track maintenance schedules for batteries and aircraft |
- Drag the divider between sidebar and main panel to resize
- Drag the horizontal divider between charts and map to adjust the split
- Collapse the telemetry panel completely by dragging it to minimum width
| Format | File Extension | Source |
|---|---|---|
| DJI Flight Logs | .txt |
Modern DJI format from DJI Fly app |
| Litchi CSV | .csv |
Exported from Litchi app |
| Airdata CSV | .csv |
Exported from airdata.com (all unit settings supported) |
| External Parser Plugins | Depends on plugin | User-defined parsers configured via parsers.json |
| Method | Description |
|---|---|
| Drag and Drop | Drag files directly onto the import area |
| Browse Button | Click "Browse Files" to open a file picker |
| Multiple Files | Select multiple files at once for batch import |
| Folder Sync | Configure automatic import from a mounted folder |
When a file is deleted from a sync-imported workflow, its content hash is added to the sync blacklist so scheduled folder sync will skip that file in future runs.
You can manage these entries from Settings → Manage blacklisted logs (count):
- View blacklisted entries with filename/presence status (when resolvable from the sync folder)
- Select one or more entries and clear only the selected items
You can also use manual import as an alternative blacklist removal for specific files:
- Import the file via Browse Files or Drag and Drop
- The app imports it and automatically removes that file hash from the sync blacklist in the same flow
This is useful when you want to re-allow and import a specific file immediately, without opening the blacklist manager.
The app automatically detects and prevents duplicate imports based on:
- Drone serial number
- Battery serial number
- Exact start time
Tip
You can safely re-import files without creating duplicates. The app will skip any flights that already exist in your database.
When you customize a flight (rename, add notes, change color, or add manual tags), those customizations are automatically saved in a persistent overlay keyed by the file's content hash. This means:
- If you delete a flight and re-import the same log file, your custom name, notes, color, and manual tags are automatically restored
- This works for both individual flight deletion and bulk "Clear Project Database" operations
- Manual-entry flights (which have no log file) are excluded from this feature
- Customizations are included in database backups and restored along with them
During import, you will see:
- Current file being processed
- Progress counter (X of Y files)
- Any errors or warnings
For flights where no log file is available (e.g., flights with other apps, flights before you started logging, or when logs were lost), you can manually create flight records.
Click the Manual Entry button in the Import section of the sidebar.
| Field | Description |
|---|---|
| Flight Title | Optional custom display name (defaults to Aircraft Name if left blank) |
| Aircraft Name | Name or model of the drone used |
| Drone Serial | Serial number of the aircraft |
| Battery Serial | Serial number of the battery used |
| Date | Flight date (calendar picker) |
| Time | Takeoff time in 12-hour format (converted to UTC internally) |
| Duration | Flight duration in seconds |
| Home Latitude | Takeoff location latitude (-90 to 90) |
| Home Longitude | Takeoff location longitude (-180 to 180) |
| Field | Description |
|---|---|
| Total Distance | Distance traveled (in current units) |
| Max Altitude | Maximum altitude reached (in current units) |
| Notes | Additional notes about the flight |
- The flight is automatically tagged with "Manual Entry"
- Smart location tags (city, country, continent) are generated from the coordinates
- The flight appears in your flight list and overview statistics
- Manual entries can be exported, but since they have no telemetry data:
- CSV exports contain a single row with home coordinates and metadata
- GPX exports contain a waypoint at the home location
- KML exports contain a point placemark at the home location
Note
Manual entries have no telemetry data, so the charts panel will be empty and the map will show only the home location marker.
Tip
In the Date picker, you can also type a date directly in YYYY-MM-DD format and click Go for faster navigation.
Open DroneLog supports multiple named profiles. Each profile is a fully isolated environment with its own database, configuration, uploaded files, and sync folder. This is useful for separating data by pilot, drone fleet, client, or purpose.
- Click the profile selector dropdown in the header (next to the logo)
- Click New Profile
- Enter a profile name (letters, numbers, hyphens, and underscores)
- Optionally enter a password to protect the profile
- If a master password is configured (Docker/web), you'll also need to enter it
- Click Create
- Click the profile selector and choose the desired profile
- If the profile is password-protected (shown with a lock icon), you'll be prompted to enter the password
- Each browser tab maintains its own active profile (via tab-scoped storage), so you can have multiple tabs open on different profiles
- Session tokens use a hybrid strategy:
sessionStoragefor per-tab isolation pluslocalStorageas a persistent fallback, so sessions survive browser restarts without conflicting across tabs
- Click the trash icon next to the profile name in the dropdown
- If the profile is password-protected, enter the profile password
- If a master password is configured, enter it as well
- Confirm deletion
Warning
Deleting a profile permanently removes its entire database, including all flights, telemetry, tags, and settings. This cannot be undone.
Any profile (including the default profile) can be protected with a password:
- Set a password: Go to Settings → Profile Password and enter a new password
- Change a password: Enter the current password and the new password in the same section
- Remove a password: Enter the current password and click Remove Password
Password details:
- Passwords are hashed with argon2id (industry-standard)
- In web/Docker mode, a successful login issues a session token (valid for 24 hours by default, configurable via
SESSION_TTL_HOURSenv var) - When a session expires or becomes invalid, the app automatically clears the token and shows the login overlay
- Desktop auto-lock: On the desktop app, profiles automatically lock when the app closes and prompt for re-authentication on the next launch
- Lockout: 5 consecutive failed password attempts lock the profile for 60 seconds
- Protected profiles show an amber lock icon in the profile selector dropdown
Administrators can set the PROFILE_CREATION_PASS environment variable to require a master password for creating or deleting profiles. This prevents unauthorized users from adding or removing profiles on shared instances.
environment:
- PROFILE_CREATION_PASS=your-secret-master-passwordAdministrators can optionally set DEFAULT_PROFILE_PASSWORD to initialize a password for the default profile at startup.
environment:
- DEFAULT_PROFILE_PASSWORD=your-default-profile-passwordBehavior details:
- Applied only when the
defaultprofile does not already have a password - If a password is already set for
default, startup skips initialization and logs that it was skipped - If the env var is unset or set to an empty string (and no existing password is present),
defaultremains unprotected
The flight list displays all imported flights with the following information:
| Field | Description |
|---|---|
| Flight Name | Editable display name |
| Date and Time | When the flight occurred |
| Duration | Total flight time |
| Distance | Total distance traveled |
| Drone Model | Aircraft used |
| Tags | Colored badges for categorization |
- Single Click loads the flight data into charts and map
- Selected flight is highlighted with a colored border
- Double-click opens rename mode
- Double-click on a flight name, OR
- Hover over a flight and click the edit icon
- Type the new name
- Press Enter to save or Escape to cancel
- Hover over a flight to reveal the delete button
- Click the delete button
- Confirm the deletion in the popup
Warning
Deleted flights cannot be recovered unless you have a database backup. However, custom flight names, notes, colors, and manual tags are preserved and will be automatically restored if the same log file is re-imported.
Right-click on any flight in the list to access additional actions:
| Action | Description |
|---|---|
| Rename | Edit the flight name |
| Delete | Remove the flight from the database |
| Regenerate Smart Tags | Re-apply automatic tags to this flight |
| Generate FlyCard | Create a shareable image with flight stats (disabled in Overview mode) |
| Export | Export this flight to CSV, JSON, GPX, or KML |
Click the sort dropdown to sort flights by:
| Option | Behavior |
|---|---|
| Name | Alphabetical order |
| Date | Newest or oldest first |
| Duration | Longest or shortest |
| Distance | Furthest or nearest |
| Color | Sorted by customized flight color |
Toggle ascending/descending with the arrow button.
Click the Filters header in the sidebar to expand or collapse the filter section. Filters persist across sessions.
- Click the date button to open a calendar picker
- Select a start date (From) and end date (To)
- You can also type start and end dates directly using two
YYYY-MM-DDinput fields and click Go - Clear with the X button
- Multi-select dropdown showing all your drones
- Drones are listed with their display name and serial
- Selected drones appear at the top of the list
- Multi-select dropdown showing all battery serials
- Batteries use custom names if you have renamed them
- Selected batteries appear at the top
- Multi-select dropdown showing all remote controller serial numbers
- Filter flights by which RC was used
- Selected controllers appear at the top of the list
- Dropdown to select customized assigned flight colors
- Filter flights that have been assigned a specific color
- Multi-select dropdown with all available tags
- Type to search and filter tags
- Select multiple tags (flight may match ANY selected tag)
| Filter | Description |
|---|---|
| Duration Range | Set minimum and maximum duration in minutes |
| Altitude Range | Filter by maximum altitude reached |
| Distance Range | Filter by total distance traveled |
Note
Range filter units adapt to your preference setting (metric or imperial).
- Toggle "Filter by visible map area" in Overview
- Only shows flights with takeoff location within the current map view
- Use the Saved dropdown to apply a previously saved filter preset
- Click Save filter to store the current scroll-box filter state (date, drone, battery, controller, tags, color, duration, altitude, distance)
- If you save with an existing name, the preset is overwritten
- Presets can be deleted from the dropdown using inline confirmation
- None and the currently selected preset cannot be deleted
- When you manually change filters after applying a preset, selection automatically switches back to None
- Saved filter profiles are stored in the profile's database settings (not browser localStorage)
- Type in the search box to filter flights by name
- Search is case-insensitive
- Works in combination with other filters
Click the Invert button to negate all filters. Instead of "show flights matching these criteria," it becomes "hide flights matching these criteria."
- Click the X on individual filters to clear them
- Use the clear button on dropdowns to reset selections
- Date range has a dedicated clear button
When enabled, the app automatically generates descriptive tags during import:
| Tag | Condition |
|---|---|
| Night Flight | Flight occurred during nighttime hours |
| High Speed | Maximum speed exceeded threshold |
| Cold Battery | Battery temperature was low during flight |
| Low Battery | Minimum battery level dropped below threshold |
| High Altitude | Maximum altitude exceeded threshold |
| Long Distance | Total distance or distance from home exceeded threshold |
| Country | Reverse geocoded from takeoff coordinates |
| Continent | Reverse geocoded from takeoff coordinates |
| Litchi | Flight was imported from Litchi CSV |
| Airdata | Flight was imported from Airdata CSV |
| Manual Entry | Flight was created via manual entry (no log file) |
- Select a flight to view its details
- In the stats bar, click the + button next to existing tags
- Type a new tag name or select from suggestions
- Press Enter to add the tag
- Click the X on any tag badge to remove it
- Auto-generated tags show a special indicator to distinguish them from manual tags
| Action | Description |
|---|---|
| Toggle Smart Tags | Enable or disable automatic tagging for new imports |
| Regenerate Smart Tags | Re-apply automatic tags to all existing flights |
| Remove Auto Tags | Remove all auto-generated tags while preserving manual tags |
The sidebar provides two buttons for bulk tag management on filtered flights:
| Button | Description |
|---|---|
| Untag filtered | Removes the currently selected tag filter(s) from all filtered flights. Requires at least one tag filter to be selected. Shows confirmation before proceeding. |
| Bulk tag filtered | Adds a manual tag to all filtered flights. Enter a tag name and press Enter or click the checkmark to apply. Supports autocomplete from existing tags. |
Both operations show a progress overlay while processing and automatically refresh the flight list when complete.
When a flight is selected, the stats bar shows key metrics:
| Metric | Description |
|---|---|
| Duration | Total flight time |
| Distance | Total distance traveled |
| Max Altitude | Highest point reached |
| Max Speed | Fastest speed recorded |
| Field | Description |
|---|---|
| Start Time | When the flight began |
| Drone Model | Aircraft used |
| RC Serial | Remote controller serial number (displayed as a capsule when available) |
| Battery | Battery serial and health indicators |
| Battery Capacity | Battery life / capacity percentage (when available from flight log) |
| Home Location | Takeoff coordinates |
| Photos | Number of photo captures detected |
| Videos | Number of video recordings detected |
Click the Weather button to fetch historical weather data for the flight:
- Temperature
- Wind speed and direction
- Humidity
- Weather conditions
Note
Weather data requires an external API request. You need to be online, and the data is fetched based on the flight's location and time.
The telemetry panel displays synchronized charts:
| Chart | Data Shown |
|---|---|
| Height / VPS | Altitude and Visual Positioning System height |
| Speed | Ground speed over time |
| Battery | Battery percentage and voltage |
| Cell Voltages | Individual battery cell voltages (dynamic legend per cell) |
| Attitude | Pitch, roll, and yaw angles |
| RC Signal | Remote controller signal strength |
| GPS Satellites | Number of connected satellites |
| RC Uplink/Downlink | Signal quality metrics |
| Distance to Home | How far from takeoff point |
| Velocity X/Y/Z | Speed components in 3D space |
| Battery Full Capacity | Design capacity reported by the battery (mAh) |
| Battery Remaining Capacity | Remaining usable capacity (mAh) |
Note
The Cell Voltages chart is only displayed when cell voltage data is available from the flight log. Not all DJI drones record per-cell voltages.
| Action | Description |
|---|---|
| Drag to zoom | Click and drag horizontally to zoom into a time range |
| Reset zoom | Click the reset button to show full flight |
| Toggle drag zoom | Click the zoom toggle to enable or disable drag zooming |
You can customize which telemetry fields are displayed in each chart category:
- Click the x/y dropdown in the top-left of the charts panel
- In the dropdown, select or deselect fields (you can select upto 4 data types) for each chart category:
- Height & Altitude: Height, Altitude, VPS Height
- Speed & Motion: Speed, Velocity X/Y/Z
- Battery: Battery Percent, Voltage, Cell Voltages
- Attitude: Pitch, Roll, Yaw
- Signal: RC Signal, Uplink, Downlink, GPS Satellites
- Distance: Distance to Home
Tip
Your chart configuration is automatically saved and will persist across sessions in the same device.
Note
Telemetry chart colors are profile-specific and can be customized independently per profile.
- All charts stay synchronized: zoom one, and they all zoom
- Hover shows values across all charts at that timestamp
- Enable Sync with Map to link chart position with map replay
- As you scrub through the flight replay, charts highlight the current position
| Control | Function |
|---|---|
| 3D Toggle | Switch between 3D terrain and flat map view |
| Map Type | Switch between Satellite, Topographic, and OpenStreetMap views |
| Navigation Controls | Zoom, rotation, and tilt buttons |
| Option | Description |
|---|---|
| Color By | Change how the flight path is colored (see below) |
| Show Aircraft | Toggle the 3D aircraft marker |
| Show Media | Display photo/video capture points on the path |
| Tooltip | Toggle hover information display |
| Line Thickness | Adjust flight path line width (1-5, default 3) |
All map display options are grouped in a collapsible settings panel. Click the settings gear to expand or collapse.
| Mode | Description |
|---|---|
| Start to End | Yellow to red gradient showing flight progress |
| Height | Color based on altitude (green = low, red = high) |
| Speed | Color based on velocity |
| Dist. from Home | Color based on distance from takeoff |
| Video Segment | Highlights when video was recording |
The flight path is displayed as a 3D ribbon following the GPS track:
| Marker | Meaning |
|---|---|
| Green Pin | Takeoff location (start) |
| Red Pin | Landing location (end) |
| Home Point | Registered home position |
| Control | Function |
|---|---|
| Play/Pause | Start or stop the replay animation |
| Progress Slider | Drag to scrub through the flight |
| Speed Control | Adjust playback speed (0.5x, 1x, 2x, 4x, 8x, 16x) |
The 3D aircraft model follows the flight path at the correct altitude.
Telemetry Overlay shows real-time data:
- Height above ground
- Speed
- Battery level
- Distance from home
- Attitude (pitch/roll/yaw)
RC Joystick Overlay visualizes controller inputs:
- Left joystick: Throttle and Rudder
- Right joystick: Elevator and Aileron
Flight Messages Overlay shows in-flight tips and warnings during replay:
- When replay playback reaches a message timestamp, a toast notification appears at the bottom of the map
- Messages are color-coded by type: blue for tips, amber for warnings
- The overlay clears automatically after the message timestamp passes
When a flight contains in-flight tips, warnings recorded in the DJI log, or battery level warnings:
- A chat-bubble icon with a red count badge appears in the map panel header
- Click it to open the Flight Messages Modal, which shows a full list of messages with:
- Timestamp (time into the flight)
- Message type (Tip or Warning)
- Message text
- Messages are color-coded: blue for tips, amber/orange for warnings
- The modal is scrollable if there are many messages
Note
Flight messages are only available for DJI logs that contain app tip/warn records. Not all flights will have messages.
Switch to Overview mode using the toggle at the top of the sidebar.
- Total Flights
- Total Distance
- Total Time
- Data Points
- Total Photos
- Total Videos
- Max Altitude
- Max Distance from Home
- Average Distance per Flight
- Average Duration per Flight
- Average Speed
A calendar-style visualization showing flight activity:
- Darker colors indicate more flights on that day
- Hover to see exact count
- Double-click a day to filter the flight list to that date
- Adjust date range with the From/To pickers
Four charts showing flight distribution:
| Chart | Breakdown |
|---|---|
| Flights by Drone | Which aircraft you fly most |
| Flights by Battery | Battery usage distribution |
| Flights by Duration | Short (<10min), Mid (10-20min), Long (>20min) |
| Flights by Time of Day | Radial polar chart showing flight counts by hour (local time estimated from takeoff longitude) |
An interactive map showing all flight locations:
- Clusters group nearby flights
- Click a cluster to zoom in
- Click individual markers to select that flight
- Optional heatmap layer — toggle to visualize flight density as a heat overlay
- Map respects current sidebar filters
Lists your record-setting flights:
| Category | Selection |
|---|---|
| Top 3 Longest | By duration |
| Top 3 Furthest | By maximum distance from home |
Click any entry to load that flight.
The Overview shows health indicators for each battery, sorted by health percentage (lowest first):
- Health percentage based on voltage characteristics
- Battery cycle count (from DJI SmartBatteryStatic data when available, otherwise falls back to flight count)
- Usage statistics (flight count, total time)
- Inline renaming: click to give batteries friendly names
Track how each battery's full charge capacity changes over time:
- Multi-select dropdown lets you pick one or more batteries to plot
- Defaults to the most recently used battery (based on latest flight start time)
- Scatter points show the maximum reported full capacity per flight
- A smooth connecting line appears when a battery has more than one data point
- Y-axis starts at 250 mAh for consistent comparison; max adjusts dynamically
- Selected batteries are sorted to the top of the dropdown for quick access
- Legend at the bottom lists each selected battery series (scrollable if many)
View per-minute charge usage over time:
- Shows battery drain patterns
- Zoomable timeline
- Helps identify battery degradation
Set up maintenance reminders for batteries and aircraft.
- In Overview, scroll to the Maintenance section
- Click Configure for batteries or aircraft
- Set thresholds for:
- Flight count (e.g., "every 50 flights")
- Flight time (e.g., "every 10 hours")
| Color | Status |
|---|---|
| Green | Good, plenty of headroom |
| Yellow | Approaching threshold |
| Orange | Near threshold |
| Red | Exceeded, maintenance recommended |
- Click Perform Maintenance when you have serviced equipment
- Select a date (defaults to today)
- Counters reset from that date
With a flight selected, use the Export dropdown in the stats bar:
| Format | Description |
|---|---|
| CSV | Spreadsheet-compatible with all telemetry data |
| JSON | Structured data including flight metadata |
| GPX | GPS track for mapping applications |
| KML | Google Earth compatible flight path |
Create shareable social media images from your flights:
- Right-click on any flight in the list (must be in Flights view, not Overview)
- Select Generate FlyCard from the context menu
- The app will load the flight and capture the current map view
- A preview modal shows the generated 1080x1080 image with:
- Map background with your flight path
- Semi-transparent dark overlay for readability
- Flight stats (distance, max altitude, duration, max speed)
- Aircraft name
- App branding with logo
- Click Download to save the image
Tip
Position and zoom the map before generating for the best composition. The FlyCard captures exactly what you see on screen.
Note
The Generate FlyCard option is disabled (grayed out) when in Overview mode. Switch to Flights view to enable it.
From the flight list, you can export all filtered flights:
- Apply desired filters
- Click the export button in the flight list header
- Choose format
- Files are packaged into a ZIP archive
Generate a configurable, print-ready flight regulation report:
- From the bulk export dropdown, select HTML Report
- In the modal, set:
- Document Title (default: "Flight Regulation Report")
- Pilot Name (remembered for future sessions)
- Select which field groups to include:
- General Info, Equipment, Flight Stats, Battery, Weather, Media
- Click Generate Report to save the HTML file
The generated report features:
- A4-width layout optimized for printing
- Flights grouped by day with subtotals and a grand total
- Weather data for each flight (if available)
Tip
The HTML report is print-ready. Open it in any browser and press Ctrl+P (or Cmd+P on Mac) to print or save as PDF.
- Timestamp data
- GPS coordinates (latitude, longitude, altitude)
- All telemetry values
- Flight metadata in the first row
- GPS track with timestamps
- Altitude data
- Compatible with Google Earth and other mapping apps
Since manual entries have no telemetry data, exports are handled specially:
- CSV: Contains a single row with home coordinates and all available metadata
- JSON: Contains flight metadata (no telemetry arrays)
- GPX: Contains a waypoint at the takeoff location
- KML: Contains a point placemark at the takeoff location
Access settings via the gear icon in the header.
| Option | Units Used |
|---|---|
| Metric | meters, km/h, Celsius |
| Imperial | feet, mph, Fahrenheit |
| Option | Behavior |
|---|---|
| System | Follows your OS preference |
| Dark | Dark interface (default) |
| Light | Light interface |
Toggle to mask aircraft and battery serial numbers in the interface. Useful for screenshots and screen sharing.
| Option | Description |
|---|---|
| 12-hour | Timestamps displayed in 12-hour format (e.g., 2:30 PM) |
| 24-hour | Timestamps displayed in 24-hour format (e.g., 14:30) |
Applies to all time displays throughout the app including the flight list, stats panel, messages modal, and HTML reports.
Select the display language for the interface. Available locales include English, German, Spanish, French, Italian, Japanese, Korean, Dutch, Polish, Portuguese, and Chinese. Number and date formatting adapts to the selected locale.
| Action | Description |
|---|---|
| Toggle | Enable or disable automatic tagging on import |
| Regenerate | Re-apply smart tags to all existing flights |
| Remove Auto Tags | Clear all auto-generated tags (keeps manual tags) |
Manage the password for the currently active profile. This section appears in the left column of the Settings modal.
| State | Available Actions |
|---|---|
| No password set | Enter a new password and confirm it, then click Set Password |
| Password is set | Enter current password to Change Password (provide new password) or Remove Password |
- The status indicator shows whether the current profile has a password
- Protected profiles display a lock icon in the profile selector dropdown
- Passwords are hashed with argon2id and never stored in plaintext
Required for decrypting V13+ DJI flight logs.
- The app ships with a default key
- You can add your own personal key for better rate limits
- See the README for instructions on obtaining a key
- Docker users: Set the
DJI_API_KEYenvironment variable instead of using the settings UI (e.g.,- DJI_API_KEY=your_key_hereindocker-compose.yml)
| Status | Meaning |
|---|---|
| None | No valid key configured |
| Default | Using the bundled default key |
| Personal | Using your own API key |
| Action | Description |
|---|---|
| Backup Database | Export entire database to a .backup file (includes all flights, telemetry, tags, customizations, and settings) |
| Import Backup | Restore from a previously exported backup file (replaces current database) |
| Delete All Logs | Remove all flight data (requires confirmation). Custom names, notes, colors, and manual tags are preserved for re-import. |
| Remove Duplicate Flights | Scan and remove any duplicate entries |
| Manage blacklisted logs (count) | Open the blacklist manager for sync-imported files, review entries, and clear selected items from the sync blacklist |
Important
Backup files are portable and can be restored on any instance, whether desktop or Docker.
- Current version number
- Update availability check
- Data storage location
- Log file location
Options to support the project and activate a supporter badge.
Warning
Open DroneLog does not include built-in TLS/HTTPS. If you expose your Docker instance to the internet, passwords and session tokens will be transmitted in plaintext over HTTP.
- Always use a reverse proxy (Nginx, Caddy, Traefik) with TLS termination in front of the container
- Do not expose port 80 directly to the public internet
- Set
PROFILE_CREATION_PASSto prevent unauthorized profile creation/deletion - Optionally set
DEFAULT_PROFILE_PASSWORDto avoid leaving thedefaultprofile unprotected on first startup
| Area | Limitation |
|---|---|
| Transport | No built-in TLS — passwords and tokens sent in plaintext without a reverse proxy |
| Sessions | In-memory only; server restart invalidates all active sessions |
| Rate limiting | Per-profile lockout (5 attempts / 60s) but no global IP-based rate limiting |
| CSRF | No CSRF tokens; relies on same-origin policy and custom headers |
| Multi-instance | Session store is not shared across multiple backend instances |
| Shortcut | Action |
|---|---|
| Up / Down Arrow | Navigate through flight list |
| Enter | Select highlighted flight |
| Ctrl + Click | Jump to flight details (works in both Overview and Flights mode) |
| Escape | Close modals, cancel editing |
When a dropdown is open:
| Shortcut | Action |
|---|---|
| Up / Down Arrow | Navigate options |
| Enter | Select highlighted option |
| Type | Filter the list |
- The app uses DuckDB for fast queries even with thousands of flights
- Telemetry data is automatically downsampled for smooth charting
- If charts feel slow, try zooming into a smaller time range
- Rename flights with meaningful names for easy searching
- Use manual tags for custom categorization (e.g., "Client Work", "Practice", "Scenic")
- Filter by tags to quickly find related flights
| Observation | Explanation |
|---|---|
| VPS differs from GPS altitude | VPS uses visual sensors and measures height above ground |
| RC signal drops | Often indicate obstacles or range limits |
| Faster voltage drop | Battery voltage drops faster in cold weather |
- Use satellite view for better spatial context
- 3D terrain helps visualize elevation changes
- Color-by-height reveals altitude patterns at a glance
- Export backups regularly, especially before updates
- Store backups in a separate location
- Backup files are compressed and portable
- Mount your log folder for automatic import
- Set the
SYNC_LOGS_PATHenvironment variable to enable folder sync - Set the
SYNC_INTERVALenvironment variable with a cron expression for scheduled automatic sync (e.g.,0 0 */8 * * *for every 8 hours) - Optionally set
DEFAULT_PROFILE_PASSWORDto initialize a password for thedefaultprofile on first startup (never overwrites an existing one) - Data persists in the Docker volume and survives container updates
- All data stays on your device
- Decryption keys are cached locally after first use
- No telemetry or tracking
- Use "Hide Serial Numbers" for screenshots
- The desktop app ensures only one instance runs at a time
- Opening a second instance will focus the existing window instead of launching a new one
- This prevents database conflicts and accidental duplicate windows
| Check | Solution |
|---|---|
| File format | Ensure the file is a valid DJI .txt or Litchi .csv |
| Internet connection | Required for DJI log decryption on first import |
| Isolate the issue | Try importing a single file |
| Check | Solution |
|---|---|
| Internet connection | Map tiles load from online sources |
| Toggle views | Try switching between satellite and street view |
| Restart | Refresh the page or restart the app |
| Check | Solution |
|---|---|
| Telemetry data | Verify the flight has telemetry data |
| Flight duration | Very short flights may have limited data |
| Zoom level | Try resetting zoom level |
Warning
This is a Gatekeeper warning for unsigned apps, not an actual corrupted file.
Run this command in Terminal:
xattr -d com.apple.quarantine /path/to/Drone\ Logbook.appIf you need any help, want to discuss features, or report issues, join our community platforms:
- Discord: Join our server
For more information, visit the GitHub repository or check the README for technical details.