Flight Tracker
Track an aircraft from an OpenSky state-vector snapshot and verify callsign or ICAO hex matches before comparing position, motion and freshness.{{ summaryTitle }}
{{ summaryLine }}
| Flight | ICAO24 | Altitude | Speed | Range | Freshness | Focus | Copy |
|---|---|---|---|---|---|---|---|
| {{ row.flight }}{{ row.country }} | {{ row.icao24 }} | {{ row.altitude }} | {{ row.speed }} | {{ row.range }} | {{ row.freshness }} |
| Check | Status | Evidence | Next action | Copy |
|---|---|---|---|---|
| {{ row.check }} | {{ row.status }} | {{ row.evidence }} | {{ row.action }} |
Tracking notes
- {{ item.title }}{{ item.detail }}
A dot in an aircraft feed is a recent observation, not an itinerary. It can show a transponder address, broadcast callsign, position, altitude, speed, and direction at one moment. It usually cannot confirm the departure airport, destination, passenger flight number, schedule, delay, owner, or future route.
Identity needs more than one clue. An ICAO24 address is a six-character hexadecimal identifier assigned to an aircraft transponder. A callsign is broadcast operational text and may be absent, mistyped, reused, or formatted differently from the flight number printed on a ticket. Position and origin-country fields can help reject a poor match, but they do not turn a partial callsign into proof.
| Clue | Useful for | Important limit |
|---|---|---|
| ICAO24 | Matching one transponder address | It identifies the aircraft address, not the passenger itinerary |
| Callsign | Finding broadcast flight identity text | It may be blank, stale, or different from the marketed flight number |
| Last contact | Judging how old the state is | Even a recent state is still a snapshot |
| Position and motion | Checking whether the aircraft fits an expected area | Coverage gaps and missing fields can interrupt the picture |
Air-traffic data arrives unevenly. Ground stations, multilateration coverage, aircraft equipment, terrain, and provider processing all affect which fields appear and how recently they were updated. Altitude may be geometric or barometric, while the position source may be ADS-B, multilateration, another supported category, or unknown.
Searching near an airport reduces noise, but it does not prove that a candidate departed from or will land there. A regional snapshot can include overflights, ground traffic, diversions, and unrelated aircraft within the same broad area. A global scan can be much noisier and may be constrained by provider availability or rate limits.
Use public aircraft tracking as situational context. For operational, safety, legal, or time-critical decisions, confirm the aircraft through an appropriate authoritative source and never rely on one public state vector alone.
How to Use This Tool:
Start with the strongest identifier available, then keep the search area narrow enough to make a fallback obvious.
- Enter a broadcast callsign such as
DAL84or a complete six-character ICAO24 address when known. - Choose Region and set the nearby center and radius when the operating area is known. Use Global only when a regional scan would exclude the aircraft.
- Set the Candidate cap to control a noisy result. All matched retains up to 60 candidates after matching and sorting.
- Choose Track flight. The request loads a fresh OpenSky state-vector snapshot, then identifier matching and candidate selection happen in the browser.
- Confirm the Match badge, last-contact age, coordinates, altitude, speed, and heading together. If the result is a fallback, narrow the region or use the full ICAO24 address before sharing it.
Interpreting Results:
Identifier means the entered text appears in at least one returned candidate's searchable identity fields. Fallback means no such candidate was found, so the most recently contacted aircraft in scope was selected instead. A fallback is a browsing lead, not an identity match.
Contact freshness deserves the first check. The local review labels are recent at 90 seconds or less, aging from 91 through 300 seconds, and stale above 300 seconds. These are comparison cues used by this tracker, not official OpenSky validity guarantees.
- Read altitude, speed, vertical rate, heading, and On ground together; one field can be missing or lag another.
- A mappable coordinate says only where the returned position lies, not where the flight began or will end.
- The origin-country field describes the ICAO24 registration authority context, not necessarily the operator, route, or occupants.
- Refresh before acting on an aging or stale contact, and compare another source when identity matters.
Technical Details:
OpenSky state vectors publish identity, time, position, and motion fields in a fixed array. A returned snapshot is normalized into candidate records, recent contacts are sorted first, and matching is performed against uppercased callsign, ICAO24, squawk, and origin-country text.
Formula Core
OpenSky supplies altitude in metres, ground speed in metres per second, and vertical rate in metres per second. Display units use fixed conversions while full precision remains available to later comparisons.
Geometric altitude is preferred when present; otherwise barometric altitude is used. Heading is normalized to 0 up to but not including 360 degrees. Contact age is the snapshot epoch minus last-contact time, with negative values bounded to zero.
Regional range uses the haversine great-circle distance from the chosen center, with an Earth radius of 6,371 km.
Latitude φ and longitude λ are converted to radians before the formula is applied; R is 6,371 km.
Transformation Core
| Stage | Rule | Consequence |
|---|---|---|
| Regional request | Convert the center and nominal radius into a latitude-longitude bounding box | The provider query is rectangular, so a corner can lie farther than the nominal radius |
| Normalize | Discard malformed rows; retain missing measurements as unavailable | Candidates can remain usable without every motion or position field |
| Order | Sort by last contact, then by speed when contact times tie | The freshest candidate appears first |
| Match | Keep rows whose searchable text contains the entered identifier | A partial callsign can match several aircraft |
| Fallback | When no identifier match exists, retain the sorted scope instead | The first fallback is recent, not necessarily related to the identifier |
The regional center accepts latitude from −90 to 90 and longitude from −180 to 180. Radius accepts 20 to 2,000 km, the candidate list is capped at 60, and auto-refresh accepts intervals from 15 to 300 seconds.
Accuracy and Privacy Notes:
Live requests depend on OpenSky coverage, availability, and rate limits. Missing aircraft or fields do not prove that an aircraft is absent, grounded, or no longer operating.
- The regional bounding box, or a global-scope choice, is sent through the flight data service to OpenSky. The entered identifier is used for matching in the browser and is not included in that provider request.
- Auto-refresh repeats the same external scope request at the selected interval and runs only after a live result exists.
- The fixed example is local demonstration data and is never current traffic.
- Opening the map link sends the selected coordinates to OpenStreetMap in a new page.
- Do not use this public snapshot for collision avoidance, dispatch, emergency response, or another safety-critical purpose.
References:
- The OpenSky Network API Documentation, OpenSky Network.
- OpenSky REST API, OpenSky Network.
- ADS-B In and Out, Federal Aviation Administration.