- Weather
- 7 minute read
- Updated
- By The FlyFren Team
How to Read a Winds Aloft Forecast (True or Magnetic?)
Decode the FB winds aloft forecast: the 9900 code, winds over 100 knots, blank altitudes, unsigned temperatures, and true versus magnetic directions.

Winds aloft are true, not magnetic. The FB Wind and Temperature Aloft Forecast gives wind direction "in tens of degrees (two digits) with reference to true north," per section 27.2.1.1.1 of the Aviation Weather Handbook (FAA-H-8083-28B), and a Flight Service briefer reads it to you the same way (AIM 7-1-5). The ATIS and the ASOS or AWOS voice broadcast are the ones that switch to magnetic. Keep that straight and the rest of the product is a four-digit decode you can do in your head.
What the FB product is, and why it still matters
The FB forecast is a computer-prepared table of wind direction, speed and temperature at fixed altitudes for named points across the CONUS, Alaska, Hawaii and the western Pacific, produced by the National Weather Service's NCEP four times a day and never amended (FAA-H-8083-28B, sections 27.2.1 and 27.2.1.1). The Aviation Weather Center publishes it on its Wind/temp data page, labeled a legacy product, and its help page calls it "the official FB Winds product from NCEP," covering 3,000 to 53,000 ft out to 6, 12 and 24 hours.
The handbook is blunt about the product's age. It calls the coded table "archaic" next to model output: the points are "separated by about 100 to 150 mi," and a forecast that goes wrong is "not updated for up to six hours." Fair criticism. It is also why the table is still worth reading. It is the format your knowledge test, your briefer and most navlog templates assume, and it drills the one habit every winds source shares: turning a true wind into a magnetic heading without mixing the two.
How to decode a winds aloft line
Each entry is DDff+TT: two digits of direction in tens of degrees true, two digits of speed in knots, then the temperature in degrees Celsius with its sign (FAA-H-8083-28B, section 27.2.1.1.1). Four digits for the wind, three for the temperature, no spaces. The handbook's own sample message, from section 27.2.1.1.2, happens to show every variation of the code on one line, which is more than most real messages manage.
DATA BASED ON 010000Z
VALID 010600Z FOR USE 0500-0900Z. TEMPS NEG ABV 24000
FT 3000 6000 9000 12000 18000 24000 30000 34000 39000
MKC 9900 1709+06 2018+00 2130-06 2242-18 2361-30 247242 258848 750252
Reading across the Kansas City (MKC) line:
- 9900 at 3,000 ft: light and variable. The code means light and variable or a speed below 5 kt. No temperature at this level, for a reason covered below.
- 1709+06 at 6,000 ft: from 170° true at 9 kt, plus 6°C.
- 2018+00 at 9,000 ft: from 200° at 18 kt, 0°C. On a wet day this is the freezing level.
- 2130-06 at 12,000 ft: from 210° at 30 kt, minus 6°C.
- 2361-30 at 24,000 ft: from 230° at 61 kt, minus 30°C. The last level that carries a sign.
- 247242 at 30,000 ft: from 240° at 72 kt, minus 42°C. No sign, because above 24,000 ft the temperature is always negative.
- 750252 at 39,000 ft: from 250° at 102 kt, minus 52°C. Direction digits above 36 are the signal for the next rule.
The altitudes are MSL (AIM 7-1-5), and the identifiers are three letters: the AWC help page says each location is named by its IATA identifier, so you will see MKC and DEN rather than KMKC and KDEN.
Winds over 99 knots use the add-50 rule
When the forecast speed is 100 kt or more, the encoder adds 50 to the direction digits and subtracts 100 from the speed. The handbook's example: 250° at 145 kt is written 7545 (FAA-H-8083-28B, section 27.2.1.1.1). Decode it backwards. If the first two digits are 51 through 86, subtract 50 from them and add 100 to the speed. The AWC help page gives 810550 as 310° (81 minus 50) at 105 kt with a temperature of minus 50°C.
Two edge cases. A direction of 99 with speed 00 is the light-and-variable code, not a 99-knot wind from 990°. And speeds of 200 kt or more are capped: the handbook says they are "indicated as a forecast speed of 199 kt," so 7799 decodes as 270° at 199 kt or greater. You will meet these at jet altitudes, not at 6,500 ft, but the knowledge test likes them.
Why some altitudes are blank near the station
Wind is not forecast within 1,500 ft of a location's elevation, and temperature is not forecast within 2,500 ft of it (FAA-H-8083-28B, section 27.2.1.1). That is why the MKC line has a wind at 3,000 ft but no temperature, and why a high-elevation point shows nothing at all in its first columns.
Suppose you are looking at the Denver (DEN) line. The field sits at 5,434 ft (FAA airport data for KDEN, effective October 1, 2026), so 3,000 ft is below the ground and 6,000 ft is within 1,500 ft of the surface. Both columns are blank. The first wind appears at 9,000 ft, and because 9,000 ft is more than 2,500 ft above the field it carries a temperature too. A blank is not missing data. It is the forecaster telling you that the surface wind in the METAR is the better number there.
Valid time and the "for use" window are different things
Each FB message carries three times: the model run it is based on, the valid time, and the period during which the forecast is meant to be used (FAA-H-8083-28B, section 27.2.1.1.1). In the sample above, DATA BASED ON 010000Z is the 0000 UTC run on the 1st, VALID 010600Z is the single hour the numbers describe, and FOR USE 0500-0900Z is the four-hour window you may apply them to.
| Model run | Available | 6-hour: valid, for use | 12-hour: valid, for use | 24-hour: valid, for use |
|---|---|---|---|---|
| 0000Z | about 0200Z | 0600Z, 0200 to 0900Z | 1200Z, 0900 to 1800Z | 0000Z, 1800 to 0600Z |
| 0600Z | about 0800Z | 1200Z, 0800 to 1500Z | 1800Z, 1500 to 0000Z | 0600Z, 0000 to 1200Z |
| 1200Z | about 1400Z | 1800Z, 1400 to 2100Z | 0000Z, 2100 to 0600Z | 1200Z, 0600 to 1800Z |
| 1800Z | about 2000Z | 0000Z, 2000 to 0300Z | 0600Z, 0300 to 1200Z | 1800Z, 1200 to 0000Z |
The table follows Table 27-2 of FAA-H-8083-28B. Pick the row for the newest run you can get, then the column whose "for use" window contains your en route time, not your departure time. For a 1500Z departure on a three-hour leg, the 1200Z run's 6-hour forecast covers you from takeoff through 2100Z.
How to use winds aloft in a navlog
Your cruise altitude is almost never one of the published levels, so interpolate. Suppose the 6,000 ft entry is 2715+04 and the 9,000 ft entry is 2927-02, and you plan 7,500 ft. Halfway between the levels, the direction is about 280°, the speed about 21 kt, the temperature about plus 1°C. The AIM says a briefer "will interpolate wind directions and speeds between levels and stations as necessary" (AIM 7-1-5), and you should do the same between stations when your route runs between two points 120 miles apart.
Then keep your references straight. The chart gives you a true course and the FB table gives you a true wind, so solve the wind triangle in true: true course plus or minus the wind correction angle is true heading, then apply variation once to get magnetic heading. The other valid method is to convert the wind to magnetic first and work the whole problem in magnetic. Either is fine. Mixing them puts a variation-sized error into your heading, which at Leadville's 9°E is a noticeable drift on a long leg.
The temperature column earns its keep too. It tells you where the freezing level is for icing, and it feeds the true airspeed calculation on your flight computer. A plus 10°C at 9,000 ft on a summer afternoon, where standard is about minus 3°C, means the airplane performs as if it were higher than 9,000 ft: the subject of density altitude.
The magnetic trap at the runway
A METAR, a TAF and a winds aloft forecast all report wind relative to true north (AIM 7-1-28 for METAR wind). The ATIS and the ASOS or AWOS voice broadcast report it relative to magnetic north, because you are about to compare it with a runway number. The Aviation Weather Handbook's wind information table is where that split is written down. The AIM's PIREP element table lists /WV as "direction in degrees magnetic north," so PIREPs are magnetic as well.
A runway number is magnetic. Runway 16 at Leadville (KLXV) is oriented 161° magnetic and 170° true (FAA airport data, effective October 1, 2026). Read 17015KT off the METAR and set it against the runway number and you are comparing a true direction with a magnetic one; in parts of the western US the variation runs well into double digits. For a crosswind calculation, use the voice wind from the ATIS or ASOS, which is already magnetic, or convert the METAR wind yourself.
FlyFren's free METAR and TAF decoder shows the wind direction as the raw report gives it, which is a true direction. Treat that as a planning number. The last word on the wind before you line up is the one you hear on the frequency.
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