Your trips · Your map · Your story

Every trip you've taken,
on one map.

Forward a booking email — TravStats reads it, draws the route on your globe, and never lets your data leave your server.

How it works

Drop a booking email in. Get the journey out.

TravStats reads the kind of confirmation emails airlines send you anyway — pulls out the flight, the route, the date. Every other detail stays where it was. Pick a sample below to see what the parser sees.

[SIMULATED BOOKING CONFIRMATION]
Subject: Booking confirmation — your flight LH 401
 
Dear Traveling Tom,
 
Thank you for booking with Lufthansa. Your reservation is
confirmed.
 
Booking reference: X1Y2Z3
Frequent flyer: ******5678
 
FLIGHT DETAILS
Flight: LH 401
Date: 15 June 2026
Departure: Frankfurt (FRA), Terminal 1, 10:35
Arrival: New York JFK (JFK), Terminal 1, 13:25
 
Passenger: TRAVELING/TOM
Class: Economy (Y)
Seat: 24A
 
Total paid: € 583.40 (Card ending **** 1234)

Extracted

Flight

LH 401

From

Frankfurt (FRA)

To

New York JFK (JFK)

Date

15 June 2026

Cabin

Economy

Added to your logbook — visible on the globe.

Privacy mode active. These are fictional booking confirmations with fake passenger names, PNRs and card numbers. In your own self-hosted TravStats, your real emails are parsed locally — they never leave your server.

Best results come from the Ollama parser (local LLM, recommended). The pure-regex fallback without an LLM is still under development.

What it looks like

A logbook you'll actually open.

The web UI works on your laptop, your tablet and your phone. Three of the views you'll spend the most time in:

travstats.local / globe

Globe

Every flight as a great-circle arc, every cruise as a sea route.

travstats.local / stats

Distance

247,381 km

6.2× around Earth

Countries

38

of 195

Top airlines

LH
BA
AF

Statistics

Distance, countries, top airlines, top aircraft, top airports.

travstats.local / flight/LH401

Flight

LH 401

15 June 2026 · A340-600 · Economy

FRA

10:35

7h 50m

JFK

13:25

Distance

6,206 km

Tag

Family

Flight detail

Aircraft, route, distance, tags — every flight is a small story.

Mockups stand in for the live UI until v1.3 ships. Real screenshots will replace these images soon.

Why TravStats

Your travel history deserves more than a spreadsheet.

Every flight you've ever taken

Forward a booking confirmation. TravStats reads the route, draws the arc on your globe, and remembers it forever — from the first transatlantic to last weekend's hop.

Cruises — every port of call

Flights are just the start. Import a cruise from email or PDF: the ship, every port, every sea day — and the flights of a fly & cruise trip along with it. Hotels and places of interest join the map next.

Your memories, on your server

TravStats lives in a Docker container on your own hardware. No ads. No analytics. No terms of service that change next week.

Numbers that tell your story

How many miles? How many countries? Most-flown airline? TravStats answers questions you didn't think to ask about your own travel history.

Bring your history with you

Drop your Flightradar24 export, an OpenFlights CSV, or any per-flight spreadsheet. TravStats maps the columns, shows you a preview, and imports — in seconds, not an evening.

Personal world records

The numbers your inbox has been quietly tracking.

Every TravStats user lands here eventually — surprised by their own travel history. The figures below are illustrative, but the categories are real.

Distance flown

0 km

≈ 6.2× around Earth

Countries visited

0

of 195 worldwide

Hours in the air

0 h

≈ 24 days, non-stop

Most-flown route

FRA ↔ JFK

together · 86,884 km

58 quiet little brags

Travel rewarded — even when nobody's looking.

Every flight you log unlocks more than a line in a database. TravStats hands out 58 achievements across five categories — for the long-haulers, the frequent flyers, the country collectors and the weird-route enthusiasts. The stories you forgot you were collecting.

  • Distance & Endurance
  • Geography
  • Frequency
  • Operators & Aircraft
  • Special Moments

Globetrotter

Earned

Touch down in 25 different countries.

Long Haul

Earned

Survive a single flight 12 hours or longer.

Window-Seat Veteran

Earned

Log your hundredth flight.

Round the World

Locked

Cover the Earth's circumference — 40,075 km logged. 14,206 km to go

Five Continents

Locked

Land on five different continents. Africa & Oceania left

Aurora Hunter

Locked

Cross the Arctic Circle on a single flight.

+ 52 more — from Equator Crosser and Antimeridian to Star Alliance Loyalist and Red-Eye Specialist. You unlock them as you go; TravStats backfills them retroactively when you import old flights.

Plays well with your stack

Runs where your other services run.

A single Docker image and a Postgres container. If you can run containers, you can run TravStats.

  • Docker
  • Proxmox / LXC
  • Unraid
  • TrueNAS
  • Synology
  • CasaOS
  • Cloudflare Tunnel

Or any Linux box with Docker. The wiki has setup notes for each platform.

  • ~10 minute setup
  • Runs on a Raspberry Pi 4 or any NAS
  • No cloud account, ever

Ready to start your logbook?

Set up takes about ten minutes. The wiki walks you through every step.

Get started

Frequently asked

The questions every self-hoster asks first.

Is any of my data sent anywhere?

No. TravStats parses booking emails, stores flights, and renders maps entirely on the server you run it on. No telemetry. No analytics. No cloud account. The only outbound traffic by default is to fetch map tiles from OpenStreetMap-compatible tile servers — and even that can be self-hosted if you prefer.

Can I run TravStats offline?

Yes. With a self-hosted tile server (or pre-cached map tiles), TravStats has zero dependency on any external service. The map and globe both work air-gapped — perfect for a homelab on a private network.

What happens if TravStats the project is abandoned?

Your data lives in a Postgres database in a Docker volume on hardware you own. Nothing about that changes if the project goes quiet. The schema is documented; the JSON-export feature lets you dump every flight and cruise to a portable format any time.

Do I need a public domain or static IP?

No. TravStats is happiest at http://travstats.lan:3010 on your local network. If you want HTTPS or remote access, a Cloudflare Tunnel or Tailscale link is the friendliest option — both work without exposing ports.

How much disk space does this use after years of flights?

Tiny. A flight record is a few kB; even thousands of flights stay well under 100 MB of database. The Docker image itself is around 200 MB. No video, no images, no blobs.

Can I import from FlightDiary, OpenFlights, or a CSV?

Yes. Since v1.5, TravStats ships three dedicated importers: a Flightradar24 importer that takes the unmodified my.flightradar24.com CSV export, a universal CSV mapping wizard that auto-detects column headers (OpenFlights, FlightDiary, custom spreadsheets) and shows a preview before commit, plus an Excel re-import for round-trip edits. Details in the User Guide → Import & Export; FlightDiary column mapping is on the comparison page.

Is there an iOS or Android app?

Not yet. The web UI is responsive and works well on mobile; you can add a home-screen icon to make it feel native. A proper PWA install path is on the roadmap.

Documentation

Everything you need, in the wiki.

From your first docker compose up to the API — the docs are part of the project. Open source, versioned, no tracking.

Full overview in the wiki — searchable, with sidebar and full-text search.