If you are reading a temperature to compare it against something, you should know what was done to it first. This page is the whole path, including the parts that are discarded.
Every reading originates as a METAR published by the airport itself and distributed by the U.S. National Weather Service / NOAA. We do not measure anything, we do not model anything, and we do not blend sources. One station, one report, as issued.
We read NOAA's bulk cycle files — a single file per hour containing every station's latest report worldwide — rather than requesting each of our five stations separately. One request covers all of them, sent with an If-Modified-Since header so an unchanged file comes back as a 304 with no body at all. If a station is missing from the bulk file, that one station is fetched individually as a fallback.
The raw line for the station you are viewing is shown on the dashboard, unedited. Everything else on the page is derived from it, and you can check the derivation against the original.
Airports publish routine observations on a fixed schedule, and SPECIs — unscheduled special reports — in between when conditions change sharply.
We keep the routine reports and discard the SPECIs. Each station has its own schedule:
| Station | Routine reports at |
|---|---|
| San Francisco (KSFO) | :56 past each hour |
| Lucknow (VILK) | :00 and :30 |
| Wellington (NZWN) | :00 and :30 |
| Paris-Le Bourget (LFPB) | :00 and :30 |
| Shanghai Pudong (ZSPD) | :00 and :30 |
These schedules were not assumed from a specification — they were confirmed against this site's own recorded history for each station.
The reason for discarding SPECIs: a special report can catch a momentary spike that never appears in the hourly record. Including it would produce a daily high that the station's own routine record disagrees with. Anyone comparing our figure against the airport's hourly observations would find a number that does not exist there.
The temperature group in a METAR body is rounded to a whole degree Celsius. United States stations additionally publish a remarks group carrying tenths, and where that group exists we use it in preference to the rounded one.
KSFO … 13/11 … RMK AO2 SLP176 T01280106 → 12.8 °C (tenths, from the RMK group) VILK … 32/28 … Q1000 NOSIG → 32.0 °C (whole degrees — no finer figure was published)So San Francisco is stored to a tenth of a degree, and the other four to the nearest degree. That is a property of what the stations publish, not a choice we made.
Everything is stored in Celsius exactly as reported. The °F you see is computed for display using the standard formula. This is why Lucknow shows values like 89.6 °F and 86.0 °F but never 88.3 °F — those are exactly 32 °C and 30 °C, and the underlying reading only ever moves in whole degrees. Switching the unit toggle changes only the presentation; it never changes which reading is being shown.
Readings go into SQLite keyed on station and observation time, so the same report arriving twice — from the bulk file and again from a fallback fetch — is stored once. Observation time means the timestamp inside the METAR, not the time we happened to read it.
Nothing is ever rewritten. If a station reissues a corrected report for a time we already hold, the stored reading stands.
Local day and local hour are computed in the station's own timezone, not yours and not UTC. Lucknow's day boundary is midnight in Lucknow.
Data can be delayed, missing, revised or wrong at the source, and our copy inherits every one of those. This site is informational only. It is not suitable for aviation, and if you are using a figure for any purpose where being wrong has a cost, verify it against the authoritative source for that purpose rather than against us. The full terms are in the Terms of Use.