Skip to content

TravStats vs. AirTrail

AirTrail is an open-source, self-hosted personal flight tracker (GPL-3.0), under active development. It runs in Docker and keeps its data in PostgreSQL. If you are choosing between the two, you are choosing between two tools that agree on the fundamentals — your server, your database, open source — and differ in focus.

TravStatsAirTrail
HostingYour server (Docker)Your server (Docker)
DatabasePostgreSQL + PostGISPostgreSQL
LicenseAGPL-3.0GPL-3.0
FocusTravel logbook: flights, cruises, stays, tripsFlights, in depth
Adding flightsDrop a booking email, PDF or boarding pass → automatic; manual formManual form with flight-number lookup; list imports
Flight-number lookupAirLabs, Aviationstack, AeroDataBox, OpenSkyadsbdb by default, AeroDataBox optional
List importsFlightradar24 CSV, any logbook CSV, own spreadsheetMyFlightradar24, App in the Air, Jetlog, TripIt, Flighty, byAir, JetLovers, OpenFlights, Miles & More, AirTrail JSON
Recorded flight tracksNoYes — GPX, KML, FR24 and FlightAware CSV, readsb traces
MapRoutes, heatmap, trips, 3D globeFlat map or globe, satellite basemap, optional aviation charts
CruisesYesNo
Hotels / staysYes — a domain of its own since 2.6.0No
Currencies and costs155 currencies, ECB rates—
Achievements270+—
Multiple usersYes, built for about 1–10Yes, flights can be shared between users
Single sign-on (OIDC)NoYes
Two-factor / passkeysYes, per account—
Public share linksNoYes
APIREST + OpenAPI, scoped Personal Access TokensREST, API keys
ExportWhole-logbook spreadsheet (re-importable), JSON, database backupCSV, JSON (re-importable), YAML via API
MobileWeb (responsive); a Companion app in testing, betaWeb (responsive)

A dash means the AirTrail documentation does not describe it — not necessarily that it cannot be done.

AirTrail’s add-flight form is good: type a flight number, and it fills in the route and airline. TravStats goes one step earlier. You drop the booking confirmation — an .eml, an .msg, pasted text, a PDF — or photograph the boarding pass, and the flight is read out of it and shown on a review screen before anything saves. The same drop zone takes cruise and hotel confirmations and decides on its own what it is looking at.

One honest caveat: the parser is at its best with a local language model (Ollama), which wants real RAM. Without it, built-in templates cover single-leg bookings on common European carriers. See Imports & Parsers.

AirTrail is a flight tracker and says so. TravStats also records cruises — ship, ports of call, sea days, the route on the map — and hotel stays as a domain of their own, and groups all of it into trips. Countries are counted by evidence — a night slept, a port call, a day on the ground — rather than by airports touched. If your travel history includes a ship or a week somewhere you drove to, that is the difference. See Trips and Countries & passport.

Prices can be recorded in the currency they were paid in, and totals are converted with ECB rates rather than added across currencies (Money & currencies). And 270+ achievements unlock on their own as you log.

AirTrail goes deeper into the flight itself. You can attach a recorded track — GPX, KML, a Flightradar24 or FlightAware CSV, a readsb trace — and the map shows the path actually flown, coloured by altitude, instead of a great-circle arc. The map can show airport weather, day and night, and aviation charts. Custom fields let an admin add whatever an enthusiast wants to track. TravStats draws arcs and does none of this.

AirTrail imports from nine other apps and services, among them App in the Air, TripIt, Flighty and Miles & More, plus its own JSON export. TravStats has one dedicated flight importer (Flightradar24) plus a column-mapping wizard for everything else. If your history sits in one of those apps, AirTrail reads it as-is.

AirTrail supports single sign-on via OpenID Connect, so it plugs into the identity provider you may already run. TravStats has local accounts with two-factor and passkeys, but no SSO. AirTrail can also publish a share link and put one flight on several users’ logs. TravStats has no public surface at all — a privacy feature for some, a missing feature for others.

If you only fly and want only a flight log, AirTrail’s scope is exactly that, without cruise, lodging and trip screens you will never open.

TravStats has no AirTrail importer. The CSV export works through the column-mapping wizard under Settings → Import → “From any logbook (CSV)”. Export from AirTrail as CSV (Settings → Export), then map:

AirTrail CSVTravStats field
datedate
fromdeparture airport
toarrival airport
flightNumberflight number
airlineairline
aircraftaircraft
aircraftRegregistration
seatNumberseat
notenotes

Leave departure and arrival unmapped, or convert them first: AirTrail writes full ISO 8601 timestamps, and the wizard reads local times as HH:MM:SS. A row with a time it cannot read is reported as an error and skipped, not imported. Seat class and flight reason have no column in the wizard today. The import runs as one batch and can be reverted whole — see Import & Export.

If flying is the hobby — tracks, charts, registrations, every import source — AirTrail is the more specialised tool, and it is a good one.

If flights are one part of how you travel, and you would rather forward confirmation emails than type, TravStats covers more of the journey: the cruise, the hotel, the trip that holds them, and what it cost. Both keep your data on your own hardware; that decision is already made either way.