About Vatlytics

Vatlytics is a statistics site for the VATSIM flight-simulator network. It reads VATSIM's public data feed, which is normally updated about every 15 seconds, and turns those current-state snapshots into server-rendered activity, flight, airport and controller views.

How movements are counted

Departures and arrivals are detected from observed groundspeed changes, not from filed flight plans. The detector treats an aircraft as airborne at or above 80 knots and on the ground below 30 knots. Speeds between those thresholds preserve the last stable state, and a transition must appear in two consecutive feed snapshots before it is accepted.

An accepted movement is assigned only to the nearest airport within 5 nautical miles. A filed but unflown flight therefore produces no departure or arrival, and an aircraft that first connects while already airborne can produce an arrival with no departure. A flight page may label the nearest airport and distance at that first airborne observation as inferred origin context; this display-only context is excluded from movements and every statistic. This deliberately conservative method may produce different totals from other sites.

Reconnects and flight boundaries

Consecutive sessions can be presented as one flight when the same aircraft reconnects while airborne on both sides of a short gap and the continuity checks pass. A recorded landing always ends a flight, so a quick turnaround remains a separate flight.

Event statistics

Published event pages and the custom event view use the same definition: a flight participates when it has a detected movement at a selected airport inside the inclusive UTC window. Headline departures and arrivals count movements; unique flights and pilots are reported separately. Custom views accept up to 10 known ICAO airports and a window of at most seven days.

Historic traffic map

The historic map uses permanent compressed tracks for finished flights whose observed session spans the selected UTC instant. It decodes only those overlapping flights, picks the nearest real observation within 60 seconds and never interpolates a position. Flights that are still connected use the same bounded per-flight lookup in retained raw positions. Raw positions remain subject to seven-day partition retention; finished tracks are retained long term, so that limit does not bound historic map dates.

The earliest selectable instant is computed from the first stored flight observation. Vatlytics cannot show an earlier time because it has no underlying flight data. Each request caps overlap candidates at 3,000 and labels the result if that safety bound is reached.

How controller time is counted

Vatlytics retains every station session from the feed but counts only genuine controller sessions in ATC position and member controller-time statistics. Entries from the feed's ATIS array, callsigns ending in _ATIS, and facility 0 observer connections are excluded from controller totals. They remain recorded data; ATIS is an automated broadcast and observers do not provide ATC service.

The feed's facility value is authoritative. A session with a real, positive facility still counts as a controller when its frequency is 199.998, because that value can represent a transiently missing frequency and does not erase the controlling facility.

Times and API

All dates and times on Vatlytics are UTC. Developers can explore the read-only endpoints in the API documentation. Track geometry uses numeric tuples whose positional values are named by the response's fields header.

Aggregate visitor counts

Operational dashboards estimate visitors online during the last five minutes and unique visitors during the last 24 hours. Only rendered page views count. The estimate uses a process-salted hash of the resolved IP address and browser user-agent that remains in bounded memory, expires automatically and is never stored. A separate aggregate counter classifies each page view into one of seven fixed browser, bot or unknown user-agent families without retaining the raw header. These measurements use no cookie or client-side storage, and the unique-visitor estimate resets whenever the web process restarts.