PERSONAL PREVIEW · Data: adsb.fi · Personal, non-commercial only. Not for DHL / workplace operations. EXITPUBLIC TRACKINGSTARTINGEMA DHL— currentAGE UNKNOWNAutomatic public connection; NMIV is optional.
CONNECTING TO AIRCRAFT DATAadsb.fi · HTTPS
Waiting for the first actual response. No demo aircraft are inserted.
Independent source view
Open the supplier’s map with the currently selected operator prefixes within 25 NM of EMA. This is a separate page: individual targets, exclusions and our notifications are not transferred. Aircraft beyond 25 NM are hidden in this companion page. It may still show local flyovers; it is not a verified EMA timetable. Our main tracker continues following discovered aircraft beyond EMA.
Select an operator first. Individual flight rules are not sent to this external map.
Device settings
adsb.fi only; no paid fallback, no NMIV credentials. STOP also saves AUTO OFF. Startup preferences are separate from profile exports. If storage fails, only the current session can remember STOP.
Map places · offline reference
Layer choices apply to this screen, not the aircraft filter.
Reference data and accuracy
UK labels show airports; Ireland and Iceland also retain city references. IOM / Ronaldsway, Guernsey and Jersey reference coordinates: Isle of Man Airport and NATS UK AIP. Airport centres only; the existing AIRPORT layer controls their square markers.
UK centres are rounded orientation references. Capitals use the bundled countryinfo reference with reviewed corrections and separate multiple seats. The catalogue is not a complete independent current audit. Disputed designations are labelled in the details. Some reopening airport sites are search-only. Aircraft labels take priority; hidden place labels remain searchable. Static points never influence AUTO FIT, flight identity or notifications.
Ireland and Iceland populated-place centres: GeoNames, CC BY 4.0. Approximate WGS84 orientation points, retrieved 26 October 2026.
Screen power
TV / WALLBOARD
TV DISPLAY prevents accidental editing. It is not an access-control or encryption mechanism. Imported operational data is hidden on TV unless separately allowed. Native TV APK and a physical remote remain to be tested. On TV, Up/Down changes a selected dropdown value; Left/Right leaves the dropdown. Home is never intercepted.
Public observations are not an operational movement feed. Production-use arrangements, coverage and the Android transport still require acceptance. Foreground detected events are not official operational times. Verified runway/stand zones are required for landing, off-block and on-block qualification. Freshly observed aircraft remain tracked during long flights, without a six-hour cutoff. A target expires after 1 hour without a new measured position or matching response (6-hour cap only for entries without any measurement time). Last-known markers are shown for at most 30 minutes and excluded from AUTO FIT.
FOREGROUND MONITOR · waiting for public observations
Landing / stand alerts need verified zones.
Aircraft stay visible in the air and outside the EMA discovery circle while their track is active. Detection uses new measurements, not a schedule or a moving animation.
Sound requires a click. System permission is never requested automatically.
Alert settings for current profile
Settings are stored on this device when available. They do not grant system permissions.
Checking local history storage…
History on this device
Saved flight identities are not encrypted by this web app. Use a private device. Reopened history is marked RESTORED and stays silent: no old sound, notification, map marker or new source event. This does not resume a detector across a data gap. Turning this off deletes the saved archive; the live session remains available.
Bounded history, maximum 500 events. Storage status shows whether it survives closing. Restored history never alerts again. ACK means reviewed here, not an official movement confirmation.
Detection rules and airport zones
Two distinct samples at least 10 seconds apart; source positions no older than 90 seconds; gaps over 150 seconds create a new baseline. These settings need calibration against EMA coverage. Repeated cached data never counts twice.
Speed > 0 kt gives MOVEMENT after coherent displacement, not certain pushback. AIRBORNE needs a ground-to-air transition near EMA, speed and climb evidence. Raw barometric > 5 ft is not height above the runway. An aircraft already in the air at startup gets a marker, not a false takeoff alert.
RUNWAY / STAND ZONES NOT VERIFIED · LANDED, OFF-BLOCK and ON-BLOCK qualification unavailable. 0 kt is only STOPPED; missing data is never zero.
Landings need earlier airborne observations and a verified runway transition. Estimated on-block additionally needs observed landing, taxi-in and 60 seconds stationary inside a verified stand. Field ages for ground/speed are not separately supplied by this provider; confidence is limited.
No saved zone approval loaded.
No airport polygons are invented or loaded from the internet automatically. A JSON assertion is not independent verification. TEST zones are rejected in live mode. Zones expire at their stated valid-until time.
MAP OPEN monitoring only. Closing, hiding, sleeping or force-stopping the app may stop monitoring. Native Android notifications: plugin source is prepared; APK compilation and device delivery remain unverified. A background monitoring service is not implemented. No automatic email, Teams or MVT.
NO LIST · NO LIVE FEEDImport your operational selection. No sample flights are loaded automatically.
Device storageOnly the accepted list is saved. DEMO, pasted source text and login details are not saved.
Checking device storage…
Aircraft positionsadsb.fi · Personal, non-commercial only · manual start
Not connected
Connection details / load a position capture
Only aircraft hex codes or registrations from your accepted list are requested. No NMIV login, route, cargo data or cookies are sent. One request at a time, at least 10 seconds apart and at least 60 seconds before repeating an aircraft. Large selections refresh more slowly. STOP, changing the list, DEMO and hiding this page pause the feed.
A captured file is not a live feed. TEST captures are accepted only with a TEST list. Unknown-age positions are not drawn. Network/CORS errors never disable security. The optional desktop launcher uses a fixed, authenticated local relay; the public browser extension requests only the provider host permission.
Flight listNo list importedSource capture: not supplied
PositionsNot connected · P04 / P05 pendingNo location is inferred from a timetable.
PC / phone syncNOT_CONNECTED · setup in CONNECTIONSNo PC connection · check device save status.
Where are our flights?
REGIONAL VIEW
No aircraft positions yetEMA is an airport pin, not an aircraft.
↑ N
INBOUNDOUTBOUNDAIRCRAFT ONLY0 aircraft positionsMade with Natural Earth · local reference
Orientation only, not a runway or stand chart. Near EMA changes the map view, not your flight list. Drag to pan; on phones, vertical gestures scroll the page. Arrow buttons also pan. Use the mouse wheel to zoom at the pointer; + / − and keyboard controls also work. Places are local reference points.
Flight details
Select a flight from the list or a demonstration marker.
No flight selected. Import checks, source dates and unresolved times remain visible.
Optional · mark the current leg manually
This annotates an already matched aircraft, not an ambiguous identity. It is not independent confirmation, expires, and is never restored from a backup.
The P01 importer is retained. After you accept the preview, MAP & FLIGHTS shows the accepted list. No positions are invented. Your previous list is preserved if validation fails.
Local import · EMA inbound / outbound
EMA Flight Tracker
Created by Lukasz Myszynski
P01 · Import workbench · v0.1.0
IMPORT · NO LIVE CONNECTIONNo NMIV connection · No positions · No APK in this packageOffline · No data is sent
Your flight list, checked first.
Paste a table or open CSV, TSV or JSON. Check the proposed changes, then accept them. Nothing is applied automatically.
Session only: export the accepted list before closing. Automatic save/recovery is planned in P06. This is an import test tool, not an operational tracking or flight-safety system.
1
Choose your source and scope
Capture time, completeness and clock-only dates
2
Load or paste the list
Supported columns and dates
Required: Flight, From, To. Date can come from the selected operational date. Optional: Reg, Hex, MovementId, Direction, Status, OurFlight, RotationLink, STA, STD, ETA, ETD, ATA, ATD and a Date column for each time (for example STADate). This is a generic importer, not yet a reader of an actual NMIV table.
Dates: YYYY-MM-DD or DD/MM/YYYY. Full event time: 2026-10-17T00:20:00+01:00. Clock-only: 00:20 or 0020. Missing/undated time remains unresolved. Ambiguous local times go to REVIEW. Unknown columns are shown as ignored and are not stored.
JSON accepts flat row objects or an exported ReadSnapshot v1. Reimport with the same date, scope ID, direction, filters and TEST/IMPORT mode as its source. Imported files never authenticate an NMIV session.
Ready. Select the source date and confirm your scope.
3
Review before applying
Action
Flight / direction
Route / registration
EMA time / detail
4
Accepted flight list
No accepted source. Nothing has been imported.
Your accepted flights will appear here. No sample data is loaded automatically.
Flight / direction
Route / registration
Source date
EMA event times
INBOUND and OUTBOUND are separate movements. A registration is not proof that a future flight is already airborne. Aircraft matching is a later package.
Connections · controlled setup
PUBLIC MAP · PHONE + TV
One visible source fetches aircraft and detects events. Up to two verified viewers receive the same public positions and event IDs. No NMIV records or passwords are shared. Legacy roster pairing below remains separate.
NOT PAIRED · choose an allowed device.
Compare the complete code on both screens: NOT AVAILABLE
v3 public pairing only, separate from v2 roster codes. First received history and any history after a gap are silent. A lost source stays STALE: viewers never start their own API requests automatically. A new pairing is currently required after closing or hiding either page; persistent trusted reconnect remains unfinished.
NMIV AUTO and Android device acceptance are still pending. These controls do not log in, store NMIV credentials or change another application.
Check this device · offline
Run this first when setup fails. It checks available browser features and summarises connection states without sending anything. It does not read your flight list or pairing codes.
Not run. No network or storage test starts automatically.
Review the report before exporting
Check position connection · on this device
One authorised request to adsb.fi, using this browser or this APK. This does not change your list or map. Stop normal position polling and receiving first. The provider receives the entered aircraft identifier.
Not tested on this device. No background check runs.
The report omits aircraft identifiers, positions, flight lists, cookies and raw network errors. An HTTP success alone does not confirm coverage or production approval.
Selected-table follow · desktop extension only
Bind INBOUND and OUTBOUND from their real NMIV tabs using OPEN / ATTACH TO TRACKER. This reads the selected DOM tables while open. It does not click Refresh, change filters or log in. Default mode prepares a manual review. The separate opt-in below updates only times on an unchanged approved list. A replaced table requires selection again.
No source selected
INBOUND
OUTBOUND
Use BOTH TABLES with ALL to keep arrivals and departures in the same list. Both captures must be within two minutes of each other; scope and operational date need confirmation. An existing direction-only list is not silently converted.
Automatic preparation OFF. Configure the checked source date and scope below first.
Pending updates never replace a draft already under review. Re-reading identical rows is not a source refresh; last read and locally observed change are shown separately.
The reader pauses when this tracker is hidden or closed. Background timer timing is not guaranteed. New flights, identity changes and corrections of recorded actual times always need manual review.
Update times on approved flights
First accept both tables as one ALL list. The current pair must exactly match that approved list before enabling this mode.
OFF · no automatic changes authorised.
No additions, deletions, aircraft / route / date changes, missing known times or corrections of already recorded actual times. Such a change pauses this mode and prepares a manual review. Clock-only values remain undated. This is not proof of server freshness or a verified operational feed.
Opening the import editor, changing the source, stopping FOLLOW, hiding the tracker or receiving from a PC stops this permission. It is not saved or restored. UNDO LAST IMPORT also reverses the last automatic list update.
NMIV selected-table capture
Use the supplied desktop extension on the real NMIV tab, then load its capture here. Always partial; source dates and ownership need review.
Clock-only values stay unresolved. A/B and LND are not substituted for ATD or ATA. Review and accept changes in IMPORT LIST.
Direct PC / phone sync · device tests pending
No cloud relay or signaling server. Exchange two pairing codes privately. Codes contain local network information, not flight lists. Both devices must display the same check code.
File transfer is optional. Load an invitation on the phone, or the matching phone answer on the PC. It only fills the code box; you still confirm both screens.
Pairing files contain private network information and expire with the original invitation. Transfer them privately, delete them afterwards, and never use them as a flight-list backup.
Check code: NOT PAIRED
Automatic sharing OFF. No background queue.
Not connected. Both devices must run v0.5.1 or newer (pairing v2). A sent list is confirmed only after receiver acceptance. Pairing expires after five minutes. No camera or microphone is used.
Receive mode pauses local position queries. Source timestamps are never refreshed by sync. Changed scope/day requires new pairing; empty lists never erase the receiver. Closing or suspending this page may disconnect it.
Only our flights · how to use v0.19.1
Open the map → your saved public profile is restored → automatic connection is attempted. Without a saved choice, EMA DHL is selected. STOP saves AUTO OFF; reconnect never overrides that choice. NMIV is optional. Importing a roster remains a separate reviewed workflow. Public positions locate aircraft, not a proven current route. API, workstation, phone and TV acceptance are pending. No APK has been compiled in this delivery.
Public profiles without NMIV
PUBLIC / OPERATORS opens a separate profile book. Select EMA DHL, WEST CARGO or MY FLIGHTS, then operators and exact targets. EXCLUDE overrides INCLUDE and PIN. IATA flight numbers are never converted to ICAO callsigns. TEST MY SELECTION is a fixed fictional filter test, not live. Public area discovery and exact aircraft tracking now use the fixed adsb.fi endpoint. Transport from your device and fleet coverage still need acceptance. Automatic profile saving is enabled by default, using a separate key and write lock; export/import profiles remain independent from the original roster. The optional reader and existing roster are reached through IMPORTED / NMIV LIST and CONNECTIONS.
Position and identity labels
AIRCRAFT ONLY means an exact hex or registration match, not an active flight. An inbound and later outbound share one aircraft marker. A recorded departure and exact callsign can supply LEG EVIDENCE, but do not independently verify a route. Conflicting identifiers produce AMBIGUOUS, with no marker. Optional manual leg labels expire within two hours and are invalidated by a changed roster.
CURRENT positions are at most 90 seconds old. POSITION · NO UPDATE points use a dashed outline and disappear from the map after 30 minutes; the roster stays. These are application display thresholds, not a safety standard. Unknown-age points are never drawn. The source timestamp, not the download time, determines position age. No timetable animation, receiver-estimated positions or plausible route lookup is used.
v0.19.1 data protection
A live single-aircraft reply is checked against the requested identity. A last-known point never borrows the current callsign, heading, speed or altitude. The receiver refuses a rollback of the source capture high-water mark even with a newer message number. To intentionally restore an older list on the phone, stop, review the backup and pair again. Android source uses one process-wide session transaction lock and the unchanged EMA1 encrypted file format; Android build and device acceptance remain pending.
Optional automatic times on approved flights
In the extension-owned tracker, first manually accept both tables as one ALL list, then separately enable automatic time updates. This lasts up to 30 minutes. Only permitted time changes on exactly those same flights are applied; new or removed flights, changed aircraft, routes, dates and corrections to recorded actual times pause for manual review. Unknown dates remain unknown. These verified time-only updates preserve already authorised position polling and original observation timestamps. They do not click NMIV Refresh or prove server freshness. STOP, opening the manual import editor, changing sources, hiding the tracker, receiver mode or expiry disables the permission. UNDO LAST IMPORT reverses the latest automatic update too. The permission is never saved in a backup.
Delivery confirmation · legacy roster pairing v2
Use v0.19.1 on both devices and create new pairing codes. A SEND is successful only when the receiver has accepted the snapshot and returned its sequence receipt. Delivery without a receipt is UNCONFIRMED, not a reason to retry automatically. STOP cancels unfinished setup and prevents late operations from restoring an old connection.
One-file Linux desktop
The self-contained Linux launcher embeds this entire tracker and its local network bridge. Run the one .run file; no browser extension, Python, Node or SDK is needed. Its browser address starts with http://127.0.0.1:, not file://. The launcher talks to the fixed public HTTPS source. It does not switch permanently to a blocked browser-CORS route after a DNS error. Internet/source availability remains required. ALL DIRECTIONS restores visibility without modifying your operators, flight classifications or STOP choice.
Live transport and costs
The source adapter uses the documented public adsb.fi v2 registration and hex endpoints. Browser HTML keeps normal CORS. Android source includes a fixed-host HTTPS plugin with default TLS validation, no cookies or redirects and cancellable bounded responses; the native plugin still requires APK/device acceptance. Actual transport from this HTML/Android and coverage remain to be verified. A free API is not a guaranteed service. adsb.fi asks users to contact the operator before production use. No paid fallback, account login or subscription is activated. The separate public mode is preconfigured to connect automatically; STOP saves AUTO OFF. Hidden/offline pages pause and resume only if AUTO remains enabled. The legacy imported-roster connection still needs separate authorisation. No login to NMIV is automated. If CORS/network access fails, keep the list and export it; do not disable security.
Reviewable offline capture
Connection details includes a JSON position-capture importer for a permitted saved adsb.fi v2 response. It is labelled FILE, never live. The sample in the ZIP is explicitly TEST. Load the P01 TEST list first to use it. VIEW DEMO remains an isolated fixed five-movement illustration; it never polls or overwrites your roster.
Keep your work
Public profiles and bounded public alert history save automatically when supported; failure is shown explicitly. Reopened history is marked RESTORED, never a new flight event, and produces no old sound, marker or source event. Use EXPORT EVENT LOG for an independent private copy. Saved zones return only after your explicit same-device review and before their expiry. The legacy imported-roster device saving starts OFF. REMEMBER ON THIS DEVICE is opt-in. The validated roster alone is saved by the existing device module; browser storage is not encrypted by this tool. EXPORT LIST creates a canonical import file. EXPORT SESSION preserves the minimal roster, its original source timestamps and small view preferences. RESTORE SESSION FILE validates everything before confirmation and replacement. Cached positions, network permission and manual labels are deliberately not restored, so old locations cannot silently become live. KEEP an independent JSON backup. UNDO LAST IMPORT restores the last accepted list and invalidates position associations.
A different UTC calendar date only prompts you to review the operational day. It never assumes an NMIV cutoff or deletes an unfinished movement. The source list, position measurements and PC/phone sync have independent status displays; a fresh aircraft position never refreshes your NMIV roster.
Map, TV and automatic start
The map remains visible while settings, operators, imports and links open in its side/bottom panel. AUTO FIT includes only current selected aircraft and waits during manual zoom/pan. TV MODE uses the same data and supports directional focus, OK and Back. PAN MAP enables arrow panning. DISPLAY starts without source editing or imported data; enabling editing or private data is a separate session action. Foreground flight-event detection and the ALERTS panel are implemented. Native APK TV, verified ground zones and physical hardware acceptance remain pending. Startup uses EMA DHL when no saved profile exists; it is a candidate list, not today’s schedule. Public discovery may include flyovers and is marked ROUTE UNCONFIRMED unless manually classified for up to two hours. Following a hex does not confirm a current flight leg.
Map and privacy
The local Natural Earth low-resolution map is for orientation, not ground movements, stands or navigation. The EMA anchor is retained from the previous release (OurAirports 52.831100, −1.328060). Near EMA changes the view without deleting flights; filters affect both map and list. The original aircraft PNG and Created by Lukasz Myszynski are retained. No official DHL endorsement or public image redistribution right is implied.