Forecast profiles from Open-Meteo: GFS, HRRR, ECMWF, ICON and GEM for any US airport, or GFS and ECMWF anywhere on the globe (the Globe map). RRFS, NOAA’s new regional model that replaces the NAM, is not on Open-Meteo: on the hosted site it loads from the Iowa State BUFKIT archive with the model’s full levels, for the chosen airport or, when that has no file, the nearest site that does (whole run, 84 hours). Latest loads the most recent complete run of each model chosen, in one request; choose a run time (day/hour Z) instead for a specific run and its full length, and + to compare another run of the same model (up to three). HRRR keeps the last 12 runs, GEM the last 6, the others the last 8.
Accepts about 2,550 US ICAO codes; a 3-letter FAA code also works (BTV finds KBTV). 25 pressure levels from 1000 to 100 hPa plus the 2 m and 10 m surface values. Specific runs come from Open-Meteo's single-runs service, archived since April 2026. The run list allows for the usual delay before a run is published; if a request reports no data, choose an earlier run. Open-Meteo is free for non-commercial use.
Full model soundings from the Iowa State BUFKIT archive, including surface precipitation. Covers selected airports.
Observed radiosonde soundings from the Iowa Environmental Mesonet, launched at 00Z and 12Z.
Open-Meteo, Iowa State (BUFKIT, RAOB), Penn State BUFKIT and University of Wyoming links.
Observed soundings: on the University of Wyoming sounding page choose Text: List, then copy the whole page. A page holding several soundings or stations is split automatically.
BUFKIT: open or drop .buf files. The model is read from the file name (hrrr_kalb.buf becomes HRRR), and every forecast hour is loaded.
Tables: CSV, tab or space-separated, with a header naming pressure, height, temperature, dewpoint, wind direction and speed.
New data joins the comparison. Data for the same model and station merges into one entry.
Each strip summarizes one screen for the analyzed sounding; tap a headline's Details to open it. Ceiling and visibility are always shown, colored by flight category (VFR green, MVFR blue, IFR red, LIFR magenta), from the model cloud ceiling and the model visibility where available, otherwise a humidity-based estimate; wind gusts are marginal from 30 kt and unfavorable from 45 kt; snowfall uses the Kuchera ratio; thunderstorms need at least 250 J/kg of MU CAPE and are graded by the Severe tab's weighted table. When other model runs for the same place are loaded (within 50 km), the numbers in each cell count how many reach the moderate level (IFR for ceiling and visibility, marginal for gusts, low for precipitation, snow and thunderstorms) at that hour. On narrow screens the count is a bar at the foot of the cell: darker means more models agree. Tap the chart to move every screen to that hour.
The category uses the ceiling and, where the model provides it, visibility. The strip shows the next 24 hours by flight category, with a dot for each hour of precipitation colored by type; the line below lists the lowest category and each precipitation type with their first and last hours. Alerts use your rules from the Alerts screen.
Hover to read the cloud layers, sky condition and humidity at any time and height; click or drag to set the valid time on every screen. "Distance from the cloud threshold" shades blue where relative humidity meets the height-dependent cloud threshold and amber where it is within 15% of it, which shows layers that are close to forming or dissipating.
Past hours are shaded. There, the ensemble values come from the runs Open-Meteo kept for those hours (short-range forecasts, not analyses), and the METARs from the station show how they did. The table scores the ensemble against them: how often the observation fell inside the members' 10–90% range, the median's error, and for yes/no events the average chance given when the event happened and when it did not, with the Brier score (0 is perfect, lower is better). Observations need the hosted site.
Each member is analyzed with the same cloud method as the main sounding. Probabilities are the share of members meeting the condition. Ensemble data comes on fewer pressure levels than the deterministic models (1000, 925, 850 and 700 hPa near the ground), so member ceilings are approximate: read them for trends and confidence rather than exact heights. Select a time on the chart to set the valid time on every screen; enable Ensemble members under Layers on the Sounding tab to see every member's temperature and dewpoint.
Observations are decoded from the METARs: clouds, temperature and dewpoint, wind and gusts, weather and one-hour precipitation, visibility and sea-level pressure. Model values come from each loaded model for this station; model gusts are the strongest wind in the mixed layer, and visibility is available from Open-Meteo for some models (HRRR and GFS among them) but not from BUFKIT pressure-level data. The cloud view shows each report's layers with its ceiling category, the full category (ceiling and visibility) in brackets when it differs. A model hour is scored when a METAR falls within 35 minutes of it. Runs start at their first forecast hour, so earlier runs already include past hours to score; choose one in Add data.
Scores accumulate with each forecast check; each model run and forecast hour is counted once. Clouds are compared by height: ceilings at or above 10,000 ft, or no ceiling, count as one high category, so a forecast of 12,000 ft against 16,000 ft observed is a match. Below 10,000 ft a ceiling matches when the model is within 30% (or 300 ft) of the observed ceiling and in the same flight category, and is close within 50%; errors are taken with anything higher counted as 10,000 ft, so OVC060 against OVC300 is a 4,000 ft error. Layers compare where scattered or more cloud sits below 10,000 ft (below 3,000 ft and 3,000–10,000 ft). In the hourly view ✓ means the ceiling and layers match, ≈ that one is close or the layers differ, and ✗ that the ceiling misses. Flight-category scores give the share of hours in the same category. Ceiling and base errors cover hours when either side is below 10,000 ft; errors are mean absolute errors, and bias is model minus observed (positive values indicate the model was too high). Occurrence accuracy is the share of hours with precipitation correctly forecast as present or absent; probability of detection is the share of observed precipitation hours the model forecast; the false alarm ratio is the share of forecast precipitation hours with none observed. Hazards compare the app's own calls with the METAR: freezing rain or drizzle when the freezing-precipitation diagnosis is light or stronger; fog when the fog potential is at least 50% or model visibility is below 5/8 SM, against visibility below 5/8 SM or fog in the report; thunder when most-unstable CAPE reaches 250 J/kg, against thunder in the report; and the gust estimate against reported gusts. Detected is the share of observed hours the app called, false alarms the share of called hours with nothing reported. Time of day uses this device's clock. Scores are stored in this browser.
Pilot reports (PIREPs) of icing or turbulence within about 100 miles of the station over the last 24 hours, from aviationweather.gov. Each report is compared with the strongest icing or turbulence layer the app diagnosed in the model column for this station, at the reported altitude or layer (feet above sea level) with 1,500 ft either side, from the forecast hour nearest the report (within 90 minutes). A match (✓) means both the report and the model are at light or stronger, or both below light. Reports describe one aircraft at one place and time, and the model column is a single point, so a single miss says little; the tally is more useful over several reports. Hover a row to read the report.
Compares each loaded model with the observed 00Z and 12Z soundings at the selected upper-air site, for model points within about 120 km. The table shows the most recent sounding: model minus observed temperature and wind speed at each level, and the wind direction difference where the observed wind is at least 10 kt. Each comparison is added to the running score, which lists temperature RMSE and bias and mean wind errors by level.
Surface observations are the latest METARs from aviationweather.gov, refreshed every 15 minutes while this screen is open; plots are thinned to avoid overlap, so zoom in to see more stations, and tap a station for its report and an HRRR sounding. Upper-air plots are the 00Z and 12Z balloon soundings at one level from the Iowa Environmental Mesonet. Station data are analyzed with a two-pass Barnes scheme (Koch et al. 1983) whose smoothing follows the station spacing, masked where no station is near; sea-level pressure comes from the SLP remark (or the altimeter below 150 m) and 3-hour change from the 5appp remark or the altimeter change. Model maps use a regular grid of Open-Meteo points (0.25° to 2°, chosen under Grid), so they are smoother than the native model; vorticity is geostrophic, from the 500 hPa heights. Radar is the NEXRAD base-reflectivity mosaic and satellite is GOES-East, both from the Iowa Environmental Mesonet and refreshed every 5 minutes. Coastlines, lakes and borders are simplified outlines drawn by the app; city names are a fixed list thinned to avoid overlap. Warnings come from the NWS alerts service (zone-based alerts are drawn on their forecast zones or counties), the convective outlook from the Storm Prediction Center and the excessive rainfall outlook from the Weather Prediction Center. Tap anywhere for the hazards at that point and a model sounding there. Drawn fronts, labels and zones are kept in this browser for each map type, and zones appear in the legend of a saved image.
Heading
Nothing here is forecast for you: every group comes from what you enter. Lines are kept in time order, each line's remarks follow its last group, and TX/TN and any limited-duty remark go at the end of the final line. Your draft is kept on this device.
The route is sampled at up to 40 points along great circles between the airports; each point is a full model sounding analyzed with the same cloud, icing and turbulence methods as the rest of the app. Heights are above mean sea level (MSL) or above the ground at each point (AGL). Red hatching marks deep convective cloud, towering cumulus and, more densely, cumulonimbus, where a surface or mixed-layer parcel reaches its free convection level. Blue hatching marks icing, shaded by intensity: pale blue, trace or light, medium blue, moderate, and deep blue with heavier lines, severe. Dotted outlines mark moderate or greater turbulence, colored by intensity. Select items in the key to show or hide them. Hover or tap for details at any point and height.
Icing is checked every 100 m between 0 and −30 °C in cloud or where the −8D test is met; the score falls with temperature, rises with convective cloud, near-saturation and precipitation, and stratiform cloud alone tops out at moderate. Freezing rain or drizzle below a melting layer is marked severe clear icing. In the profile, red is temperature, green dewpoint and the dashed blue line −8 × the dewpoint depression: icing is favoured where it lies right of the temperature. Tap the chart to move every screen to that hour.
Turbulence combines vertical wind shear per 1,000 ft (a Richardson number below 0.25 adds a category), strong winds in the boundary layer (mechanical), convective clouds and deep superadiabatic mixing (thermal). Low-level wind shear uses 10 kt per 100 ft in a layer at least 200 ft deep, or 30 kt in total, within 2,000 ft of the ground. In the profile, black is wind speed and orange the shear per 1,000 ft. Tap the chart to move every screen to that hour.
Each forecast hour is scored with the predictor table below. 33% is a low, 50% a moderate and 66% a high potential. Estimated visibility is not a model forecast: it comes from the 2 m relative humidity alone, using the fog-observation fit of Gultepe et al. (2009), Vis = −41.5 ln(RH) + 192.3 km, shown in statute miles from ¼ to 10. It does not account for precipitation, smoke or haze. Shading marks LIFR (under 1 SM), IFR (1–3) and MVFR (3–5). Tap the chart to move every screen to that hour.
Each predictor scores Low, Mid or High against its mid range and counts by its weight (0 turns it off). A two-value range rises toward the second value; a four-value range is best between the middle two. Defaults are tuned for the eastern US; adjust them for local sites. Changes are stored in this browser.
Precipitation type comes from the top-down and Bourgouin methods run on every forecast hour (see Tools → Education → Clouds, precipitation and visibility). Freezing rain needs snow to melt in a warm layer aloft and then fall through a cold layer too shallow or too warm to refreeze it. Freezing drizzle needs no warm layer: it forms in low clouds whose tops are warmer than about −10 °C, where little or no ice is made, over subfreezing ground. Without ice, drops grow only by colliding, so a cloud under about 6,500 ft deep gives drizzle, one 10,000 ft or deeper (or a rate of 2.5 mm/h or more) gives rain-size drops, and in between the rate decides (1 mm/h). Likely means both methods give freezing rain or drizzle with precipitation falling; possible means one method does, or a mix; watch marks hours near freezing with a warm nose aloft or a warm-topped low cloud but no precipitation. Ice accumulation is an estimate from the Freezing Rain Accumulation Model (FRAM; Sanders and Barjenbruch 2016): an ice-to-liquid ratio from the precipitation rate, surface wet-bulb temperature and wind, applied to the model’s hourly precipitation; radial ice on wires and branches is about 0.39 times the flat ice. It depends entirely on the model’s precipitation and type. Tap the chart to move every screen to that hour.
Red line: temperature; green dashed: wet-bulb temperature. Red shading is above freezing (melting), blue shading below freezing (refreezing); grey bands are cloud layers. Brackets on the right give the height and peak temperature of each above-freezing layer and of the cold layer at the ground; dotted lines mark the layer boundaries. The dashed line marks −10 °C: cloud tops warmer than that seldom make ice.
The crosshair signature is strong upward motion inside the −12 to −18 °C dendritic growth zone while it is saturated (85% or more relative humidity over ice): the setup for the fastest snow growth, banding and high snow ratios. Weak means at least 5 µb/s of lift, moderate 8, strong 15, with the growth-zone lift at least 70% of the column's strongest. The Cobb ratio weights the snow ratio of each saturated, rising level by the square of its lift, after Cobb & Waldstreicher (2005), and is cut when a melting layer lies within 1.5 km of the ground; Kuchera uses only the warmest temperature below 500 hPa. Lift comes from BUFKIT omega or Open-Meteo vertical velocity; select Cobb as the snow ratio on the meteogram to apply it to snowfall totals.
Dots trace the analyzed sounding through time; the large dot is the selected hour, other colors are other shown soundings. Dividing lines at 1300 m and 1540 m are the standard rain–snow guides and may be adjusted with local experience.
Each forecast hour of the analyzed sounding is evaluated with the lake temperature entered above. A parcel starts at the lake surface with the lake temperature and air moistened by the water; its LCL and equilibrium level bound the lake cloud, and its buoyancy is the lake-induced CAPE. The capping inversion is the lowest layer between 300 m and 6 km where temperature stops falling with height. Fetch compares the boundary-layer (0–1.5 km) mean wind with the lake's long axis; long fetches within about 20° of the axis produce the most intense, persistent bands. The potential combines the lake–850 hPa temperature difference, directional shear, cloud depth, wind speed, 850–700 hPa humidity and fetch, after Niziol (1987) and Niziol et al. (1995); a lake–850 hPa difference under 10 °C, or less than 30 km of water upwind of the station, is always unfavorable. For the five Great Lakes the lake temperature is filled in automatically with the latest lake-wide average from NOAA GLERL's GLSEA analysis; type a value to override it. Tap the chart to move every screen to that hour.
The fetch is traced upwind from the chosen station (or the analyzed sounding's location) along the boundary-layer (0–1.5 km) mean wind for up to 500 km, and the distance over water is measured. Water counts when it begins within 60 km of the station, and a crossing continues into another lake only across 30 km of land or less. The band footprint starts where the station's fetch comes ashore and is drawn only when at least 10 km of water lies upwind of the station; it fans out over each wind direction between the surface-based steering layer's extremes (0.3 km to the lake cloud top, at most 3 km), drawn inland from where the main band comes ashore, extending about 3.5 km per knot of boundary-layer wind (50–180 km): a tight band with little directional shear, a broad area with more. Lake outlines are simplified, so fetch is approximate near shorelines and islands.
Set each weight from 0 (ignored) to 10, and the weak / moderate / strong limits for your area. The strongest contributors appear in the box at the top right of the skew-T. Changes are stored in this browser.
Each forecast hour is evaluated with the lake temperature above. Storms are traced upwind from the station along the 0–6 km mean wind, and the distance over water sets how deep a stable marine layer grows: h ≈ 0.014 U √(x / g′), with U the large-scale wind (here the 0–1.5 km mean wind), x the distance over water and g′ = g Δθ / θ from the air–lake potential-temperature difference (stable internal boundary layer, Garratt 1987; see also Mulhearn 1981 and the Garratt 1990 review), capped at about 2,000 ft. The marine layer is cooled to the lake temperature at the surface, with dewpoints no higher than the temperature, and blends into the original profile at its top. The mixed-layer parcel (lowest 100 hPa, a storm’s inflow) is compared inland and over the lake: the shadow is strong when, with the air at least 6 °C warmer than the lake, the lake leaves under 35% of the inland CAPE, adds more than 100 J/kg of CIN, or leaves air touching the water unable to rise freely while removing 40% of the CAPE; moderate when it removes 35% of the CAPE, adds 40 J/kg of CIN or stops air at the water from rising freely; weak otherwise; none when there is under 250 J/kg of CAPE inland, the lake is within 2 °C of the air, or the storms do not cross the lake. Between about 10 and 19 local solar time, a lake breeze is likely when land is 5 °C or more warmer than the lake with a 0–1.5 km wind of 10 kt or less, possible at 3 °C and 15 kt (after Laird et al. 2001). When neither a station nor the sounding’s location is known, a 50 km crossing is assumed. Tap the chart to move every screen to that hour.
Select a preset, enter pressures, or enable Layer tool on the Sounding tab and drag across the diagram.
| Parameter | Threshold | Now |
|---|
Alerts check the analyzed sounding at the selected time and show a banner at the top of every screen. Thresholds use the units on screen. Rules are stored in this browser. To be notified when the app is closed, use Background notifications.