Aura's Den



METAR and TAF - The language of aviation meteorology

Posted 9 January 2025

Or, well, one of the languages, anyways.

Of all the ways to communicate meteorological data in a machine-readable fashion, METAR is probably one of the easiest to understand. METAR is a standardized way to communicate observation data most commonly used in aviation. It's often used alongside TAF (the Terminal Aerodrome Forecast), a directly related means of communicating forecast data. You probably won't ever need either, but I figured I'd give you a lesson in the two anyways using the following METAR string and TAF data from 08 June 2022:

KGKY 081353Z 18012G25KT 10SM BKN021 27/22 A2985 RMK AO2 SLP097 T02670217 KGKY 081401Z 0814/0912 19012KT P6SM FEW025 BKN250 TEMPO 0814/0815 BKN025 FM081600 01015KT P6SM VCTS SCT050CB BKN100 FM082100 07009KT P6SM SCT250

First, let's talk about why you might want to use METAR and TAF. The most obvious reason is if you're a pilot. As alluded to in the title, these are extremely important in communicating meteorological data in aviation. The International Civil Aviation Organization (ICAO) is one of the primary bodies behind the standard, alongside the World Meteorological Organization. METAR and TAF are part of VOLMET broadcasts which provide weather data for in-progress flights. And, if you choose to get weather info from the US's Aviation Weather Center, you'll be getting it in these format. It is the standard for aviation weather data.

The other reason you might want to use them are for machine-readable storage of weather observations and short-term forecasts. While BUFR, the Binary Universal Form for the Representation of meteorological data, does exist, it's substantially more complex and, as the inclusion of "Binary" likely suggests, it isn't easily human-readable. So, if you'd like to work with observation data, METAR provides a much simpler, human-readable method to do so, or at least a reasonable starting point for your own storage format.

So, then, how do they work? Let's start with the METAR string. Each section represents a different bit of data. The first chunk, KGKY, tells you the airport where the data was collected. In this case, KGKY is Arlington Regional, located in north Texas. Next up, 081353Z, is the date and time. The first two digits, 08 tells you the day of the month. Since this is from June 2022, as mentioned, this means it's from 08 June 2022. The last four digits, 1353, is the time, with the Z indicating it's in UTC or "Zulu time". Since north Texas was in daylight savings time at the time, CDT or UTC-5:00 ("UTC minus 5 hours"), this data was from 08:53 local time.

Next up is wind information. The first three digits, 180, is the direction the wind is blowing in degrees off north. Note that it goes clockwise, with east being 90° and west being 270°. In this case, winds are directly from the south at 180°. The next two digits, 12, is the wind speed in knots, as represented by the KT at the end. Internationally, wind speeds are given in meters per second, and so that gets replaced with MPS. In this case, we also have wind gusts, as represented by G25. So, at the time, winds were at 12 knots gusting up to 25, or 6 meters per second gusting up to 13.

If winds are from varying directions, you may see two different things. First, the wind direction may be replaced with VRB. Second, after this chunk, you'll see a second chunk giving the two directions it's varying between. For instance, here, if winds were varying between 170° and 210°, the entire thing would be 18012G25KT 170V210.

After wind is visibility. 10SM tells us that the visibility is 10 statute miles (SM) or more. Outside the US, this is given in meters, capping out at 9999. Additionally, in the US, visibility under a mile is given as a fraction, such as 1/2SM.

At this point, weather codes, if any, would be given. Here, we have no weather codes. I won't give a full listing, but I will give some examples. Part of it is a descriptor. VC means in the vicinity. FZ means freezing precipitation, such as FZFG for freezing fog. SH and TS, showers and thunderstorms respectively, can be either descriptors, such as TSSN for thundersnow, or weather codes of their own, such as VCTS for thunderstorms in the vicinity. The second part, weather type, could be any number of things. It could be precipitation, like DZ for drizzle, RA for rain, SN for snow, and GR for hail. There are things that obscure vision, like FG for fog that brings visibility under 1 statute mile/kilometer, HZ for haze, and FU for smoke. Finally, there are other things like SS for sandstorm, SQ for squall, or FC for funnel cloud. And, finally, the code can be prefixed by either + for heavy intensity or - for light intensity, such as +VCTS for heavy thunderstorms in the vicinity.

After the weather codes is cloud coverage. It's given either as a code for clear or a code representing how many oktas (eighths of the sky) are covered along with the height of that cloud layer in hundreds of feet. Note that it is always in hundreds of feet, regardless of where you are in the world. Here's the codes you can get:

CLR
No clouds under 12,000 feet (US) or 25,000 (Canada). Typically only used in North America and means the report is at least partially automated.
SKC
Sky clear. In North America, this means the report is human generated.
NCD
Nil clouds detected. Means the report is fully automated.
NSC
No significant clouds. Not used in North America.
FEW
1 to 2 oktas
SCT
Scattered; 3 to 4 oktas
BKN
Broken; 5 to 7 oktas
OVC
Overcast; full cloud coverage
VV
Clouds cannot be seen and Vertical Visibility is given instead.

Note that even though CLR, SKC, NCD, NSC are all technically different, they all just means there are (probably) not any clouds. There are also a few codes that come after the height:

TCU
Towering cumulus
CB
Cumulonimbus

Here, we have BKN021. So, we have broken clouds, 5 to 7 oktas of the sky covered, and the 021 means the cloud layer is at 2,100 feet (about 640 meters).

The next part, 27/22 is the temperature and dew point in degress Celsius. Thus, it's 27°C with a dew point of 22°C. If one or both are below freezing, the temperature is prefixed with an M. Thus, M02/M12 means it's -2°C with a dew point of -12°C.

The last part in the main section is the altimeter setting, or barometric pressure. In the US, this is given in inches of mercury, where the first two digits are the digits before the decimal and the last two are the digits after the decimal. Thus, A2985 means the pressure is 29.85 inHg. Outside the US, the A is replaced with a Q, and it's given in hectoPascals. So, this would be given as Q1011, for 1011 hPa or 101.1 kPa.

The remarks section, RMK and everything following it, are only used in the US and will vary from airport to airport and time to time. Let's talk about what we have here. AO2 means this report was generated by an automated station with precipitation discriminator. AO1 is similar but without precipitation discriminator. SLP is sea level pressure, given as the last three digits in hPa with a 1 slapped on the front. Here, we have 097, so the sea level pressure is 1097 hPa. T02670217 gives us temperature and dew point, this time to 1 decimal place. The two zeros here happen to be sign bits, basically. In our M02/M12 example from earlier, both of those would be 1, so it might be T10211127.

There are also things that might show up in the main block that aren't used in the US. For instance, you might get runway visual range. So, like, R04/P1500N would mean that on runway 4 (R04), runway visual range is 1500 meters or more (P1500) and not changing (N). U would mean visibility is increasing, and D means it's decreasing. You can also get runway conditions. So, 8849//91 means that for all runways (88), the runway is coated in dry snow (4), more than half of the runway is covered (9), thickness is not measurable or is unimportant (//), and the braking index is bad (91). If conditions are fine, it might note Ceiling and Visibility OK, or CAVOK. Finally, internationall METAR ends in =. So, for instance, the current conditions for 16 April 2023 at KGKY might be given in international style as:

KGKY 161853Z 3307G10MPS 9999 CLR 21/M01 Q1025 CAVOK=

Now, let's move on to that TAF. A lot of it is similar to METAR. So, those first two chunks on the first line are airport, KGKY in this case, and time and date, 14:01 UTC on the 8th day of the month. Next is the valid period. These are given as the day and hour for the start and end times. So, it's valid from 14:00 UTC on the 8th (0814) to 12:00 UTC on the 9th (0912). The rest is current conditions from the time it was issued. So, you can probably figure out by now that winds are from 190° at 12 knots, there are few clouds at 2,500 feet and broken clouts at 25,000 feet, and visibility is 6 statute miles. Here, visibility caps out at 6 statute miles, so P6SM actually means 6 statute miles or more.

TEMPO lines temporarily replace conditions in the current time period for at least half the time. Here, from 14:00 to 15:00 UTC, there may be broken clouds at 2,500 feet.

The remaining lines all start with when the conditions start. For our first line, from (FM) 16:00 UTC on the 8th, we'll get winds from 10° at 15 knots, 6 statute miles or more of visibility, thunderstorms in the vicinity, scattered cumulonimbus clouds at 5,000 feet, and broken clouds at 10,000 feet. Notice that the remainder of the line basically reads like in METAR. The other line, as you might be able to surmise, tells us that from 21:00 UTC on the 8th, winds will be 9 knots from 70°, there will be 6 statute miles or more of visibility, and scattered clouds at 25,000 feet.

There isn't one here, but you may also see a PROB line. For instance, PROB30 0817/0819 02015KT 1SM TSRA BKN015CB would mean that between 17:00 and 19:00 UTC, there's a 30% chance of thunderstorms with corresponding conditions (low visibility, clouds). Also not shown here, you might see a RMK line, as with METAR.

So, then, let's put all this together. Here's a METAR and TAF from around the time of publishing:

KGKY 091353Z 09004KT 4SM -SN BKN047 BKN055 OVC080 02/M04 A3026 RMK AO2 RAB1259E36SNB36 SLP249 P0000 T00171039 KGKY 091125Z 0912/1012 00000KT P6SM OVC060 FM091300 13003KT P6SM -RAPL OVC035 FM091600 13005KT 2SM -PLRA OVC008 FM091800 11005KT 1SM -RAPL OVC004 FM092300 03005KT 1SM -SN OVC003 FM100700 36008KT 2SM -SN OVC003 FM101000 35010KT 4SM -SN OVC004
Try to decode it, then click here for the decoding!

So, we have a METAR from Arlington Regional issued on 9 January 2025 at 13:53 UTC (7:53 CST). Winds are from the east at 4 knots. There's 4 statute miles of visibility and light snow. There are broken clouds (probably close to 7 oktas) at 4700 and 5500 feet and the sky is completely covered at 8000 feet. Temperature is 2°C with a dew point of -4°C. Pressure is 30.26 inHg.

This remarks section includes stuff we never addressed above, but we can identify AO2, so this was done by an automated station with precipitation descriminator, SLP, so sea level pressure is 1249 hPa, and T, telling us the temperature is specifically 1.7°C with a dew point of -3.9°C. As for the other two parts, RAB1259E36SNB36 tells us that rain (RA) began (B) at 12:59 UTC (6:59 CST) and ended (E) at 13:36 UTC (7:36 CST), with snow (SN) beginning at 13:36 UTC and not yet ending. The other part, P0000 means that no liquid-equivalent precipitation has accumulated yet. If 2.53 inches had accumulated (which it just might as of time of writing), it'd instead be P0253.

Our TAF was issued at 11:25 UTC (5:25 CST) and is valid from 12:00 UTC on the 9th to 12:00 UTC on the 10th (or 6:00 to 6:00 CST). At time of issuing, there were no winds, more than 6 statute miles of visibility, and it was overcast at 6000 feet. Starting at 13:00 UTC (7:00 CST), there's going to be light (-) rain (RA) and ice pellets (PL), shifting to primarily ice pellets with rain at 16:00 UTC (10:00 CST), then back to rain with ice pellets at 18:00 UTC (12:00 CST), followed by snow from 23:00 UTC (17:00 CST) onwards. The cloud level will stay overcast but move downwards to a minimun of 300 feet between 23:00 and 07:00 UTC (17:00 to 01:00 CST). Winds will be from the southeast at first, but shift north between 18:00 UTC and 07:00 UTC, with wind speeds increasing from 3 knots at 13:00 UTC to 10 knots at 10:00 UTC (04:00 CST). Finally, visibility will decrease to a minimum of 1 statute mile at around 18:00 UTC it starts increasing again at 23:00 UTC up to a maximum of 4 statue miles at 10:00 UTC.

So, there you go! Now you know how to read METAR and TAF. If you'd like to give your newfound skills a try, you can find METAR data for any airport at The US National Weather Service's Aviation Weather Center website. Why not give it a shot and see how things are at your local airport?

Keywords: Miscellany