A METAR and a TAF look like a dense wall of letters and numbers the first time you see one, but the format is completely fixed, every field always appears in the same order, in the same units, using the same codes. Once that structure clicks, decoding either one becomes a matter of reading left to right, not memorizing an entire report from scratch.
METAR (Meteorological Aerodrome Report) is a routine, actual, as-observed weather report issued once an hour (with special reports, SPECIs, issued between hourly reports when conditions change significantly). TAF (Terminal Aerodrome Forecast) is a forecast covering a specific airport, typically 24 to 30 hours out, issued four times a day. Both use the same fixed, internationally standardized coded format specifically so that a pilot, dispatcher, or automated system anywhere in the world can parse the report identically, without ambiguity, regardless of language.
A METAR always opens with the four-letter ICAO station identifier (e.g. KJFK), followed by a six-digit date/time group in Zulu (UTC) time, formatted as day-hour-minute followed by a "Z" (e.g. 151853Z is the 15th of the month at 1853Z). Next comes wind: a three-digit true-north direction, the speed, and units, e.g. "18012KT" means wind from 180° at 12 knots. Gusts are appended with a "G" (18012G20KT is 12 knots gusting to 20). Variable or light and variable wind is reported as "VRB," and calm wind is reported as "00000KT."
Visibility in the U.S. is reported in statute miles, e.g. "10SM" for 10 statute miles or greater, "1/2SM" for half a mile. When visibility varies significantly by direction or runway, or when it's below a usable threshold for landing, a Runway Visual Range (RVR) group may follow, formatted as "R" plus the runway number, a slash, and the visual range in feet (e.g. R28L/2000FT).
Weather, when present, is built from up to three parts in a fixed order: an intensity or proximity qualifier, a descriptor, and one or more precipitation or obscuration codes.
| Category | Codes |
|---|---|
| Intensity | − (light), no symbol (moderate), + (heavy), VC (in the vicinity) |
| Descriptor | MI (shallow), BC (patches), TS (thunderstorm), SH (showers), FZ (freezing), DR (drifting), BL (blowing) |
| Precipitation | RA (rain), SN (snow), DZ (drizzle), GR (hail), GS (small hail/snow pellets), PL (ice pellets) |
| Obscuration | FG (fog), BR (mist), HZ (haze), FU (smoke), DU (dust) |
Codes chain directly together with no spaces: "−TSRA" is light thunderstorm with rain; "+SHSN" is heavy snow showers; "BR" alone is mist.
Cloud layers are reported lowest to highest, each as a three-letter coverage code followed by a three-digit height in hundreds of feet AGL.
| Code | Coverage |
|---|---|
| SKC / CLR | Sky clear (SKC from a human observer, CLR from an automated station) |
| FEW | 1–2 oktas (up to 1/4 of the sky) |
| SCT | Scattered, 3–4 oktas |
| BKN | Broken, 5–7 oktas |
| OVC | Overcast, 8 oktas (fully covered) |
"BKN045" means broken clouds at 4,500 feet AGL. The ceiling, for weather-minimums purposes, is the lowest broken or overcast layer (scattered layers don't count as a ceiling). "VV002" indicates vertical visibility of 200 feet into an indefinite obscuration, like fog, rather than a defined cloud base.
Temperature and dewpoint are reported together, in whole degrees Celsius, separated by a slash (e.g. "22/18"). A negative value is prefixed with "M" (minus), e.g. "M03" for −3°C. The gap between the two numbers, the temperature/dewpoint spread, is a fast proxy for how close the air is to saturation: a narrow spread (a few degrees or less) signals a real risk of fog or low clouds forming, especially overnight as temperature drops toward the dewpoint.
In the U.S., altimeter setting is reported in inches of mercury, prefixed with "A" and given to the nearest hundredth with the decimal point implied (e.g. "A2992" is 29.92 inHg). This is the value you set in your altimeter's Kollsman window to read field elevation correctly at that airport.
Everything after "RMK" is supplementary detail: automated station type (AO1 has no precipitation discriminator, AO2 does), sea-level pressure, precise hourly temperature/dewpoint to a tenth of a degree, peak wind since the last report, and notable observations like lightning or a pressure trend. Remarks aren't optional trivia, some of the most operationally useful detail in the whole report lives here, but they're the last thing to decode once the main body makes sense.
A TAF opens the same way as a METAR: station identifier, then an issuance date/time group, followed by a valid period (e.g. "1518/1624" means valid from the 15th at 1800Z through the 16th at 2400Z). The initial conditions listed right after the valid period describe expected wind, visibility, weather, and sky condition at the start of that period, using the exact same coding as a METAR.
A single set of initial conditions rarely holds for 24-30 hours, so a TAF layers on change groups to describe how conditions are expected to evolve.
| Group | Meaning |
|---|---|
| FM (From) | A rapid, significant change beginning at a specific time; resets all conditions from that point, followed by a six-digit day/hour/minute |
| BECMG (Becoming) | A gradual transition to new conditions over a stated time window |
| TEMPO (Temporary) | Temporary, intermittent fluctuations expected to last under an hour at a time, during a stated window |
| PROB30 / PROB40 | A 30% or 40% probability of the stated conditions occurring during a window; never used for the first nine hours of the forecast |
KPDX 151853Z 24012G18KT 10SM FEW035 BKN060 18/09 A2994 RMK AO2 SLP132 T01780094
Portland (KPDX), observed on the 15th at 1853Z. Wind 240° true at 12 knots, gusting 18. Visibility 10 statute miles or better. A few clouds at 3,500 ft AGL, broken ceiling at 6,000 ft AGL. Temperature 18°C, dewpoint 9°C, a fairly wide spread. Altimeter 29.94 inHg. Remarks: automated station with precipitation discriminator, sea-level pressure 1013.2 hPa, precise temperature 17.8°C and dewpoint 9.4°C.
KPDX 151740Z 1518/1624 24010KT P6SM SCT040 FM160200 20006KT P6SM BKN020 TEMPO 1604/1608 3SM BR
Issued the 15th at 1740Z, valid from the 15th at 1800Z through the 16th at 2400Z. Initially: wind 240° at 10 knots, visibility greater than 6 statute miles, scattered clouds at 4,000 ft. From the 16th at 0200Z: conditions reset, wind shifts to 200° at 6 knots, broken ceiling lowers to 2,000 ft. Temporarily, between 0400Z and 0800Z on the 16th: visibility drops intermittently to 3 statute miles in mist.
Want more free guides like this one?
This guide is intended for educational and training purposes only. It is not a substitute for official FAA publications, an authorized ground school, or qualified flight instruction, and should not be used as a sole source for real-world flight planning, dispatch, or operational decisions.