What the public comparison does today
The live network is a current-snapshot comparison of selected reports from fixed public distribution endpoints. It is evidence about those delivery paths at collection time—not a second source of official weather.
Collection is limited to METAR and SPECI content for the following ICAO stations. The scope is coded as an allow-list; requests for arbitrary station identifiers are not made by the public network endpoint.
- EFHKHelsinki
- EPWAWarsaw
- LFPBParis–Le Bourget
- EHAMAmsterdam
- EGLCLondon City
- LEMDMadrid–Barajas
- LTACAnkara
- LIMCMilan Malpensa
- ESSAStockholm Arlanda
- EDDFFrankfurt
- LOWWVienna
- EIDWDublin
Fixed endpoints, scheduled background snapshots
The public collector runs independently of page visits. Each scheduled cycle fetches the three paths in parallel: AWC and MET Norway each use one request, while NWS TGFTP uses one station file per aerodrome with no more than four NWS requests active at once.
Aviation Weather Center Data API
One JSON request for the fixed station list. The six-hour response window permits source-provided AWC receipt-interval summaries; the newest record for each station is selected by observation time, then receipt time.
https://aviationweather.gov/api/data/metar
?ids=EFHK,EPWA,LFPB,EHAM,EGLC,LEMD,LTAC,LIMC,ESSA,EDDF,LOWW,EIDW
&format=json&hours=6
MET Norway Tafmetar
One extended TAC text request for the fixed station list. Non-empty lines are assigned to an allowed station; the latest resolvable observation time per station is retained.
https://api.met.no/weatherapi/tafmetar/1.0/metar.txt
?icao=EFHK,EPWA,LFPB,EHAM,EGLC,LEMD,LTAC,LIMC,ESSA,EDDF,LOWW,EIDW
&extended=true
NWS TGFTP station files
Twelve TAC file requests, one per allowed station. The leading file timestamp is separated from the report body and retained as station-file metadata.
https://tgftp.nws.noaa.gov/data/observations/metar/stations/{ICAO}.TXT
Collection runs at a configured preview cadence whether or not anyone is visiting the site. The cadence is an implementation setting for the private technical preview, not a service-level commitment.
Each upstream request is aborted after ten seconds. A source or station failure is represented as unavailable rather than exposing upstream diagnostics.
Public pages read the latest successful snapshot from durable service storage and render its state, timestamp and evidence into the initial HTML. Browser JavaScript then checks for a newer view without withholding the server-rendered evidence.
A usable partial cycle records unavailable paths explicitly. If a cycle produces no usable source data, it does not replace the last successful snapshot; that evidence remains available, continues to age and is presented as degraded rather than current.
Freshness signalling: responses distinguish the snapshot collection time from the time a response is served and expose the resulting age. The latest successful collection time remains visible when a later cycle fails. If no usable snapshot has ever been stored, the service presents a bounded unavailable state rather than an indefinite loading state.
Every timestamp keeps its meaning
The comparison does not relabel every available time as “received.” Three clock families are exposed separately: report observation time, a source-supplied time, and Terminal Weather fetch completion.
| Path | Observation time | Source time | Terminal Weather time |
|---|---|---|---|
| AWC | obsTimeReport-specific value supplied by AWC. | receiptTimeReport-specific AWC receipt time. | fetch completionRecorded after the AWC response is read. |
| MET Norway | DDHHMMZ → UTCDerived from the TAC day-time group. | HTTP Last-ModifiedApplies to the response as a whole. | fetch completionRecorded after the text response is read. |
| NWS TGFTP | DDHHMMZ → UTCDerived from the TAC day-time group. | HTTP Last-ModifiedApplies to that station file. Its leading file timestamp is retained separately. | fetch completionRecorded after each station file is read. |
These source clocks are not interchangeable latency measurements. AWC’s observation-to-receipt interval is calculated as receiptTime − obsTime and summarised for values in the six-hour AWC response. It is explicitly not presented as station-to-user or end-to-end delivery latency. HTTP Last-Modified values describe a response or file and may reflect different upstream processing stages.
Exact identity and semantic comparison are separate
The selected source representation is preserved for inspection and fingerprinting. A second, canonical representation removes known delivery wrappers so equivalent TAC can be compared without hiding operational tokens.
The fingerprint input is the selected report string encoded as UTF-8. SHA-256 therefore detects changes in that string, including wrapper or terminator differences that canonical comparison may intentionally ignore.
- AWC
rawObas supplied in the selected JSON record- MET Norway
- The selected TAC text line
- NWS TGFTP
- The trimmed report body; the complete response remains separately available as the source response field
64 lowercase hexadecimal charactersCanonicalisation uppercases tokens, collapses whitespace, removes trailing equals signs and ignores a delivery-level METAR wrapper. Report meaning remains in the comparison string.
SPECIremains an explicit report kind.AUTOandCORare retained in stable positions.NIL, the report body and remarks remain present.- Malformed input falls back to a conservative whitespace-and-case normalisation.
METAR EDDF 151350Z AUTO 04009KT CAVOK 31/12 Q1017↓CanonicalEDDF 151350Z AUTO 04009KT CAVOK 31/12 Q1017Comparison basis: equality uses the complete canonical TAC string. When content differs, a token-level longest-common-subsequence comparison identifies tokens present only on one side. AWC is the display reference when available; otherwise the first available path is used. The token diff explains a classification—it does not alter it.
A fixed precedence, applied per station
Classification is deterministic and uses only the records present in one Terminal Weather snapshot. The rules run in the order shown below.
- 01
Incomplete
At least one expected path has no selected report, or a selected report has no resolvable observation time.
missing || undated - 02
Source lag
All three paths have dated reports, but their resolved observation times are not identical. Paths not on the latest time are labelled lagging.
unique(observed_at) > 1 - 03
Content difference
All observation times align, but more than one canonical TAC string is present.
unique(canonical_tac) > 1 - 04
Aligned
Every expected path has a dated report, all observation times match, and all canonical TAC strings match.
time = 1 · content = 1
| Element | Handling | What is not inferred |
|---|---|---|
COR | Retained canonically and exposed as a correction-present flag. | A current snapshot does not reconstruct the preceding revision. |
AUTO | Retained canonically and exposed as an automatic-report flag. | No judgement is made about sensor or station quality. |
SPECI | Retained as report kind and in the canonical representation. | No scheduled-report cadence is assumed. |
NIL | Retained in TAC and exposed as a NIL-present flag. | NIL is not treated as a missing source response. |
Resolving a day-time group at month boundaries
TAC carries a day, hour and minute—not a month or year. The collector resolves that group before paths are aligned.
DDHHMMZA six-digit day-hour-minute group ending in Z must match the accepted syntax. Calendar validity is checked when timestamp candidates are created.
M−1 · M · M+1Valid UTC candidates are constructed for the previous, reference and following month.
nearest(reference)The valid candidate closest to the path’s reference time becomes the observation timestamp.
AWC obsTime is used directly when valid. TAC resolution is only a fallback, referenced to Terminal Weather fetch completion.
Response Last-Modified, falling back to Terminal Weather fetch completion.
Leading station-file timestamp, then file Last-Modified, then Terminal Weather fetch completion.
A malformed or calendar-impossible group resolves to no time and therefore makes the station comparison incomplete. In the current implementation, the effective comparison identity is the station being evaluated plus its resolved UTC observation time. No standalone permanent observation key or event identifier is emitted by the public endpoint.
What a snapshot can—and cannot—show
The public comparison is designed to expose investigatory signals. Its classifications require context and are not assertions of provider fault.
Paths are not independent observations
The three endpoints may carry the same underlying official report or depend on overlapping dissemination infrastructure. Agreement is distribution-path agreement, not independent meteorological corroboration.
Transitions can occur between snapshots
Scheduled collection is not a lossless record of every upstream transition. A transient difference may appear and disappear between collection cycles without being captured.
Last-Modified is not receipt time
Response-wide and file-level modification times cannot be treated as equivalent to AWC’s report-specific receipt time or to first receipt at Terminal Weather.
Brief lag may be normal dissemination
Because the current rule has no grace period, a routine handover between observation cycles can produce a source-lag classification.
Known wrappers are intentionally ignored
Case, repeated whitespace, trailing equals signs and a delivery-level METAR token do not create a content difference. Their exact selected representations can still produce different fingerprints.
Incomplete is not a station-outage claim
The label can result from a path timeout, non-success response, unexpected response shape, missing station line or unresolvable timestamp.
Durable latest snapshot, not an evidence archive
The public collector retains the latest successful usable network snapshot in durable service storage so the website and API can read it independently of visitor traffic. A newer usable cycle replaces that current snapshot; the public service does not expose queryable historical observations or correction chains.
Event objects in the product preview are derived from the latest durable snapshot and are explicitly labelled current-snapshot; they are not proof that an event was observed and retained as part of a historical chain. Retained evidence history may be evaluated with future pilot partners only after storage duration, security controls, permitted data use and upstream licence terms are agreed. No public historical-retention commitment is currently made.
Primary source documentation
The public paths remain attributed to their operators. Terminal Weather Services is an independent comparison service and is not affiliated with or endorsed by these organisations.
- 01NOAA Aviation Weather CenterOpen source documentation ↗
Data API documentation
- 02Norwegian Meteorological InstituteOpen source documentation ↗
Tafmetar API documentation
- 03NOAA National Weather ServiceOpen source directory ↗
TGFTP METAR station directory