- Weather
- 9 minute read
- By The FlyFren Team
The Most Common METAR and TAF Misreads, From 1,200 Reports
What 800 real METARs and 400 TAFs from around the world reveal about where decoding goes wrong: CAVOK, metric visibility, inclusive MVFR boundaries and more.

On 18 August 2026, FlyFren audited its own METAR and TAF decoder against the National Weather Service Aviation Weather Center's parse of the same reports and found the flight category wrong on 20 percent of live observations worldwide, and on 38 percent of those outside the US. The errors had been there since March. Nobody noticed, because every one of them rendered something plausible: a color, a category, a visibility with a unit. A wrong answer that looks like a right one is the only kind that survives five months. The audit measured our decoder and nobody else's.
How the sample was built
The sample is 800 METAR and SPECI observations and 400 TAFs, one per station, pulled from the Aviation Weather Center on 18 August 2026 and frozen as the decoder's regression test. Every observation carries the day digits 18 and a time between 1040 and 1135 UTC. Of the TAFs, 399 were issued on the 18th and one on the 17th.
Alongside each raw string sits the Center's own decoded flight category, visibility in statute miles and ceiling in feet. That is the reference. A misread is any case where a decoder's category, visibility or ceiling disagrees with the Center's value for the identical string. The counts below come from a short script over the frozen files, with US stations identified by prefix (K, PA, PF, PP, PH and TJ) and percentages rounded to whole numbers.
One morning is one morning. The sample over-represents whatever the weather was doing on 18 August, when 1100 UTC was dawn in the eastern US and midday in Europe. The 20 and 38 percent figures come from the live audit, not from this set, which was frozen afterwards so the fix could be tested.
What 1,200 reports look like
| Measure | Observations (800) | Forecasts (400) |
|---|---|---|
| Stations outside the US | 514 (64%) | 244 (61%) |
| Automated (AUTO) reports | 397 (50%) | n/a |
| SPECI or TAF AMD | 44 SPECI | 30 TAF AMD |
| Visibility in statute miles | 302 (38%) | P6SM in 239 |
| Visibility as a four-digit metre group | 312 (39%), of which 219 are 9999 | 9999 in 96 |
| CAVOK | 147 (18%) | 35 |
| Visibility in kilometres (20KM) | 2 | n/a |
| No usable visibility group | 37 (33 omit it, 4 report ////) | n/a |
| Flight category per the Aviation Weather Center | VFR 582, MVFR 121, IFR 40, LIFR 20, none 37 | n/a |
| Valid period | n/a | 24 hours: 209; 30 hours: 102; other: 89 |
Every figure in the table was computed from the 800 observations and 400 forecasts frozen on 18 August 2026; the category labels are the Center's. Two rows drive everything that follows: fewer than four in ten observations give visibility in statute miles, and only 27 percent are anything other than VFR.
A decoder tuned on US reports and tested on good weather will look fine for a long time.
CAVOK is the good-news code, and it was scored as the worst
CAVOK replaces the visibility, weather and cloud groups when visibility is 10 km or more, there is no cloud below 5,000 ft or below the highest minimum sector altitude, no cumulonimbus and no significant weather (FAA-H-8083-28B, section 27.4.2.6; the WMO Manual on Codes gives the same conditions in Regulation 15.10). The NWS does not use it in US domestic TAFs.
In the sample, 147 of 800 observations (18 percent) and 35 of 400 TAFs carry CAVOK. None of the 147 is a US station, and the Center rates every one of them VFR. From the sample, Bucharest at 1130 UTC:
METAR LROP 181130Z 26011KT 230V290 CAVOK 34/09 Q1006 NOSIG
Our decoder did not parse the word. Unparsed visibility fell through to a default of zero, and zero statute miles is LIFR. The best weather a station can report was being painted purple. Nobody launches because a map is purple, but a pilot who learns to ignore purple dots will one day ignore a real one. The fix was to parse CAVOK as visibility of at least 10 km with no ceiling, and never to let an unparsed field default to zero.
Metres are not miles
Visibility is in statute miles in US reports and in metres almost everywhere else: "Most other countries use meters," as section 24.4.3.6 of FAA-H-8083-28B puts it, and the WMO Manual on Codes sets the reporting steps, with 9999 "indicating 10 km and above" (Regulation 15.6.4). In the sample, 312 observations use the four-digit metre group, 219 of them 9999. Three of the 312 are K-prefixed stations, so even the prefix is not a safe test.
The boundaries make the conversion matter.
One statute mile is 1,609 m, so the MVFR visibility band of 3 to 5 SM runs from 4,828 m to 8,047 m, and the common value 8000 lands inside it at 4.97 SM. Thirteen observations in the sample report 8000. The Center rates all thirteen MVFR. From the sample, Bengaluru:
METAR VOBG 181130Z 28006KT 8000 SCT012 SCT018 30/19 Q1013 NOSIG
In 77 of the 312 metre-group reports, visibility alone sets a non-VFR category. Before the fix, a four-digit group went unparsed (so zero, so LIFR), and a display field that carried the metre value without its unit is how 8000 metres once appeared downstream as 8,000 statute miles. A pilot who reads a 4,000 m report as 4 SM has awarded themselves a mile and a half of visibility that is not there. The post on flight categories walks through the metre boundaries in detail.
The MVFR boundary is inclusive
Marginal VFR is "ceiling 1,000 to 3,000 feet and/or visibility 3 to 5 miles inclusive," and VFR needs a ceiling "greater than 3,000 feet and visibility greater than 5 miles" (AIM 7-1-7). Exactly 3,000 ft is MVFR. Exactly 5 SM is MVFR. Our decoder tested for VFR with "less than 3,000" and "less than 5," which moves both boundary values into the wrong band.
That sounds academic until you count. Of the 800 observations, 22 sit exactly on a 1,000 ft, 3,000 ft, 3 SM or 5 SM boundary, and 12 of them are MVFR by the Center's reckoning but VFR under a strict less-than test. Six of the twelve are US automated stations reporting exactly 5SM with no ceiling, five of them in mist, like this one from the sample:
METAR KRSV 181115Z AUTO 21001KT 5SM BR CLR 16/16 A3005 RMK AO2
Another four are 9999 with a broken layer at exactly 3,000 ft, Shannon (EINN) among them. These are the days that matter. Five miles in mist at dawn is exactly the forecast you are deciding against, and a green dot says nothing to see here. The fix was a one-character change in two comparisons, and the sample now holds 22 boundary cases to catch a regression.
Three slashes mean "not observed," not "nothing there"
Automated stations outside the US fill a group they could not observe with solidi: "the group in which it would have been encoded shall be replaced by the appropriate number of solidi," four for visibility and "three or six for the cloud group" (WMO Manual on Codes, FM 15 METAR, Regulation 15.4). A cloud group like OVC049/// is an overcast at 4,900 ft whose type the sensor could not identify. Mountain stations use the same marks for a layer below station level (Regulation 15.9.1.6; FAA-H-8083-28B, section 24.4.3.9, says the height "will be coded with three solidi").
Twenty-one observations in the sample carry solidi in the body, all of them outside the US, and nine attach them to a named cloud layer. Queenstown, New Zealand, is one:
METAR NZQN 181130Z AUTO 01005KT 9999 OVC049/// 05/02 Q1031
Our cloud pattern did not accept anything after the three height digits. OVC049/// did not match, the layer vanished, and a 4,900 ft overcast became clear skies. Here the category stayed VFR, so nothing flagged. The sample report with 5000 BR SCT065/// BKN080/// BKN110/// (NCMH, rated MVFR by the Center on visibility) would have decoded to an airport with no clouds at all. The fix accepts the trailing solidi and keeps the layer, and a group that is entirely solidi is recorded as not observed, which is a different thing from none.
PROB30 TEMPO is a legal combination outside the US
In NWS TAFs the probability group is PROB30 only, for a 30 percent chance of a thunderstorm or precipitation event, and the handbook adds that "the U.S. military and international TAFs may use the PROB40 (40 percent chance) group as well" (FAA-H-8083-28B, section 27.4.2.10.3). The WMO code goes a step further and lets a probability be attached to a TEMPO group, written PROB30 TEMPO or PROB40 TEMPO; the TAF guide covers how to read the stacked qualifiers.
The sample bears the handbook out. PROB30 appears in 27 of the 156 US TAFs and 46 of the 244 others; PROB40 appears in 7, all outside the US; PROB30 TEMPO or PROB40 TEMPO appears in 19, again all outside the US, and in 10 of those 19 more change groups follow the probability group. Athens is one:
TAF LGAV 181100Z 1812/1912 VRB03KT 9999 FEW025 PROB30 TEMPO 1812/1815 5000 SHRA FEW018TCU SCT020 BKN070 TEMPO 1812/1815 12010KT SCT025 SCT070 PROB30 TEMPO 1900/1906 5000 BR SCT008
Our TAF decoder treated a PROB group followed by TEMPO as malformed and threw. The exception was swallowed, so the forecast ended at the first PROB30 TEMPO, and for the TAF above the 0000 to 0600 UTC period with 5,000 m in mist and scattered cloud at 800 ft would not have existed. A forecast that ends early does not look broken. It looks like a quiet night. The fix parses the pair as one group with a probability attribute, and the Center's parse of the 400 forecasts, 1,497 periods in all, is what the decoder is now tested against.
The day of the month is the only date a report carries
The time group of a METAR is six digits: "the day of the month is the first two digits (01), followed by the hour (19), and the minutes (55)" (FAA-H-8083-28B, section 24.4.3.3). No month. No year. Every decoder has to supply both from the clock, and ours took the day from the report and the month from the current date. Read a report issued on the 31st at 2355Z a few minutes after midnight UTC on the 1st, and the decoder stamped it with the new month, putting the observation 30 days out.
The sample cannot measure this one, since every observation in it is from the 18th, but the audit caught it on live data. The cockpit consequence is an age check that lies: a 10-minute-old report reads as a month old, or the reverse. The fix: a report whose stamped time lands more than 12 hours in the future belongs to the previous month.
When the Aviation Weather Center itself declines to categorize
Thirty-seven observations in the sample, 33 of them outside the US, have no flight category from the Center at all. Thirty-three carry no visibility group, mostly Canadian automated stations that report wind, temperature and pressure only, and four report //// for visibility. From the sample:
METAR CWBY 181100Z AUTO 11003KT 15/14 RMK AO1 SLP126 T01480143 53012
That absence is information. A decoder that quietly assigns VFR to a report with no visibility and no sky group is inventing weather. Since the fix, an unparsed visibility is undefined rather than zero, so a report like this gets no category instead of a badge. One more trap for anyone building on the feed: the Center writes the four-character string "null," not an empty field, when it declines to categorize, and 325 of 3,211 rows in FlyFren's own observation table held that literal text until the sync was corrected on 18 August 2026.
What you can check yourself
You can reproduce the counts without our files. The Aviation Weather Center data API returns current METARs and TAFs with the same decoded fields, and the patterns are plain text searches: CAVOK, a four-digit group after the wind, a cloud group ending in slashes, PROB followed by TEMPO. The 800 observations and 400 forecasts described here run as a test against the Center's parse on every change to our decoder.
Weather shown on FlyFren, including the decoded view at /tools/airport-weather, comes from the NWS Aviation Weather Center and is for supplemental use. Decode the raw report yourself before a flight, and if your tool and the Center disagree, believe the Center.
This article is educational and is not a substitute for the current regulations, the AIM, official weather briefings, or instruction from a CFI. Check the current text at the linked sources before you rely on any detail.
- Logged by
- The FlyFren Team
- Pilots and engineers building FlyFren
- Filed under
- Weather