| Spatial domain | Global |
| Spatial resolution | 0.25 degrees (~20km) |
| Time domain | Forecasts initialized 2021-05-01 00:00:00 UTC to Present |
| Time resolution | Forecasts initialized every 6 hours |
| Forecast domain | Forecast lead time 0-384 hours (0-16 days) ahead |
| Forecast resolution | Forecast step 0-120 hours: hourly, 123-384 hours: 3 hourly |
STAC (browse) · validation report
The Global Forecast System (GFS) is a National Oceanic and Atmospheric Administration (NOAA) National Centers for Environmental Prediction (NCEP) weather forecast model that generates data for dozens of atmospheric and land-soil variables, including temperatures, winds, precipitation, soil moisture, and atmospheric ozone concentration. The system couples four separate models (atmosphere, ocean model, land/soil model, and sea ice) that work together to depict weather conditions.
This dataset is an archive of past and present GFS forecasts. Forecasts are identified by an initialization time (init_time) denoting the start time of the model run. Each forecast steps forward in time along the lead_time dimension.
| Quickstart (Github) | |
| Quickstart (Colab) | |
| Heating degree days: GFS vs AIFS (Github) | |
| Heating degree days: GFS vs AIFS (Colab) |
import dynamical_catalog # dynamical-catalog>=0.7.0
ds = dynamical_catalog.open("noaa-gfs-forecast")
ds["temperature_2m"].sel(init_time="2025-01-01T00", latitude=0, longitude=0).max().compute()
| min | max | units | |
|---|---|---|---|
| init_time | 2021-05-01T00:00:00Z | Present | seconds since 1970-01-01 |
| latitude | -90 | 90 | degree_north |
| lead_time | 0 | 1382400 | seconds |
| longitude | -180 | 179.75 | degree_east |
Access a variable by its name (the bold identifier, e.g. ds["categorical_freezing_rain_surface"]).
Dimensions: init_time × lead_time × latitude × longitude
| variable | units |
|---|---|
categorical_freezing_rain_surface
Categorical freezing rain (cfrzr)Presence/absence over the previous 1-6 hours, reset every 6-hour forecast step (00Z, 06Z, 12Z, 18Z). 0=no; 1=yes.
|
1 |
categorical_ice_pellets_surface
Categorical ice pellets (cicep)Presence/absence over the previous 1-6 hours, reset every 6-hour forecast step (00Z, 06Z, 12Z, 18Z). 0=no; 1=yes.
|
1 |
categorical_rain_surface
Categorical rain (crain)Presence/absence over the previous 1-6 hours, reset every 6-hour forecast step (00Z, 06Z, 12Z, 18Z). 0=no; 1=yes.
|
1 |
categorical_snow_surface
Categorical snow (csnow)Presence/absence over the previous 1-6 hours, reset every 6-hour forecast step (00Z, 06Z, 12Z, 18Z). 0=no; 1=yes.
|
1 |
downward_long_wave_radiation_flux_surface
Surface downward long-wave radiation flux (sdlwrf)Average over the previous 1-6 hours, reset every 6-hour forecast step (00Z, 06Z, 12Z, 18Z).
|
W m-2 |
downward_short_wave_radiation_flux_surface
Surface downward short-wave radiation flux (sdswrf)Average over the previous 1-6 hours, reset every 6-hour forecast step (00Z, 06Z, 12Z, 18Z).
|
W m-2 |
geopotential_height_cloud_ceiling
Geopotential height (gh)
|
m |
maximum_temperature_2m
Maximum temperature (tmax)Maximum over the previous 1-6 hours, reset every 6-hour forecast step (00Z, 06Z, 12Z, 18Z).
|
degree_Celsius |
minimum_temperature_2m
Minimum temperature (tmin)Minimum over the previous 1-6 hours, reset every 6-hour forecast step (00Z, 06Z, 12Z, 18Z).
|
degree_Celsius |
percent_frozen_precipitation_surface
Percent frozen precipitation (cpofp)
|
percent |
precipitable_water_atmosphere
Precipitable water (pwat)
|
kg m-2 |
precipitation_surface
Precipitation rate (prate)Average precipitation rate since the previous forecast step. Units equivalent to mm/s.
|
kg m-2 s-1 |
pressure_80m
80 metre pressure (80sp)
|
Pa |
pressure_reduced_to_mean_sea_level
Pressure reduced to MSL (prmsl)
|
Pa |
pressure_surface
Surface pressure (sp)
|
Pa |
relative_humidity_2m
2 metre relative humidity (2r)
|
percent |
temperature_2m
2 metre temperature (2t)
|
degree_Celsius |
temperature_80m
80 metre temperature (80t)
|
degree_Celsius |
total_cloud_cover_atmosphere
Total cloud cover (tcc)Average over the previous 1-6 hours, reset every 6-hour forecast step (00Z, 06Z, 12Z, 18Z).
|
percent |
wind_u_100m
100 metre U wind component (100u)
|
m s-1 |
wind_u_10m
10 metre U wind component (10u)
|
m s-1 |
wind_u_80m
80 metre U wind component (80u)
|
m s-1 |
wind_v_100m
100 metre V wind component (100v)
|
m s-1 |
wind_v_10m
10 metre V wind component (10v)
|
m s-1 |
wind_v_80m
80 metre V wind component (80v)
|
m s-1 |
Dataset licensed under CC BY 4.0.
NOAA NWS NCEP GFS data processed by dynamical.org from NOAA Open Data Dissemination archives.
Or NOAA GFS from dynamical.org.
The source grib files this archive is constructed from are provided by NOAA Open Data Dissemination (NODD) and accessed from the AWS Open Data Registry. Operational data is additionally accessed from NOAA NOMADS.
Storage for this dataset is generously provided by Source Cooperative, a Radiant Earth initiative. Icechunk storage generously provided by AWS Open Data.
This dataset is stored in Zarr format, which splits each variable into a grid of chunks — the smallest unit read from storage. Chunks are grouped into larger shards (the objects actually written to storage), which keeps the object count manageable for long-archive datasets. When possible, aligning your reads with this dataset's chunk grid can significantly improve data access speed.
The element count and coordinate span of this dataset:
| dimension | chunk | shard |
|---|---|---|
| init_time | 1 (6 hours) | 1 (6 hours) |
| lead_time | 105 (~105 hours) | 210 (385 hours) |
| latitude | 121 (30.25°) | 726 (180.25°) |
| longitude | 121 (30.25°) | 726 (181.5°) |
| uncompressed | 5.9 MiB | 422.2 MiB |
The data values in this dataset have been rounded in their binary floating point representation to improve compression. See Klöwer et al. 2021 for more information on this approach. The exact number of rounded bits can be found in our reformatting code.