Flight Snapshot
{{ summaryLine }}
Last seen {{ lastSeenLabel }}
{{ summarySpeed }} {{ summaryAltitude }} {{ summaryVertical }} {{ summaryHeading }} {{ originCountry }} On ground
{{ statusHint }}
Lat Lon
km
Every sec
flights
Field Value Copy
{{ row.label }} {{ row.value }}
Open OSM Open Google
# Callsign ICAO Altitude (ft) Speed (kts) Last contact Copy
{{ row.rank }} {{ row.callsign }} {{ row.icao24 }} {{ row.altitude }} {{ row.speed }} {{ row.lastSeen }}
No flights found for the current query.

                
:

Introduction:

Flight position reports are snapshots of where an aircraft is and how it is moving at a given moment, drawn from public surveillance messages and aggregated feeds. A live flight tracker by callsign helps you connect that stream to a single flight so you can see whether it is airborne, climbing, or holding on the ground.

You provide a short identifier such as a callsign, a flight number style label, or a hexadecimal aircraft address and the tool returns the freshest matching state it can find. When you limit the search to a region around a center point, the query stays smaller and the results arrive faster, which is handy when you are tracking a local departure. If you choose a global scan, expect more traffic and more ambiguity when several flights share similar identifiers.

For example, if you hear a callsign and want to confirm the direction of travel, enter it and compare the reported heading with what you observe on a map. The snapshot also shows the last contact time, so you can tell whether the feed is current or has gone quiet. Copy the coordinates into a map when you need a quick visual check of where the aircraft was last seen.

A match that looks right is still only a pattern match on public fields, so it does not prove the identity of an aircraft or confirm a flight plan. If you are sharing results, treat precise locations as sensitive and avoid using them to harass, stalk, or interfere with others.

For steadier tracking, keep your region center close to the expected route and refresh at a moderate pace to stay within public rate limits. If the data looks inconsistent, widen the region or try the hex address, then compare several updates rather than a single point.

Technical Details:

Aircraft state data is returned as a list of snapshots that include latitude, longitude, altitude, ground velocity, heading, vertical rate, and a last contact timestamp. This app treats a callsign as the primary human label and also supports matching by the International Civil Aviation Organization (ICAO) 24 bit aircraft address shown in hexadecimal.

Each snapshot is normalized into aviation friendly units and labels, then filtered by an uppercase substring match across callsign, ICAO hex, squawk, and origin country. The matching pool is sorted to prefer the freshest last contact time, with ground speed used as a tie breaker, and the top result becomes the focused flight.

Interpretation is intentionally simple: higher ground speed usually means the aircraft is moving faster over the surface, a positive vertical rate suggests a climb, and an on ground flag indicates the feed believes the aircraft is on the surface. Heading is shown in degrees and also mapped into an eight point compass direction for quick scanning.

Comparisons work best when the scope and refresh rhythm stay consistent, because the upstream feed can change between requests and coverage varies by region and aircraft. Region queries use an approximate bounding box around the chosen center and radius, so the edge of the search window is an estimate rather than a strict circle.

Core processing pipeline

  1. Select a scope, either region bounded or global.
  2. For region scope, convert center and radius into a latitude and longitude bounding box.
  3. Request the current state list from the public feed endpoint.
  4. Normalize each state row into typed fields and derived unit labels.
  5. If an identifier is present, keep only rows whose combined fields contain it.
  6. Sort by most recent contact, then by fastest ground speed.
  7. Keep up to the result cap and focus the first row as the snapshot.

Unit conversions used in the snapshot

hft = hm×3.28084 vkts = vm/s×1.943844 wfpm = wm/s×196.850394
Symbols, meanings, and units
Symbol Meaning Unit or Datatype Source
φ Latitude degrees Input or feed
λ Longitude degrees Input or feed
r Search radius km Input
hm Altitude selected for display m Derived
hft Altitude in feet ft Derived
vm/s Ground velocity m/s Feed
vkts Ground speed in knots kts Derived
wm/s Vertical rate m/s Feed
wfpm Vertical rate in feet per minute fpm Derived

Worked example

Assume one state report provides altitude 10,500 m, velocity 230 m/s, and vertical rate minus 6 m/s.

hft = 10500 × 3.28084 = 34448.82 34449
vkts = 230 × 1.943844 = 447.08412 447
wfpm = 6 × 196.850394 = 1181.102364 1181

Interpreting that snapshot, the aircraft is around 34,449 ft, moving about 447 kts over the ground, and descending at roughly 1,181 fpm.

Interpretation and mappings

Position source labels
Code Label shown Plain meaning
0 ADS-B Automatic Dependent Surveillance Broadcast position.
1 ASTERIX All Purpose Structured Eurocontrol Surveillance Information Exchange feed format.
2 MLAT Multilateration based position estimate.
3 FLARM Shown as labeled by the upstream feed.
Heading to cardinal mapping
Heading degrees Cardinal Note
0 to 360 N, NE, E, SE, S, SW, W, NW Computed by rounding heading divided by 45 degrees.

Variables and parameters

User parameters and their roles
Parameter Meaning Unit or Datatype Typical range Sensitivity Notes
identifier Substring used to match callsign, ICAO hex, squawk, or origin country text any High Uppercased and trimmed before matching.
scope Search mode enum region, global High Region adds a bounding box to the request.
center_lat Latitude of region center number −90 to 90 Medium Default 40.6413.
center_lng Longitude of region center number −180 to 180 Medium Default −73.7781.
radius_km Search radius used to build the bounding box km 20 to 2000 High Default 500, clamped to bounds.
auto_refresh Whether repeated fetches run on a timer 0 or 1 0 or 1 Medium When enabled, interval uses refresh_seconds.
refresh_seconds Timer interval for automatic refresh seconds 5 to 300 Medium Default 30, clamped to bounds.
result_limit Maximum flights kept after filtering count 1 to 200 Low Default 60, applied after sorting.

Constants used

Conversion factors and constants
Constant Value Unit Source Notes
Earth radius 6371 km constant Used for haversine distance from region center.
Latitude km per degree 111 km/deg constant Used to estimate latitude delta for the bounding box.
Minimum longitude scale 0.2 unitless constant Avoids extreme longitude expansion near the poles.
m to ft 3.28084 ft/m constant Altitude conversion.
m/s to kts 1.943844 kts per (m/s) constant Ground speed conversion.
m/s to mph 2.23694 mph per (m/s) constant Shown alongside knots.
m/s to km/h 3.6 km/h per (m/s) constant Shown alongside knots.
m/s to fpm 196.850394 fpm per (m/s) constant Vertical rate conversion.

Units, precision, and rounding

Coordinates shown for copying are rounded to four decimals using fixed point formatting and use a dot as the decimal separator. Bounding box parameters are also rounded to four decimals, while altitude, speed, and vertical rate labels are displayed to zero decimals and request latency is displayed to one decimal. Timestamps are rendered with locale aware date formatting, and relative time is rounded to whole seconds, minutes, hours, or days.

Validation and bounds

Input validation rules and UI bounds
Field Type Min Max Step or Pattern Error text Placeholder
Flight identifier text Uppercase substring match DAL84, UAL100, or A123BC
Search scope enum region, global Region (fast, default)
Center latitude number −90 90 step 0.0001 Enter valid latitude and longitude for the region search.
Center longitude number −180 180 step 0.0001
Radius number 20 2000 step 10
Auto refresh interval number 5 300 step 1
Result cap number 1 200 step 1

Inputs and outputs

Input and output formats
Input Accepted families Output Encoding or precision Rounding
Identifier Callsign, flight number style callsign, ICAO hex Matched state list and focused snapshot Uppercase substring search
Region inputs Center latitude and longitude, radius in km Bounding box parameters Four decimals in request parameters Rounded to four decimals
Status export Two column table CSV copy or download, DOCX export CSV includes header Field, Value As displayed
Matches export Ranked table CSV copy or download, DOCX export Columns include altitude in ft and speed in kts As displayed
JSON export Structured payload Copy or download Pretty printed with two space indentation Numeric values preserved as provided

Networking and storage behavior

The state list is fetched from the OpenSky Network public States API path /api/states/all with optional region parameters lamin, lomin, lamax, and lomax. Requests use a no store cache directive and rely on cross origin access, and the map view pulls standard map tiles when displayed. No explicit local or session storage calls appear in this package.

Performance and determinism

For a feed response with n states, normalization and filtering are linear in n, and the freshness sort is O(n log n). To avoid stale updates, only the latest in flight request is allowed to update the view, so repeated refreshes remain deterministic for a given response payload.

Security considerations

All feed strings should be treated as untrusted input when rendered or exported, especially in the highlighted JSON view that injects formatted markup into the page. Clipboard writes and file saves depend on browser permissions and can fail silently in restrictive contexts, and opening external map pages may share coordinates with those services.

Privacy and compliance

This page makes browser initiated requests to third party services for flight states and map tiles, and it does not transmit or store a personal account, but precise locations can still be sensitive so use and share results responsibly.

Assumptions and limitations

  • The region window is approximated using degrees per kilometer and is not a true circle. Heads-up
  • Altitude prefers geometric altitude when present, otherwise barometric altitude is used.
  • Speed is ground velocity from the feed and does not include wind correction.
  • Identifier matching is a substring search and can return multiple plausible matches.
  • Global scans can be large and may take longer to fetch and sort.
  • Automatic refresh should respect public rate limits, including guidance of about 400 calls per day.
  • Timestamps are displayed in the device locale and depend on the local clock for relative time.
  • Map display requires valid coordinates and a working tile source.
  • Export availability depends on the presence of helper utilities for CSV and DOCX generation.

Edge cases and error sources

  • Invalid latitude or longitude blocks region searches with a validation error.
  • States with missing fields or fewer than 17 elements are ignored during normalization.
  • Non numeric values, NaNs, and infinities are converted to null and omitted from labels.
  • Callsign values can be blank or padded with spaces and may appear as unknown.
  • Heading values outside 0 to 360 are normalized using modular arithmetic.
  • Very high latitudes increase longitude uncertainty, and longitude scaling is floored at 0.2.
  • Crossing the date line can make a bounding box include unexpected longitudes after clamping.
  • Rapid refresh can trigger rate limiting responses and intermittent server errors.
  • Race conditions are mitigated by ignoring older responses, but network jitter can still confuse comparisons.
  • Feed age depends on upstream last contact timestamps and can lag even when your connection is fast.
  • Highlighted JSON rendering depends on proper escaping to avoid markup injection.
  • Clipboard operations can be blocked by the browser or by permission policies.

Scientific and standards context

For authoritative definitions, refer to International Civil Aviation Organization guidance on aircraft identifiers and surveillance, standard latitude and longitude conventions used with WGS 84, and published documentation for the OpenSky Network States API.

Step-by-Step Guide:

Flight tracking works best when the identifier and the search window match where the aircraft is likely to be.

  1. Enter a Flight identifier such as a callsign or ICAO hex.
  2. Pick a Search scope and use region for faster, smaller queries.
  3. If using region, set Center coordinates near the expected route.
  4. Adjust Radius to include the area where the aircraft may be.
  5. Optionally enable Auto refresh and choose a safe interval.
  6. Set the Result cap if you expect multiple similar matches.
  7. Review the focused snapshot and confirm it looks plausible before sharing.
  8. Copy fields, coordinates, or exports when you need to reuse the data elsewhere.

Example: Track a departure by entering DAL84, keep scope set to region, set the center near your airport, and use a 500 km radius to find the freshest matching flight.

If several matches appear, increase the result cap and switch to the ICAO hex address for a cleaner match.

Use a smaller radius when you know the flight is nearby to reduce unrelated matches.
Compare two or three refreshes to spot stale data and short gaps in coverage.
Copy coordinates into a map service to sanity check the location quickly.

Pro tip: When a callsign is ambiguous, match on altitude trend and last contact recency to pick the right aircraft.

Once the snapshot looks consistent across updates, you can treat it as a reliable short term view of the flight state.

Features:

Tracks the freshest matching flight state by callsign, flight number style label, or ICAO hex.
Supports region bounded queries using a center point and radius, plus a global scan option.
Summarizes altitude, ground speed, vertical rate, heading, and last contact in a focused snapshot.
Shows a map marker for the focused flight and offers coordinate copy for external mapping.
Exports status and match tables as CSV and DOCX, and provides a formatted JSON payload.
Offers optional automatic refresh with clamped intervals to help manage request volume.

FAQ:

Is my data stored?

This package does not include explicit localStorage or sessionStorage usage. It does request flight states from the public feed and loads map tiles when the map is shown, and opening external map pages may share coordinates with those sites. The identifier you type is used for local filtering rather than being sent as a query parameter.

How accurate are results?

Accuracy depends on the upstream feed and its last contact time for each aircraft. Use the shown last contact label to judge freshness, and compare multiple refreshes when you need confidence. Altitude uses geometric altitude when available, otherwise barometric altitude, and speeds are ground speed conversions from meters per second.

What is ICAO hex?

ICAO hex is the International Civil Aviation Organization aircraft address encoded as hexadecimal, for example A123BC. It is usually more specific than a callsign because it identifies the transponder address rather than a flight label.

Can I use it offline?

A network connection is required to fetch flight states and to load map tiles. If you already have results on screen, copying values and exporting from the current snapshot may still work, but you will not be able to refresh or change scope meaningfully without connectivity.

How do I track flight number?

Enter the flight number in the same format the callsign typically uses, such as an airline code plus digits. Matching is a case insensitive substring search across callsign and related fields, so partial input can work, but adding the airline prefix usually reduces collisions.

What exports are supported?

You can copy or download CSV for both the status and matches tables, export each table to DOCX, and copy or download a formatted JSON payload. Default filenames include flight_status.csv, flight_matches.csv, flight_tracker.json, and timestamped DOCX names for table exports.

What does freshest hit mean?

When multiple rows match your identifier, the tool chooses the one with the most recent last contact time, and if those are equal it prefers the higher ground speed. This is a pragmatic guess for live tracking, but it can still pick the wrong aircraft when callsigns collide.

Is there a license listed?

The provided files do not include a license statement. If you are redistributing or embedding the tool, add the appropriate licensing and attribution text for your project and for any third party data sources you rely on.

Caveat: deployment terms are set outside this package.

Troubleshooting:

  • No flights found: Expand the radius or switch to global scan, then try again.
  • Too many matches: Use ICAO hex or reduce the region size to lower collisions.
  • Stale looking data: Check the last contact label and refresh a few times.
  • Map is blank: Confirm the focused flight has coordinates and your network allows tile loading.
  • Copy fails: Ensure clipboard permissions are allowed for the page.
  • Exports disabled: A snapshot must be selected and helper export functions must be available.
  • Rate limit errors: Increase the refresh interval and avoid repeated global scans.

Advanced Tips:

  • Tip Use a small radius during takeoff and a larger one after climb out.
  • Tip When matching by callsign, include the airline prefix to reduce collisions.
  • Tip Prefer the ICAO hex address for repeatable tracking across refreshes.
  • Tip Watch vertical rate sign changes to spot top of climb or descent start.
  • Tip Use request latency as a clue when your network is the bottleneck.
  • Tip Keep scope consistent when comparing two snapshots to avoid sampling bias.

Glossary:

Callsign
A short label used to identify a flight in radio and feeds.
ICAO hex
Hexadecimal form of the ICAO aircraft transponder address.
Last contact
The most recent timestamp reported for an aircraft state row.
Ground speed
Surface relative speed derived from feed velocity in meters per second.
Vertical rate
Climb or descent rate, shown in feet per minute.
On ground
Flag indicating the feed believes the aircraft is on the surface.
Bounding box
Latitude and longitude rectangle used to limit region queries.
Position source
Label describing the upstream method used to derive position.